From 6c69782bdf980ce8f28663ea5faabee317e3e3c3 Mon Sep 17 00:00:00 2001 From: Filipe Fernandes Date: Wed, 18 May 2022 11:31:07 -0300 Subject: [PATCH 01/10] remove travis-ci --- .travis.yml | 99 ----------------------------------------------------- 1 file changed, 99 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d7435ab..0000000 --- a/.travis.yml +++ /dev/null @@ -1,99 +0,0 @@ -dist: xenial - -language: python - -sudo: false - -services: - - xvfb - -env: - global: - - secure: "Tlgd7sOn9XoITQ69wWen9XLLzVqz8IXKtA4B+KXaRP6vTliP6XPrEDldOrOkNYwQFE7P5p57H3irp2fMLIsvxd2JEuN17i+6flB5JrBX+YmVV6tQ/DdDHUUc55CmO1bJefNpWK3kc/Z3TXdKA1k881sTGe/0BHTHV73CYj9ARrs=" - -matrix: - fast_finish: true - include: - - name: "python-3.6" - env: PY=3.6 - - name: "python-3.7" - env: PY=3.7 - - name: "python-3.8" - env: PY=3.8 - - name: "tarball" - env: PY=3 - - name: "docs" - env: PY=3 - - name: "doctest" - env: PY=3 - -before_install: - # Install micromamba and create TEST env. - - | - wget -qO- https://micromamba.snakepit.net/api/micromamba/linux-64/latest | tar -xvj bin/micromamba --strip-components=1 - ./micromamba shell init -s bash -p ~/micromamba - export MAMBA_ROOT_PREFIX=~/micromamba - export MAMBA_EXE=$(pwd)/micromamba - . ${MAMBA_ROOT_PREFIX}/etc/profile.d/mamba.sh - - echo "micromamba version $(micromamba --version)" - micromamba create --yes --name TEST python=$PY pip --file requirements.txt --file requirements-dev.txt --channel conda-forge - micromamba activate TEST - -install: - - pip install -e . --no-deps --force-reinstall - -script: - - | - if [[ $TRAVIS_JOB_NAME == python-* ]]; then - cp -r tests/ /tmp - pushd /tmp - pytest -n 2 -rxs --cov=ctd tests - popd - fi - - - if [[ $TRAVIS_JOB_NAME == "doctest" ]]; then - pytest -s -rxs --doctest-modules -vv ctd ; - fi - - - - if [[ $TRAVIS_JOB_NAME == 'tarball' ]]; then - python setup.py --version ; - pip wheel . -w dist --no-deps ; - check-manifest --verbose ; - twine check dist/* ; - fi - - - | - if [[ $TRAVIS_JOB_NAME == 'docs' ]]; then - set -e - travis_wait jupyter nbconvert --to notebook --execute notebooks/quick_intro.ipynb --output=quick_intro-output.ipynb - mv notebooks/quick_intro-output.ipynb docs/source/ - pushd docs - make clean html linkcheck - popd - if [[ -z "$TRAVIS_TAG" ]]; then - python -m doctr deploy --build-tags --key-path github_deploy_key_pyoceans_python_ctd.enc --built-docs docs/build/html/ dev - else - python -m doctr deploy --build-tags --key-path github_deploy_key_pyoceans_python_ctd.enc --built-docs docs/build/html/ "version-$TRAVIS_TAG" - python -m doctr deploy --build-tags --key-path github_deploy_key_pyoceans_python_ctd.enc --built-docs docs/build/html/ . - fi - fi - -doctr: - require-master: true - sync: false - -deploy: - skip_cleanup: true - provider: pypi - user: "__token__" - password: - secure: "MdQV2uZYrHZ8NAC3jSsEU9BVaYd5OCEvu5+NhglkBDUSLcrmr+dJni0c0BoMCh1D026ynNt1joVxk2euo1Rpbqa1jiMr5ADAvh1VdLjiqdAnr9TVy9dFVk85/qscnP3LWZ1DCiWorujFbSyObsU+grNwjxjvV+7NW0rXrpHNI+8=" - distributions: sdist bdist_wheel - upload_docs: false - on: - repo: pyoceans/python-ctd - tags: true - all_branches: master - condition: '$TRAVIS_JOB_NAME == "tarball"' From 78204e8e9931151490be5e79f08a8eb07c484db0 Mon Sep 17 00:00:00 2001 From: Filipe Fernandes Date: Wed, 18 May 2022 11:31:14 -0300 Subject: [PATCH 02/10] remove pip tests --- .github/workflows/pip.yml | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 .github/workflows/pip.yml diff --git a/.github/workflows/pip.yml b/.github/workflows/pip.yml deleted file mode 100644 index 48bb600..0000000 --- a/.github/workflows/pip.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Pip - -on: - pull_request: - push: - branches: [master] - -jobs: - run: - runs-on: ${{ matrix.os }} - strategy: - matrix: - python-version: ["3.7", "3.8", "3.9"] - os: [windows-latest, ubuntu-latest, macos-latest] - - steps: - - uses: actions/checkout@v2 - - - name: Setup python - uses: actions/setup-python@v2 - - - name: Python ${{ matrix.python-version }} - run: | - pip install -r requirements.txt -r requirements-dev.txt - pip install -e . --no-deps --force-reinstall - - - name: pip-tests - run: | - pytest -rxs tests From 44b6657730380abfba22d53cb94a8b12cad43aeb Mon Sep 17 00:00:00 2001 From: Filipe Fernandes Date: Wed, 18 May 2022 11:31:32 -0300 Subject: [PATCH 03/10] rename and update main tests --- .github/workflows/test-conda.yml | 38 -------------------------------- .github/workflows/tests.yml | 36 ++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 38 deletions(-) delete mode 100644 .github/workflows/test-conda.yml create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/test-conda.yml b/.github/workflows/test-conda.yml deleted file mode 100644 index 5fa1a20..0000000 --- a/.github/workflows/test-conda.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Test-Conda - -on: - pull_request: - push: - branches: [master] - -jobs: - run: - runs-on: ${{ matrix.os }} - strategy: - matrix: - python-version: ["3.7", "3.8", "3.9"] - os: [windows-latest, ubuntu-latest, macos-latest] - - steps: - - uses: actions/checkout@v2 - - - name: Setup Conda - uses: s-weigand/setup-conda@v1 - with: - activate-conda: false - conda-channels: conda-forge - - - name: Python ${{ matrix.python-version }} - shell: bash -l {0} - run: | - conda create --name TEST python=${{ matrix.python-version }} --file requirements.txt --file requirements-dev.txt - source activate TEST - pip install -e . --no-deps --force-reinstall - conda info --all - conda list - - - name: Tests - shell: bash -l {0} - run: | - source activate TEST - pytest -rxs tests diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..f4a3336 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,36 @@ +name: Tests + +on: + pull_request: + push: + branches: [main] + +jobs: + run: + runs-on: ${{ matrix.os }} + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10"] + os: [windows-latest, ubuntu-latest, macos-latest] + fail-fast: false + + steps: + - uses: actions/checkout@v3 + + - name: Setup Micromamba + uses: mamba-org/provision-with-micromamba@main + with: + environment-file: false + + - name: Python ${{ matrix.python-version }} + shell: bash -l {0} + run: | + micromamba create --name TEST python=${{ matrix.python-version }} --file requirements.txt --file requirements-dev.txt --channel conda-forge + micromamba activate TEST + python -m pip install -e . --no-deps --force-reinstall + + - name: Tests + shell: bash -l {0} + run: | + micromamba activate TEST + python -m pytest -rxs tests From 0eaebf31e6e0ecbf270c0883078bfe9b90fc3017 Mon Sep 17 00:00:00 2001 From: Filipe Fernandes Date: Wed, 18 May 2022 12:02:17 -0300 Subject: [PATCH 04/10] update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 6abc136..9dbacdb 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ build/ ctd/_version.py dist/ +*-output.ipynb +*.pyc From 83773b968d15c0b7f3328d429a411c8350850c30 Mon Sep 17 00:00:00 2001 From: Filipe Fernandes Date: Wed, 18 May 2022 12:02:28 -0300 Subject: [PATCH 05/10] fix docstring --- ctd/processing.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ctd/processing.py b/ctd/processing.py index 4d9ff51..6582d5e 100644 --- a/ctd/processing.py +++ b/ctd/processing.py @@ -255,10 +255,8 @@ def movingaverage(df, window_size=48): """ Moving average on a data frame or series. - Inputs - ------ - windows_size : integer - Size of the window. + Inputs: + windows_size : integer """ From 08a7bac2bf37ed43706b1b768fabe0545092786f Mon Sep 17 00:00:00 2001 From: Filipe Fernandes Date: Wed, 18 May 2022 12:02:42 -0300 Subject: [PATCH 06/10] fix notebook name --- docs/source/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index 24eb5b9..44e8d42 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -7,7 +7,7 @@ Load and pre-process CTD/XBT casts as pandas DataFrames. .. toctree:: :maxdepth: 3 - quick_intro.ipynb + quick_intro-output.ipynb ctd Indices and tables From c92db1a1becef4a8179a816d3d7f16b0e5a1c51d Mon Sep 17 00:00:00 2001 From: Filipe Fernandes Date: Wed, 18 May 2022 12:02:58 -0300 Subject: [PATCH 07/10] update data URL and pandas deprecation --- notebooks/quick_intro.ipynb | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/notebooks/quick_intro.ipynb b/notebooks/quick_intro.ipynb index e1e2241..6d060b3 100644 --- a/notebooks/quick_intro.ipynb +++ b/notebooks/quick_intro.ipynb @@ -12,7 +12,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "scrolled": false + }, "outputs": [], "source": [ "import io\n", @@ -32,7 +34,7 @@ " Path(\"CTD-spiked-unfiltered.cnv.bz2\").write_bytes(data.read())\n", "\n", "\n", - "url = \"https://github.com/pyoceans/python-ctd/raw/master/tests/data/CTD-spiked-unfiltered.cnv.bz2\"\n", + "url = \"https://github.com/pyoceans/python-ctd/raw/main/tests/data/CTD-spiked-unfiltered.cnv.bz2\"\n", "download_demo_file(url)" ] }, @@ -117,7 +119,7 @@ "ax1.grid(False)\n", "\n", "ax0.legend(loc=\"lower left\")\n", - "ax1.legend(loc=\"lower right\")" + "ax1.legend(loc=\"lower right\");" ] }, { @@ -173,7 +175,7 @@ "ax.plot(down.index, label=\"unfiltered\")\n", "ax.plot(down.lp_filter().index, label=\"filtered\")\n", "ax.axis([20870, 20930, 557.5, 559])\n", - "fig.legend()" + "fig.legend();" ] }, { @@ -234,11 +236,11 @@ "\n", "p = proc.index\n", "\n", - "SP = gsw.SP_from_C(proc[\"c0S/m\"] * 10.0, proc[\"t090C\"], p)\n", + "SP = gsw.SP_from_C(proc[\"c0S/m\"].to_numpy() * 10.0, proc[\"t090C\"].to_numpy(), p)\n", "SA = gsw.SA_from_SP(SP, p, lon, lat)\n", "SR = gsw.SR_from_SP(SP)\n", "\n", - "CT = gsw.CT_from_t(SA, proc[\"t090C\"].values, p)\n", + "CT = gsw.CT_from_t(SA, proc[\"t090C\"].to_numpy(), p)\n", "z = -gsw.z_from_p(p, lat)\n", "sigma0_CT = gsw.sigma0(SA, CT)\n", "\n", @@ -272,7 +274,7 @@ "ax.set_ylabel(\"Pressure (dbar)\")\n", "ax.grid(True)\n", "ax.legend()\n", - "ax.set_title(\"Salinities\")" + "ax.set_title(\"Salinities\");" ] }, { @@ -344,7 +346,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -358,7 +360,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.4" } }, "nbformat": 4, From bb5d6dd80e49448437ed93cbcddcb88d9f061815 Mon Sep 17 00:00:00 2001 From: Filipe Fernandes Date: Wed, 18 May 2022 12:12:15 -0300 Subject: [PATCH 08/10] build docs --- .github/workflows/deploy-docs.yml | 54 +++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/deploy-docs.yml diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml new file mode 100644 index 0000000..bad03bc --- /dev/null +++ b/.github/workflows/deploy-docs.yml @@ -0,0 +1,54 @@ +name: Documentation + +on: + pull_request: + push: + branches: + - main + release: + types: + - published + +jobs: + build-docs: + runs-on: ubuntu-latest + + steps: + - name: checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Micromamba + uses: mamba-org/provision-with-micromamba@main + with: + environment-file: false + + - name: Build environment + shell: bash -l {0} + run: | + micromamba create --name TEST python=3 --file requirements.txt --file requirements-dev.txt --channel conda-forge + micromamba activate TEST + python -m pip install -e . --no-deps --force-reinstall + + - name: Get the version + id: get_version + run: echo ::set-output name=VERSION::$(python setup.py --version) + + - name: Build documentation + shell: bash -l {0} + run: | + set -e + micromamba activate TEST + jupyter nbconvert --to notebook --execute notebooks/quick_intro.ipynb --output=quick_intro-output.ipynb + mv notebooks/*output.ipynb docs/source/ + pushd docs + make clean html linkcheck + popd + + - name: Deploy + if: github.event_name == 'release' || github.event_name == 'push' + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: docs/build/html From ee5809935c034795bd738df45dca777b02c54762 Mon Sep 17 00:00:00 2001 From: Filipe Fernandes Date: Wed, 18 May 2022 12:19:57 -0300 Subject: [PATCH 09/10] fix deprecation and update metadata --- setup.cfg | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/setup.cfg b/setup.cfg index 1cf732c..d4ce1de 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,13 +1,13 @@ [metadata] name = ctd -description = Python interface for ERDDAP +description = Tools to load hydrographic data into pandas DataFrame author = Filipe Fernandes author_email = ocefpaf@gmail.com url = https://github.com/pyoceans/python-ctd long_description_content_type = text/markdown long_description = file: README.md license = BSD-3-Clause -license_file = LICENSE.txt +license_files = LICENSE.txt classifiers = Development Status :: 5 - Production/Stable Intended Audience :: Science/Research @@ -15,10 +15,6 @@ classifiers = License :: OSI Approved :: BSD License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 Topic :: Scientific/Engineering [options] @@ -42,7 +38,6 @@ ignore = .coveragerc docs docs/* - *.enc notebooks notebooks/* tests From 4eed1bfb920dae045a30f4db4f1f173cb82bd9e6 Mon Sep 17 00:00:00 2001 From: Filipe Fernandes Date: Wed, 18 May 2022 12:20:10 -0300 Subject: [PATCH 10/10] no longer needed --- github_deploy_key_pyoceans_python_ctd.enc | 1 - 1 file changed, 1 deletion(-) delete mode 100644 github_deploy_key_pyoceans_python_ctd.enc diff --git a/github_deploy_key_pyoceans_python_ctd.enc b/github_deploy_key_pyoceans_python_ctd.enc deleted file mode 100644 index 468c235..0000000 --- a/github_deploy_key_pyoceans_python_ctd.enc +++ /dev/null @@ -1 +0,0 @@ -gAAAAABcksnrznRahez_EoXZFuM--QLw571JcTmBChG3FHtIT58M9kbyywC55snxWenuEYm2my2Z_9er_DXYRPcCcCJtQzx0jwM-4NkXgcwz5Pq-zolDbRQOK6mtAs7VAQgznj_R34EZLPwdELDbK2xZ0AhLdGCh5vuMkisHGLUrSCPQ3DcCkxuqWEIaADREj5-hVy88lzZ9atzRvCcKm-bdabHOZBCEUKSssQvC99w1zZgYlCfs6Ennqve6QE32rtRS962PiXGnVw1ez-QX2vIb7ZmhZUcOXIos6n_6fUFKbgU1q0ed6N9tY9gEwSoXtbTi1ANhgzneg5bxI1BaC3QgJ90F7VBl2dWwJF_-N1ezX_FwYMGTYrx_tLS0tybQd-M_EEBM_nwWH6MaOZMKV-37rP9ZCTjHBz6SAIadGdsDfHqAjHyXlh10YhWbz7hWHWYySmvca0TYJ6TwD5PiKRf6lgY0N3Ql1OHifd3_tG1f1Pi7BPOFzQYraslspV814QRGooEYF9jMB4OYkODv-OVsfAvBWPlAgjBcl-P5MC1NjAHmZqyIKuBTutZEhgl02b0LNmCgDUMW5DRRfsMf7-BL-FUEoyxRMC2cPr5gW7VYrGet9f7kAIK0St-_4DtZhOM-FXtHH9HK9i29oX7WvYWOatVcqzj722bVIaZ32OUByaSGPQlveWg2zIYClpSpwN5TGJZwLxMnpaK-ZkigC-xJcGDyBsYzDdHoKt_q1iH0pD9GYxT_7yselI2skVi6tKws4pltwsCv-NBEpwTY0deiCM4RWAn0ZQ7fegz3NZpam-Z9Z2v7iDKcnNcLlst7M237LUuo2EwRv695XTpS36CIjA0MlGujrjFKx6SWdMIZHmkxPdh97-cLwVIi6rLOej-MUKcIS2-aq1LSYrn_YwYHEKtDxVPU562Wgzxrwjo64MvvVw5zi6wEZwZjGDFPm5bCivfsF_bcVZqvBxVWSbmBGLgbtOncIt_SQf1jN7MmqQnVtSSEfcgHPV4lXGvqCsFf_3bUfxUjJvE9tfNeeO4h2IYiJcKb1m42Yz4OMNebsBYMRL5RTx8dsnCAUxNl-62fJcqiklx4poLqW4eN0Ky-aYperJbARWhPqPEb26T76KuXE-xXVUFCFUsl2orShoj7KnJCJvS1cHhQNoOISwO8N2iPlteHcOs_NrObyDJ6GkbvKwYHjtdZSfq-4UsIayC0mGHMIerwxQ5ZsIbnjW3_Jz3FBxkNIqU-U2NfZ6QEYGCxgYSu7dMeLM2DO0dcEpRTeVqbVqVsdv5O68KnOzkr_KtpcUcpBTGIRy2ziy6CqSQ2zIQZMpDbFGEob13AO90A8Zm3JPfAommo-zg8XnPv28qv-33hIDEseuaDJq0bLeFlj4IdBtaVzq_l9CUIFZHCsXu2PFQ0xfrPrcu0OQ84gNwFx_gR5GhFK1i46pwcvOCUqiqzMIC7FO-AhMJKqn5dCWoZYloHdpGa7kYz2-Ix4aCelXPVLaC1qQoPZwGO9E6oE7n53ZeinTj77sNY0qZyxGYdsL4GhLW-EO_BwOS8oMehb7sIXItw-dWjb-ohp5HDTOwH0DqEt3T-X6C3o6GeraMdAzGXnxKB0et0Kvpq65bPAcW0yA8jkrjxoYUIW-wnWqo5SMCzpHE4auEj5Ral7-4WID66jkHVhiz7i8qv5YW4foctwPEuDBxeXN_I-tMSNmmkwOCeDzNHA8wx4u9qVJTvhZC0c7MeIqGVC04jIhyjMabrusKCjEjokjtiDa5znICgC4N-lD6xORUhPSqEW5T-IfQg8loAYENpMoTD5V6LGbnu7aKwkbFCTI48w79iRSZjk0RMVhSFWZud1XbJpVB-F7Nr4ItGmNgmU4BSTJgU5bFmQa14YET2xaVBbDBpmqhhNpHvL0wnBKLFMbNJcUyi8hHE64X7rULLIycM6YQdEVlmhT_hJCfTDjg60QSsyY-om-N5H9yUeq0-RceNNdWvij81xghkCBkZnPoT7YxcynAAOdVRHb7HsUMkmit3NcWDum7CE7NNm5-8OrK-V3u4TpvJXORcec7NjHpe8ixUN1S2_ATme5lQz49-TQaDVDETS8EiLa2r2FleIrdKVTAFtF0CspA-_IKarPRFBrc2EUX6nUlxqNdmLeRbtnavVQYmT-nL-cFjtYea5cPSIIj5jB5UWW-gzGv2If45byj10-wxhsoqe6fADs9t16ianPC6BLAANWTyi5oW75FSI4DVmFvDQ98Znmhp0NTS7DzRFDXmrqs-Q1zd52wyOs3tA2zkDRZgcXg6lt0tfF9DAauGQEPNACrkRk-LRsBIP5vV8F0m0myYMB7dpPE_Agt8c0oBx07QAVjUhmWeqbfnd40YEuI91Xnru4AHVHhjRQqZeBcO1Dqz3h7000Wkr0xViAIE4QUxjkXW32fXKI0XqRI9HKLA9O75ISMcEWWBWD_swHDhVM_0P7o3jOgb1I6LpBitoAFopHRaeP0O--iFC__IhkGP_WVCmHjsuik7fFmUoVMFesaP03291NJ9EJviLL8fJ3WUKc4iOYrUqR6M_LE1ykErV3AAMznSjRApp-D4kx0zA_s3vbOyFu2M5P6FW7u9jJ4d2kz0OUUVZUDmlAyombeQSCdYqfnFiNketLFI3YGhaeyxc6V-ZoWJlDAUhVn4WxX2PPLib80iZPqIvKBbnZ1-vGpexcV7JQ9kukfC6gIAS6fnB-qbqDvz4FHvX1ZHLzUeFloS6-xL3KlzwOYug2M4R-JAP9--2eXVzJy3eStkgMUiWixYDIxmoaiSqVaU5kWSdttNs_dmDQK2SOqv_ljDQkwHAdwSJco4McXR_gOYMJnbEmBsTPAkPei1lmqwY8N53c9JgbtGDnD3qq624yeOpy9zZ4nCcjm6EK2_XYe_2Z6ptb_3YtDHzKOgt0DINlWvW4OZlsmJz1pEevOAD9h6c6_Ikro4pePyXVcGOtuP7KpzjzK3JnjWGRc_VfvTmh709PQxdq8wtUdILwWIXHombihk5YOGYlh8i3Xg5O1UOfNSWgsSKgf8VBPYZk3eosEnXKozG_aV2KTnSIc1VWy43kwMYsoRHEYXkIgSgac0iar0GBOFdPhUstu7abp7eBATkIy6bDVyE3Wvfr7zvTV2B6RwBP0o_Cr8HbWL5ZyXu3-FQ_3Bt4PiFKMNqTG1jF0I6xbGSRrXrQXUvwnZxnPQabgkrPReM3gm1BpM7vurX2LYH7eya7dCaKcb9DR9delcYmmLY0Qc_ZPvc1EaTDbGaU5huY_nP1ufCFCPKZA8LIdQygiD8Z37gt9wUVswieszRaiRWGcnRG558bvjk5HOW_vPCcq8KIHsdIGA9Twrv1DLtohTpHHKHaai--juIB94Wyjq3PSe5K6_e5vXUV8KdlB0gsVAHPBM4HnXxJ1rBSbUT6xPLbnHfhRn3aX-Q7VOXQjHCSi_sQN1dxiPf9WqNaub437XHMRlE-IuwWM1aVEJikEagIOJQvQybXmeD9YYOGmOpszLVjrm8R9x6os5JfuQu9PN18PoY9Avpat7Eqr19T4lWzwqVgUwDZZA3hOG8k0nq3fWhLbgkxF9O-PFT3V2eo8TcwQDIHq3IU_CqcjhSzMieAkIjsVdb4AMaf0Lq3XSo3BReNSyjEAjHpGbVb9AlCNKWoTK2xfUrlN8zAunccHz1BxlmlxiO8mZ9zxFeCRZXZxw-lluR1gw9HwypGnWZJLfS9_1Q_oHBquVLEj8zAu43MwYRV--G-nqD0pTY7a0BB3_xXTCc-PRk_UAVbpUVDuGzWmzJN6kXgUVrMCFxA_SX7Oma2NSkXXpzmOofLCtsf_ET2_lfkNYJlG7QTnfowbFbMpxebkSxAWIeUrS8BeGn7KabStxetdxyOVtpY4bUcUwFc9ItlUxyOmzeSOzLm_HOtrsnaH-T4wc3P9X5TFj_uCEw7WqSfTqssl5xhW2Db-9Up8u2rjjg_NwfERHS2eUPYbtT7qCszCV6jVUW5xZkPOMODx-ht7IyqKOyyagb6wbFY6CZhScX_hmMuqnqSY5EzSfF-AyZGlAdc9Kb8ogzoZxGox2coutJHD0VLsX3rDEOofUE1_OKO3T1y288FRd7Df-f4YSztjn8wFIoudq-VaUpmVC498svNmWkh9Q9cOZ3hBxMCI8FzzUdARpfC2aW84bfLaM7IErduNBIvUOVXj3iIxUGb4bJ5xBjKuvrhKowXtA216iSw_iB4ZdUzd26XEUXvoQX5LXQMaKA5hvtf22Sgc3oF0LceW4JAo-cxafLrH1UD_QxH3I8NGlTf2C0Xp8wEDQYvhWlQwHCqHNbIOvRCccpu-KtFqTvnoRddgCasAkH-pYgq94Ne0L028DlVy022H5mtsYr3v9XSGeSQfEXwcZSGXIgorsAjkgN8O8fySi2GzLr00b6lzdIjRXEppzwn0UR6RXKA==