From 91ed39fb9d72a922011433006645b3773493793b Mon Sep 17 00:00:00 2001 From: Rahul Pandey <103115900+rp9-next@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:25:05 +0000 Subject: [PATCH] ICU-22847 Migrate ADO pipelines to GHA See #3112 - Update Docs - Make exhaustive tests run manually, based on cron for main and post merge for maint --- .ci-builds/.azure-exhaustive-tests.yml | 81 ----- .ci-builds/.azure-pipelines-icu4c.yml | 6 +- {.ci-builds => .github}/data-filter.json | 0 .github/workflows/icu4c.yml | 325 ++++++++++++++++++ .github/workflows/icu_exhaustive_tests.yml | 69 ++++ .github/workflows/icu_merge_ci.yml | 82 +++++ docs/processes/cldr-icu.md | 6 +- docs/processes/release/tasks/healthy-code.md | 2 +- .../azure-ci-builds-artifacts-download.png | Bin 6990 -> 0 bytes .../publish/azure-ci-builds-artifacts.png | Bin 6192 -> 0 bytes .../release/tasks/publish/azure-ci-builds.png | Bin 12576 -> 0 bytes .../tasks/publish/gha-ci-artifacts.png | Bin 0 -> 24615 bytes .../release/tasks/publish/gha-ci-summary.png | Bin 0 -> 40868 bytes docs/processes/release/tasks/publish/index.md | 40 +-- docs/userguide/assets/gha_run_workflow.png | Bin 0 -> 12129 bytes docs/userguide/assets/gha_tab.png | Bin 0 -> 22955 bytes docs/userguide/dev/ci.md | 83 +---- docs/userguide/dev/gitdev.md | 17 +- 18 files changed, 516 insertions(+), 195 deletions(-) delete mode 100644 .ci-builds/.azure-exhaustive-tests.yml rename {.ci-builds => .github}/data-filter.json (100%) create mode 100644 .github/workflows/icu_exhaustive_tests.yml delete mode 100644 docs/processes/release/tasks/publish/azure-ci-builds-artifacts-download.png delete mode 100644 docs/processes/release/tasks/publish/azure-ci-builds-artifacts.png delete mode 100644 docs/processes/release/tasks/publish/azure-ci-builds.png create mode 100644 docs/processes/release/tasks/publish/gha-ci-artifacts.png create mode 100644 docs/processes/release/tasks/publish/gha-ci-summary.png create mode 100644 docs/userguide/assets/gha_run_workflow.png create mode 100644 docs/userguide/assets/gha_tab.png diff --git a/.ci-builds/.azure-exhaustive-tests.yml b/.ci-builds/.azure-exhaustive-tests.yml deleted file mode 100644 index 92b3b7d6567..00000000000 --- a/.ci-builds/.azure-exhaustive-tests.yml +++ /dev/null @@ -1,81 +0,0 @@ -# Azure Pipelines configuration for Exhaustive Tests for ICU. -# -# Note: The exhaustive test configuration is in a separate file -# so that it can be run independently from the regular builds. -# -# Only run the exhaustive tests on the main and maint branches, and -# also batch up any pending changes so that we will only have at most -# one build running at a given time (since they take a long time). -trigger: - # batch=true to reduce number of concurrent runs on the same branch: - # https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/trigger?view=azure-pipelines#properties - # potential future feature to supersede batch=true: - # https://learn.microsoft.com/en-us/azure/devops/pipelines/process/stages?view=azure-devops&tabs=yaml#specify-queuing-policies - batch: true - branches: - include: - - main - - maint/maint-* - paths: - include: - - '*' - exclude: - - .github/* - - .ci-builds/.azure-pipelines-icu4c.yml - - .ci-builds/.azure-pipelines-icu4j.yml - - .ci-builds/.azure-valgrind.yml - - docs/* - - tools/* - - vendor/* - - .cpyskip.txt - - .travis.yml - - KEYS - - README.md - -variables: - MAVEN_ARGS: '--show-version --no-transfer-progress' - -jobs: -#------------------------------------------------------------------------- -# Note: The exhaustive tests can take more than 1 hour to complete. -- job: ICU4J_OpenJDK_Ubuntu_2204 - displayName: 'J: Linux OpenJDK (Ubuntu 22.04)' - timeoutInMinutes: 180 - pool: - vmImage: 'ubuntu-22.04' - demands: ant - steps: - - checkout: self - lfs: true - fetchDepth: 10 - - script: | - echo "Building ICU4J" && cd icu4j && mvn install -DICU.exhaustive=10 - displayName: 'Build and Exhaustive Tests' - env: - BUILD: ICU4J - - script: | - cd icu4j && cat `find . -name surefire-reports -type d -exec grep -l -r --include="*.txt" FAILED {} \;` - condition: failed() # only run if the build fails. - displayName: 'List failures (if any)' - timeoutInMinutes: 2 -#------------------------------------------------------------------------- -# Note: The exhaustive tests can take more than 1 hour to complete. -- job: ICU4C_Clang_Exhaustive_Ubuntu_2204 - displayName: 'C: Linux Clang Exhaustive Tests (Ubuntu 22.04)' - timeoutInMinutes: 120 - pool: - vmImage: 'ubuntu-22.04' - steps: - - checkout: self - lfs: true - fetchDepth: 10 - - script: | - cd icu4c/source && ./runConfigureICU Linux && make -j -l2.5 - displayName: 'Build' - - script: | - cd icu4c/source && make check-exhaustive - displayName: 'Exhaustive Tests' - env: - CC: clang - CXX: clang++ -#------------------------------------------------------------------------- diff --git a/.ci-builds/.azure-pipelines-icu4c.yml b/.ci-builds/.azure-pipelines-icu4c.yml index 2c7e675aa0c..d30e833c70a 100644 --- a/.ci-builds/.azure-pipelines-icu4c.yml +++ b/.ci-builds/.azure-pipelines-icu4c.yml @@ -67,7 +67,7 @@ jobs: # calling makeconv for it, although the Makefile has appropriate dependencies. - script: | cd icu4c/source && \ - ICU_DATA_FILTER_FILE=../../.ci-builds/data-filter.json ./runConfigureICU Linux && \ + ICU_DATA_FILTER_FILE=../../.github/data-filter.json ./runConfigureICU Linux && \ make -j2 tests && \ \[ ! -d data/out/build/icudt66l/translit \] && \ (cd test/intltest && LD_LIBRARY_PATH=../../lib:../../tools/ctestfw ./intltest translit/TransliteratorTest/TestBasicTransliteratorEvenWithoutData) && \ @@ -272,7 +272,7 @@ jobs: - Cmd steps: - powershell: | - $filterPath = $Env:BUILD_SOURCESDIRECTORY + "\.ci-builds\data-filter.json" + $filterPath = $Env:BUILD_SOURCESDIRECTORY + "\.github\data-filter.json" $vstsCommandString = "vso[task.setvariable variable=ICU_DATA_FILTER_FILE]" + $filterPath Write-Host "##$vstsCommandString" - task: VSBuild@1 @@ -667,4 +667,4 @@ jobs: displayName: 'Run Tests (icucheck.bat)' inputs: filename: icu4c/source/allinone/icucheck.bat - arguments: 'x64 Release' + arguments: 'x64 Release' \ No newline at end of file diff --git a/.ci-builds/data-filter.json b/.github/data-filter.json similarity index 100% rename from .ci-builds/data-filter.json rename to .github/data-filter.json diff --git a/.github/workflows/icu4c.yml b/.github/workflows/icu4c.yml index 01a1fda2108..34c30fde8eb 100644 --- a/.github/workflows/icu4c.yml +++ b/.github/workflows/icu4c.yml @@ -75,6 +75,26 @@ jobs: make install; PATH=$PREFIX/bin:$PATH make -C test/hdrtst check + #gcc 11 with c++ 20 + gcc11-cpp20: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Install GCC-11 + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test + sudo apt update + sudo apt install gcc-11 g++-11 + - name: Build and Test + env: + CC: gcc-11 + CXX: g++-11 + CXXFLAGS: -std=c++20 -fext-numeric-literals + run: | + cd icu4c/source; + ./runConfigureICU Linux + make -j -l4.5 check; + # clang release build with some options to enforce useful constraints. # Includes dependency checker on an in-source, optimized build. # Includes checking @draft etc. API tags vs. ifndef guards like @@ -106,6 +126,12 @@ jobs: run: | cd icu4c; source/test/hdrtst/testtagsguards.sh; + - name: Test C Default locale + run: | + cd icu4c/source/test/cintltst && LANG=C LD_LIBRARY_PATH=../../lib:../../tools/ctestfw ./cintltst /tsutil/cloctst/TestCDefaultLocale + - name: Test C.UTF-8 Default locale + run: | + cd icu4c/source/test/cintltst && LANG=C.UTF-8 LD_LIBRARY_PATH=../../lib:../../tools/ctestfw ./cintltst /tsutil/cloctst/TestCDefaultLocale - name: Make Dist env: CPPFLAGS: -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1 @@ -240,6 +266,81 @@ jobs: CPPFLAGS: -fsanitize=thread LDFLAGS: -fsanitize=thread + #------------------------------------------------------ + # Clang Linux with data filter + # Note: This job uses `make -j2` instead of `make -j -l4.5` because with more parallelism (PR #2456) + # this check became flaky. The build apparently was not done copying one or another .ucm file before + # calling makeconv for it, although the Makefile has appropriate dependencies. + clang-datafilter: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Extract ICU version + run: | + # Extract ICU version from icuver.txt + icuverContent=$(cat icu4c/source/data/misc/icuver.txt) + icuVersion=$(echo "$icuverContent" | grep -oP 'ICUVersion\{"\K\d+\.\d+\.\d+\.\d+') + majorVersion=$(echo "$icuVersion" | cut -d. -f1) + echo "majorVersion=$majorVersion" + echo "majorVersion=$majorVersion" >> $GITHUB_ENV + - name: Build ICU4C with clang + run: | + cd icu4c/source && \ + ICU_DATA_FILTER_FILE=../../.github/data-filter.json ./runConfigureICU Linux/clang && \ + make -j2 tests && \ + \[ ! -d data/out/build/icudt${majorVersion}l/translit \] && \ + (cd test/intltest && LD_LIBRARY_PATH=../../lib:../../tools/ctestfw ./intltest translit/TransliteratorTest/TestBasicTransliteratorEvenWithoutData) && \ + (cd test/cintltst && LANG=C LD_LIBRARY_PATH=../../lib:../../tools/ctestfw ./cintltst /tsutil/cloctst/TestEnglishExemplarCharacters /tsutil/cldrtest/TestCoverage) + + # Clang Linux with CPP 17 + clang-cpp17: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Build ICU4C with CPP 17 + env: + CXXFLAGS: -std=c++17 -Winvalid-constexpr + run: | + cd icu4c/source && ./runConfigureICU --enable-debug --disable-release Linux/clang && make -j -l4.5 check + + # Clang Linux with LANG: en_US@calendar=gregorian;hours=h12 + clang-lang-with-extn-tags: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Linux Clang - LANG has extension tags + env: + LANG: "en_US@calendar=gregorian;hours=h12" + run: | + cd icu4c/source && ./runConfigureICU --enable-debug --disable-release Linux/clang && make -j -l4.5 check + + # Clang Linux 16 with CPP20 and treat warnings as errors + clang16-cpp20-warning-as-errors: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + flags: + - '-std=c++20' + - '-std=c++20 -stdlib=libc++' + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Install Clang-16 + run: | + curl -Ls https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + sudo apt-add-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-16 main' + sudo apt update + sudo apt install -qy clang-16 lld-16 libc++-16-dev libc++abi-16-dev + - name: Clang-16 build and Test + env: + CC: clang-16 + CXX: clang++-16 + # TODO: add '-Werror' after fixing ICU-22873 + CPPFLAGS: '-Wall -Wextra -Wno-strict-prototypes -Wctad-maybe-unsupported' + CXXFLAGS: ${{ matrix.flags }} + run: | + cd icu4c/source && ./runConfigureICU --enable-debug --disable-release Linux/clang && make -j -l4.5 check + # MacOS with clang macos-clang: runs-on: macos-latest @@ -247,11 +348,163 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: ICU4C with clang on MacOS + env: + # TODO: add '-Werror' after fixing ICU-22874 + CPPFLAGS: '-Wall -Wextra -Wextra-semi -Wundef -Wnon-virtual-dtor -Wctad-maybe-unsupported' run: | cd icu4c/source; PYTHON=python3 ./runConfigureICU MacOSX; make -j -l4.5 check + # Windows MSVC builds + windows-msvc: + runs-on: windows-2022 + strategy: + fail-fast: false + matrix: + include: + - test_flags: 'x64 Debug' + build_flags: '/p:Configuration=Debug /p:Platform=x64' + - test_flags: 'x86 Debug' + build_flags: '/p:Configuration=Debug /p:Platform=Win32' + - test_flags: 'arm Release' + build_flags: '/p:Configuration=Release /p:Platform=ARM' + - test_flags: 'x64 Release' + build_flags: '/p:LanguageStandard=stdcpplatest /p:Configuration=Release /p:Platform=x64' + - test_flags: 'x64 Release' + build_flags: '/p:_HAS_EXCEPTIONS=0 /p:Configuration=Release /p:Platform=x64' + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Set up MSBuild + uses: microsoft/setup-msbuild@v2 + - name: Build Solution x64 + if: contains(matrix.test_flags, 'arm Release') + run: msbuild icu4c/source/allinone/allinone.sln /p:Configuration=Release /p:Platform=x64 + - name: Build Solution + run: | + msbuild icu4c/source/allinone/allinone.sln ${{ matrix.build_flags }} + - name: Run ${{ matrix.test_flags }} Tests (icucheck.bat) + if: contains(matrix.test_flags, 'arm Release') == false + run: | + icu4c\source\allinone\icucheck.bat ${{ matrix.test_flags }} + + # Windows data filter build + windows-msvc-datafilter: + runs-on: windows-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Set ICU_DATA_FILTER_FILE variable + run: | + $filterPath = "${{ github.workspace }}\.github\data-filter.json" + echo "ICU_DATA_FILTER_FILE=$filterPath" >> $GITHUB_ENV + shell: pwsh + - name: Set up MSBuild + uses: microsoft/setup-msbuild@v2 + - name: Build Solution with Data Filter + run: msbuild icu4c/source/allinone/allinone.sln /p:Configuration=Release /p:Platform=x64 /p:SkipUWP=true + + # Windows MSVC distribution release + windows-msvc-dist-release: + runs-on: windows-latest + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + include: + - arch: 'x64' + plat: 'x64' + win_ver: 'Win64' + - arch: 'x86' + plat: 'Win32' + win_ver: 'Win32' + - arch: 'arm64' + plat: 'ARM64' + win_ver: 'WinARM64' + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Set up MSBuild + uses: microsoft/setup-msbuild@v2 + - name: Build Solution x64 + if: contains(matrix.win_ver, 'ARM64') + run: msbuild icu4c/source/allinone/allinone.sln /p:Configuration=Release /p:Platform=x64 + - name: Build Solution + run: msbuild icu4c/source/allinone/allinone.sln /p:Configuration=Release /p:Platform=${{ matrix.plat }} + - name: Run Tests (icucheck.bat) + if: contains(matrix.win_ver, 'ARM64') == false + run: icu4c/source/allinone/icucheck.bat ${{ matrix.arch }} Release + - name: "Run PowerShell: Distrelease script (${{ matrix.arch }})" + run: | + cd ./icu4c/ + ./packaging/distrelease.ps1 -arch ${{ matrix.arch }} + shell: pwsh + - name: Extract ICU version and rename zip file + id: set-zip-name + run: | + # Extract ICU version from icuver.txt + $icuverContent = Get-Content icu4c\source\data\misc\icuver.txt + $icuVersion = ($icuverContent -match 'ICUVersion{"(\d+\.\d+\.\d+\.\d+)"}')[0] + $icuVersion -match '\{"(.*?)"\}' | Out-Null + $icuVersion = $matches[1] + $majorVersion = $icuVersion.Split('.')[0] + $minorVersion = $icuVersion.Split('.')[1] + # Determine the new file name based on the version + if ($minorVersion -eq "0") { + $newZipName = "icu4c-${majorVersion}rc-${{ matrix.win_ver }}-MSVC2022" + } else { + $newZipName = "icu4c-${majorVersion}_${minorVersion}-${{ matrix.win_ver }}-MSVC2022" + } + # Debugging: Print the new zip name + Write-Host "New Zip Name: $newZipName" + # Rename the existing zip file + cd icu4c\source\dist\ && ls -l . + Rename-Item -Path icu-windows.zip -NewName "${newZipName}.zip" + echo $newZipName + ls -l . + echo "newZipName=$newZipName" | Out-File -FilePath $env:GITHUB_ENV -Append + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: icu4c.${{ matrix.win_ver }}.run_#${{ github.run_number }} + path: icu4c/source/dist/${{ env.newZipName }}.zip + + # Window MSYS2 tests + windows-msys2-gcc-x86_64: + runs-on: windows-latest + timeout-minutes: 45 + defaults: + run: + shell: msys2 {0} + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Set up MSYS2 + uses: msys2/setup-msys2@v2 + id: msys2 + with: + update: true + msystem: mingw64 + install: > + base-devel + mingw-w64-x86_64-toolchain + make + - name: 'Verify MinGW Installation' + run: gcc --version + - name: Build and Test + run: | + cd '${{ github.workspace }}' && cd icu4c/source && ./runConfigureICU MinGW --prefix='/tmp/build-icu' && make -j -l4.5 check + - name: Make install + run: | + cd '${{ github.workspace }}' && cd icu4c/source && make install && cd /tmp/build-icu && echo 'Recursive ls' && ls -lR + - name: Run icuinfo + run: | + echo 'Run icuinfo from MSYS shell' && cd /tmp/build-icu/bin && ./icuinfo.exe + - name: Run icuinfo from CMD + shell: cmd + run: | + cd /d ${{ steps.msys2.outputs.msys2-location }}\tmp\build-icu\bin + set PATH=C:\tools\msys64\mingw64\bin;%PATH% + .\icuinfo.exe + # Run ICU4C tests with stubdata. run-with-stubdata: runs-on: ubuntu-latest @@ -593,3 +846,75 @@ jobs: mkdir -p lib pushd common && make -j -l4.5 && popd pushd i18n && make -j -l4.5 && popd + + # Workflow for ICU Export Data for ICU4X + icu4c-icuexportdata: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Build + run: | + cd icu4c/source && ./runConfigureICU Linux && make -j -l4.5 + env: + CC: clang + CXX: clang++ + - name: Build property data files + run: | + cd icu4c/source + mkdir -p icuexportdata/uprops/fast + ./bin/icuexportdata --mode uprops --index --copyright --verbose --destdir icuexportdata/uprops/fast --trie-type fast --all + mkdir -p icuexportdata/uprops/small + ./bin/icuexportdata --mode uprops --index --copyright --verbose --destdir icuexportdata/uprops/small --trie-type small --all + env: + LD_LIBRARY_PATH: lib + - name: Build normalization data files + run: | + cd icu4c/source + mkdir -p icuexportdata/norm/fast + ./bin/icuexportdata --mode norm --index --copyright --verbose --destdir icuexportdata/norm/fast --trie-type fast --all + mkdir -p icuexportdata/norm/small + ./bin/icuexportdata --mode norm --index --copyright --verbose --destdir icuexportdata/norm/small --trie-type small --all + env: + LD_LIBRARY_PATH: lib + - name: Build case data files + run: | + cd icu4c/source + mkdir -p icuexportdata/ucase/fast + ./bin/icuexportdata --mode ucase --index --copyright --verbose --destdir icuexportdata/ucase/fast --trie-type fast --all + mkdir -p icuexportdata/ucase/small + ./bin/icuexportdata --mode ucase --index --copyright --verbose --destdir icuexportdata/ucase/small --trie-type small --all + env: + LD_LIBRARY_PATH: lib + - name: Build collation data files + run: | + cd icu4c/source + cd data/coll + FILES=$(ls *.txt) + cd ../../ + mkdir -p icuexportdata/collation/unihan + ./bin/genrb -X -s data/coll --ucadata data/in/coll/ucadata-unihan-icu4x.icu -d icuexportdata/collation/unihan $FILES + rm icuexportdata/collation/unihan/*.res + mkdir -p icuexportdata/collation/implicithan + ./bin/genrb -X -s data/coll --ucadata data/in/coll/ucadata-implicithan-icu4x.icu -d icuexportdata/collation/implicithan $FILES + rm icuexportdata/collation/implicithan/*.res + env: + LD_LIBRARY_PATH: lib + - name: Build segmenter dictionary files + run: | + cd icu4c/source + mkdir -p icuexportdata/segmenter/dictionary + for FILE in $(ls data/brkitr/dictionaries | xargs -n 1 basename); do + ./bin/gendict --uchars --toml data/brkitr/dictionaries/$FILE icuexportdata/segmenter/dictionary/$(basename $FILE .txt).toml + done + env: + LD_LIBRARY_PATH: lib + - name: Zip + run: | + cd icu4c/source/icuexportdata + zip -r ../../../icuexportdata_tag-goes-here.zip . + - name: Publish Artifact + uses: actions/upload-artifact@v4 + with: + name: icuexportdata_output + path: icuexportdata_tag-goes-here.zip \ No newline at end of file diff --git a/.github/workflows/icu_exhaustive_tests.yml b/.github/workflows/icu_exhaustive_tests.yml new file mode 100644 index 00000000000..fe992f74b01 --- /dev/null +++ b/.github/workflows/icu_exhaustive_tests.yml @@ -0,0 +1,69 @@ +# Copyright (C) 2016 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html +# +# GitHub Actions configuration for Exhaustive Tests for ICU. +# +# Note: The exhaustive test configuration is in a separate file +# so that it can be run independently from the regular builds. +# +# To run these tests, go to the Actions Tab of your repo on the github page, +# select "Exhaustive Tests for ICU" and manually trigger the workflow for your branch. + +name: Exhaustive Tests for ICU + +on: + push: + # Runs post merge on maintenance branches + branches: + - 'maint/maint*' + paths: + - 'icu4c/**' + - 'icu4j/**' + - '.github/workflows/**' + schedule: + # Runs daily on default branch (main) only. + # https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#schedule + - cron: '0 4 * * 6' # Run every Saturday at 4:00 UTC + workflow_dispatch: + # Run manually on any branch + +# For non-release branches (namely: PRs), only run CI on the most recent commit. Cancel +# runs on previous commits mid-flight when new commits are pushed. +# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-only-cancel-in-progress-jobs-on-specific-branches +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !contains(github.ref, 'maint/') && github.ref != 'main' }} + +jobs: + # Runs exhaustive tests for ICU4J on Linux + icu4j-linux: + runs-on: ubuntu-latest + timeout-minutes: 180 + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Build and Exhaustive Tests + run: | + echo "Building ICU4J" && cd icu4j && mvn install -DICU.exhaustive=10 + env: + BUILD: ICU4J + - name: List failures (if any) + if: failure() + run: | + cd icu4j && cat `find . -name surefire-reports -type d -exec grep -l -r --include="*.txt" FAILED {} \;` + timeout-minutes: 2 + + + icu4c-linux-clang: + runs-on: ubuntu-latest + timeout-minutes: 120 + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Build + run: | + cd icu4c/source && ./runConfigureICU Linux/clang && make -j -l4.5 + - name: Exhaustive Tests + run: | + cd icu4c/source && make check-exhaustive + env: + CC: clang + CXX: clang++ diff --git a/.github/workflows/icu_merge_ci.yml b/.github/workflows/icu_merge_ci.yml index a7090564c0c..7c5eba63007 100644 --- a/.github/workflows/icu_merge_ci.yml +++ b/.github/workflows/icu_merge_ci.yml @@ -824,3 +824,85 @@ jobs: publish_branch: main publish_dir: ./perf keep_files: true + + # Build ICU and tests sample on some windows configurations + icu4c-windows-msvc-postmerge: + runs-on: windows-2022 + timeout-minutes: 30 + strategy: + matrix: + arch: [x64, x86] + config: [Debug, Release] + include: + - arch: x86 + platform: Win32 + - arch: x64 + platform: x64 + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Set up MSBuild + uses: microsoft/setup-msbuild@v1 + - name: Build Solution + run: msbuild icu4c/source/allinone/allinone.sln /p:Configuration=${{ matrix.config }} /p:Platform=${{ matrix.platform }} + - name: Run Tests (icucheck.bat) + run: icu4c/source/allinone/icucheck.bat ${{ matrix.arch }} ${{ matrix.config }} + - name: Build Sample Solution + run: msbuild icu4c/source/samples/all/all.sln /p:Configuration=${{ matrix.config }} /p:Platform=${{ matrix.arch }} + - name: Test Samples (samplecheck.bat) + run: icu4c/source/samples/all/samplecheck.bat ${{ matrix.arch }} ${{ matrix.config }} + + icu4c-windows-cygwin-gcc: + runs-on: windows-latest + timeout-minutes: 50 + env: + ICU_CI_CACHE: c:\icu-ci-cache + CYG_URL: https://cygwin.com/setup-x86_64.exe + CYG_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/ + CYG_PACKAGES: automake,gcc-core,gcc-g++,make,pkg-config,perl,python3 + CYG_ROOT: c:\cygwin-root + CYG_CACHE: 'c:\icu-ci-cache\cygwin64-v3' + CYG_CACHED_SETUP: 'c:\icu-ci-cache\cygwin64-v3\setup.exe' + CYG_VERSION_KEY: cygwin-3.2 + defaults: + run: + shell: cmd + steps: + - name: Configure Git to checkout with Unix line endings (LF) + run: | + git config --global core.autocrlf input + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Restore Cygwin cache + uses: actions/cache@v2 + with: + path: ${{ env.CYG_CACHE }} + key: ${{ hashFiles('.github/workflows/icu_merge_ci.yml') }} + - name: Download Cygwin setup + shell: pwsh + run: | + if ( !(Test-Path "${{ env.CYG_CACHED_SETUP }}" -NewerThan (Get-Date).AddDays(-7)) ) + { + Write-Host "Cached Cygwin setup does not exist or is older than 7 days, downloading from external site." + New-Item -Force -Type Directory ${{ env.CYG_CACHE }} + Write-Host "Downloading Cygwin setup..." + $start_time = Get-Date + (New-Object System.Net.WebClient).DownloadFile("${{ env.CYG_URL }}", "${{ env.CYG_CACHED_SETUP }}") + Write-Output "Download took: $((Get-Date).Subtract($start_time).Seconds) second(s)." + } + - name: Install Cygwin + run: | + ${{ env.CYG_CACHED_SETUP }} --no-verify --quiet-mode --no-shortcuts --no-startmenu --no-desktop --upgrade-also --only-site --site "${{ env.CYG_MIRROR }}" --root "${{ env.CYG_ROOT }}" --local-package-dir "${{ env.CYG_CACHE }}" --packages "${{ env.CYG_PACKAGES }}" + - name: Check Cygwin environment + run: | + ${{ env.CYG_ROOT }}/bin/sh -lc 'echo Hello' && ${{ env.CYG_ROOT }}/bin/sh -lc 'uname -a' + - name: Build ICU (source and test) + run: | + ${{ env.CYG_ROOT }}/bin/bash -lc "cd $(cygpath \"${{ github.workspace }}\") && cd icu4c/source && ./runConfigureICU Cygwin && make tests -j -l4.5" + env: + CC: gcc + CXX: g++ + - name: Run Tests + run: | + ${{ env.CYG_ROOT }}/bin/bash -lc "cd $(cygpath \"${{ github.workspace }}\") && cd icu4c/source && make -j -l4.5 check" + env: + CC: gcc + CXX: g++ diff --git a/docs/processes/cldr-icu.md b/docs/processes/cldr-icu.md index 1d579348216..c3aa045b59e 100644 --- a/docs/processes/cldr-icu.md +++ b/docs/processes/cldr-icu.md @@ -379,12 +379,12 @@ If the data is OK , other sources of failure can include: Exhautive tests should always be run for a CLDR-ICU integration PR before it is merged. Once you have a PR, you can do this for both C and J as part of the pre-merge CI tests -by adding the following as a comment in the pull request:
-`/azp run CI-Exhaustive` (the exhaustive tests are not run automatically on every PR). +by manually running a workflow (the exhaustive tests are not run automatically on every PR). +See [Continuous Integration / Exhaustive Tests](../userguide/dev/ci.md#exhaustive-tests). The following instructions run the ICU4C exhaustive tests locally (which you may want to do before even committing changes, or which may be necessary to diagnose failures in the -CI tests: +CI tests): ``` cd $ICU4C_DIR/source export INTLTEST_OPTS="-e" diff --git a/docs/processes/release/tasks/healthy-code.md b/docs/processes/release/tasks/healthy-code.md index a4bc4b6f312..5d4aa295faf 100644 --- a/docs/processes/release/tasks/healthy-code.md +++ b/docs/processes/release/tasks/healthy-code.md @@ -474,7 +474,7 @@ make check ## Test ICU4C Samples and Demos ### Windows build and test -Note: Since ICU 73, this task has been included in the Azure DevOps Pipeline which is triggered automatically upon merging with main/maint* branches. +Note: Since ICU 76, this task has been included in the GHA workflows which are triggered automatically upon merging with main/maint* branches. These instructions explain how to run the tests manually. To build the ICU4C samples on Windows with Visual Studio, use the following diff --git a/docs/processes/release/tasks/publish/azure-ci-builds-artifacts-download.png b/docs/processes/release/tasks/publish/azure-ci-builds-artifacts-download.png deleted file mode 100644 index b6817934faa92f42488e9f70d52fbdb6e731fd52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6990 zcmc&(cT`i`myQK6*dB-qQUyYh4hlk$D$+qw=>!!5BE*0Yqz08JMSAb3l<1=b5Qrdz z2T}u4C6rL4gcc$_2m~?-@BL=YKeK)_Yt35oNAA66owL8Q&(7K3{_eREx6SlVvtMEd z005^A4Q^Th07s@6&*djr8P|=^ET)Xx5pN599YAR}-y)-N+*R9Dn=v5vB<&#!qYd;l zu<-@}&U|D3j*Co0*XbC-Q)gx zh)d5JsGaub`Ne9T?{A%6 z>Rfr$VeL{?Rd11zoR=&K$&7cV2hz8pb7S5;!RaF-HQxF?$28qnh^q5A&m7h537*&! z3=g@cXB_J#97i`n{%cl(VcrQ`HsVKt#{d8ytrTZ4N7*aX5dc7~8ALQ=DHeJN0KAZu zFCa$0I4^n%0O$q13{vSRls*1Wk9HFS5cC)2F=H5~ry-V?LxgE@rab|M7QV&oWRVme zF}oSX#Ee{TG$)C(%kzmEFD^1Y!5k+BsSiguG+O<374f5SdTjm>)4GVnmP*lDB(A9-< zROYj}kvk*(OVO#M0teL|s9aBbO8huPWg@9X5GMpyCP1B?Z!QIfZl{_55?Dhg_Q8%$ z_uswzg|Pi7(u-uOdTk?WdAJU;bg-UL9Jnc&u8Li#5`8`Qfks=-b(}kS#STx+7>XTR3jVp>S2=2%>R2o0&YaiB=m~ujIx4((lUmtx%7x*kK-8|{keaWFV6&j5S zkq#sy{Oc4%(6SS8;88ecEa7e2cDvKHyGE?W-p?Ko)kapEUs9DJV7P;-oc=aai8_ex zsuswK8y%M2q3-;QhBZvwRqFrk!gkAAO)^mVM}2iyyZg%6nqKuY@`tQlGRy)KSfL30 z;$z}VXob>Q?95D6!Pmr`AYh`tTGC>HvEpY~p1Rl1B>Os!q{+ICm@Lgd+t9MaGmwhe zbg?Ors?t^(w!ty!7+Mw|{qvnatbRJV%1U6nTf3szph=wcvzc`Su{m^5{&d17u4SRp zr-ClfxN}_$z3mYfv5ztIjF1UOL>vKZX6G0UUo71}^<@#!TlJHt{G4MG5xOS}uT1Nc zq*^wmLZ5a!q|^BV*Tb6~#lJ2C-~U4V^nQ(-PMRQmR=l=bM*E&sl5LijDw253IETZu zrYyw%31siP_q%C~Io~GrgXu;Sl1DJu)~uQRPWsb?j*hnanYoF9g2b;->C5(5ROng0 z#rdioDwY&mfA+>**O@k5P@UUeevp@#y9+^SeQj>`<)s{#~9B~Yh?vp1`8 zvTUsm>ryeuZPl$~(dNAq*=^I}!rVKo>lvDgl3Uqre0e(K+jrp3m&^*wf;`Ysej;S5 zh;10kd?kML+XP#xr{a0KZjYHlCfWG+;<@hNWf%JXM!B2qGg$?|3*3MbkQ^?yf3afI z-T0b$cueW%tw)y1?!r^acF#z(qV@4~OotV2J>MgEHhz_K`K|;SYA!?9ePw8Amnz2> z7h&rlFd1l%5=!7N_~IlMvbW1Sm>c$dht?@P?_Rybvm$>5#)sv#tY z8n1a2==G~ditXgh%(wH-bDyFuFeQmS{))(f5Z$5^jT$vECH&}Snq8F$p~N}yj3^&3 zsnFm{+;1P^?@YWur!NJ=&*1s{?^HOcA%*L5vw=abB-qobl zm)|r#S0-t~`1&L0)U|Z~N1;EKh_gQng!87O&R$^Yy;#sH5NOicTG$+L@k;(NAUu7| z_FTCwunqe?(G$HFi#qb)_F@F8$1EEEcp|j9?3k R-WpKx#FI+;TITN-%+6ibsD} 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 diff --git a/docs/processes/release/tasks/publish/azure-ci-builds-artifacts.png b/docs/processes/release/tasks/publish/azure-ci-builds-artifacts.png deleted file mode 100644 index 57efc4bd74273087e1cbdbbecc94f884a25bfd76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6192 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 diff --git a/docs/processes/release/tasks/publish/azure-ci-builds.png b/docs/processes/release/tasks/publish/azure-ci-builds.png deleted file mode 100644 index 1de2309e9d7be90e6e361283460bfa9fe6383304..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12576 zcmc(lcT`is_u%OuO%x5CAgCaO-n(>^E}($)NbeFrI?|CQO78>+AT<(NXbKXL-jR;< zfPi!eZG-wfyT3iVf9#$;XLC-HSLV&!d*{xb`z(!6(4hIJwPj+rWh&{jIs%q$tgG1SV{l)Ec zDSm~6!&mb}QBLoT=~kAvtG-qGRe5?zx~$DFw9}_j7%XthRoL^;JNrOw!r*j`z-?)cjfY@uJnhv2W_-4;N-Dp<7vXU70EaHhY`5eY`?BfV;R^ z+C7AH)xukNVsM|PV%h9D?vuCuCgcx&lXQ-={QSN7&g_WHMtaVKtt>cTUdzIj`HoIg zYCWr^?3GpbE7nmsI6-l331yY*5x{`;_mJfVk2?m2X8znu7gk?aS!7U)#ve&qlHtE^ zv>e9HPrs^s3h?-d&T3LMeZz{9H)G~fI?(*E&TGfSG?5&r)%jA$OuB)v!%ayPYiP)w z7O4+P^MP0X5d~}m<=jJbq<5zc$W2TZ`SETUnS)4Wa`Rq`hSF&b40r~V&SO67Tl2lr zPdImV^7al=CBvlOZ`SH$;GsKxo^9UM&H9P@)bwbGykdXv?7;H_EMV?T=-b%k$x{n* z3~UIH#v?G5w&XLCAQRK_(GJx!Ba=4QuX|SAO*|NrW!*?Sm==M==*z={I~OQen8rOL6kPow;t$Xz@xuNit2nGLydMr2o*)y zD^9JRE8#b`qRr^o=EcrCQXspF9RT=B20bS5(fresnhH(#$j%uF8I4X1Z)xin8zZ)o?y7K->+@!euAk!OeEAGa!fH?*cJ5~qLV*%@Ch zGHcB(teook3(WEX&Zj`K$jnaPESVIvpN|@S6hz|F69$jYp_kn=Gv3NmnMJc&j+tHD zgTMJT?)YmOyA+J*DqWQT8LT$VsFtJ^_K%7W+5Y)&Ub~q#7z~a+SqTM0Sn8D9Dm^^X z6{J?jAGu}R?0B_K9_|E!GJP4{QBMsAAK^Y2cr0D~9o6PDb1ydR^iBJl1FA{4D)n}R zQ!J#mIW^7eRO zt=npdx@c9-`3~XXesX7vdSXyC9iig|;{GmjcJ%#Y>b_nlY0vIQZ+aPM6tp!8NQ)LO zu{13K(pdpXz(Y3o3%8zcstm^B;@~iag+x$}gppD3yE$#t9ULpf|8SkE{3THcdY&#= zr>PVo7jpB{WR-gOw0RYLp_+qnhgXo&02vc<;jX(>BV}HaN&;3{{He-B*r1T$!aRcr zOtWAtM)cqN5l`9ca*|Wn(`u@}lBk-dg(pF!b^{ z+t#ZTA%O9fhRTKbfoP4Co3Q^%u}jk0U`Cs&Vz&u;sTBRBLe?SW*RIq^}gz`ep(^HDp974j6rL&%DSZU2mfEX{oy9@-zu z?G}8Qt8F5HqwNqOTEG%|7O#WPV70AsCe(|oOa-{+S(xTAsa-HM{W_&hEaFT2L)beO z-%aTY^lIaFk=sYuNT1id%F^6Ge*WV0;m}70yG&L0xjro(7`brYq12&%FA}O*puyVr zU2mhw1tFTM>AuR|-O6QkYMQ=Z(3P^ZF&wbf$IoaL{DgtY>A?Nyv-@#NJ@jv&$O)*8 zdcD7Axd^;$5`PHs56u&IC+o!ZQB0d>V}MvquQy2B2e`Y&v3dUta!GS%*4*3MD?uP) zHa0h%LM(onip7LYun5si>ygA{z3aNCA(QwB=$q+K(7oX!;VF>QQd&{C6UcXIK|vDC zLJ}-dd-C4e$*Ek3)`Q3WYist;H$YMF&mZM{v0?pszpD{5PystmY&jN^4L?iwuaY$5 zbmSs5yP^OdT?;xgJ5GY+k_Ev#O*=ZP}-Pihuyxk{)ubOYh zo$m4jDrQNu;O4qt8}ItLQls$xh+X%?;CH1$j7c=vt{`BDIi%i;%N%qqXYqb?tdfaI zbF+in??D=Y)y^>k0%;<+Cl_b``2Wzx6jH($+d|l|h#+7C{C;G9tnHrwSTC%p88*mt zPy^@55dEAbrTruL#fgG$u%?}{HSVNU&Z*>#58KO5f=$A5;jAO&>ID=!td|dZO)9n9Mx-1Z*Bs?}wPb@awVetF(-5%$^ z8^7Msk}cub7{_+>53@0Y^DeLC{^{pXG8WSTbs0uaaP1U?&6mM72xABdjqD!E7b?>4m|3i{9#)h2Q`cp|K%iaG2*B4RbRp#Xnv1e|O6 zsKh9(veKu1e*4;F_3fm7^2+zKo(ZnIy1NxizhO=wp{q>Mf7MYKqJjqu83+1dOYH7! zC{{u4gjH*aK72vZO=&ykH(qVs?!WY2DXE9qgUSLK$^Kdi36r^Sq_*0gR69EY=7J~L ztujSpJ8;uCt6yT>smHipgK*+4JP6y7x!del6YyyxT8SU^Wf{^f>TXmZlIHI9 zEOQ=+tyPo549qY3AZfT`R!5lHSZcvIB?+#^g#%DEmVjE8a*83Ysm_{9X}1;{Fr&-GgcN-t$OvP^dX*5%j0;u9(RB z^7;&HUx0O55*7$@Cy`JyW<+h4{M#krn6 zve3RwkrNpCNxT%}@H9tS!%i}G?&A6LBhKZ_O?T0e^Ac)w)V&0ma`6`xIgj=;8|5_+ zOZqJ>cZ@70kl}4kLN?F_X9Z=Q#a>AF2kP;jfIxx%!R;{JKDf8Ded7osP>DWPgYnVk z2By4!O0~Mo?erqOK0Ic{7CIbLXS=wrgJKhOmb4+(?-s}_-uZX}`emp|ox_g`0J#CU zzhlU;j*{!lYX;5}B!dqIpcVcL6k zvm|OpT2ecm-p{hucoQPfFz9%tXel6lIP((mJW*N}Me;Nu_az(Nw!y7$AMEy~p%>#C zi2M2l#Ic2wjhnHYrwklv_)W!vGTd1*w>^^kvY)zpx#x`-=tc7rM;|P_@M3_;6HMKN z{btLxL3?Kd>-^D%=}sp3FY{J=9fY%#dyO?6>b9vSnt~rbcqeWE%aaL#xevYwvHO_H zzNRsy>ep2Gh&@X=`T)EHpz|+#`M6z4;+|EO3r_7^PLYbVTD#ez#}C#09JSwm;1meF`Xev0)qK^4gIv&HF_z|jX*ufJ^ z=Md{*;=7riX4CvjLn&6AUcB%3X^$pA??4f@Y?pT`HIpu6>wc;i1XhE3&koS)*(&c+ z17G23w0(Om`A6w$WGdVida-(M?Kn^x{mUq9^7DyEzbIow_$sIQr2LLfK6dp>k>f&`RTp0^v^YGis*rBhK z18lw!h-J1Y3(3#&=CSypYQbkLyHh^j{Kaihr{4+9CFFA{Qyu{Yl}(#;Nfwl5zY3RW(NFL**FTZDvH}e1{Q^4^A@|Ge*Ce9owM#P9KdNsltwCxBIa`|cEnr0cQG#mwjwY5*qO zJs?jVu2B$0=Jl+k-n3l4&(L^(y1Mr?T~?`Yu%_CR3gTdUDKvtyW6yC=O;@fKIjyX@ zxb!<0=FUj7EbAD&^VB54DksdAb5@-<-TxtZ#?$@dXygVDs*WKOyk|(dY4bTPnr$cl zoX(!U(B@Hm475ed(&Sgp`nwi(5VX8dvUx`on{$fl(oDgFkRPN_H?Q;DJHhZEiGn}b zmPC;`D3|ilb(iP%WB-a3NU!slV)yO|13kU0!em$Eo@9pZU7O-_NK(Nsy$4B&FSOmz zk2pb(ih`lfy16)DnN9K%Cmpxkjj-7*cJwN{f!0#{;aOm*PM^5bl(dz;@td;e=KB}N z^CN|7Da*1H{=17x_KuDPWHj{a=coI6W@cK#H8qeUN8y!Ki_X8P-y z`F^qCsc>+L(hN!1Aw^8>hDn`D5p!{;dOg-7O)v85clKVhubu3%R`093K2Dr47I@Z_ zY3G%ui)nbx!2g2FjOeOM>b#PzSQbqAdB&b=-{K+GW)juNLiobtbq9%p^WaKJGmQu* z@b|2NdCbz-3+<`Oo6p@bUMU@}Ob%gk*gU(ZQU=?JqlTjtv4q5xeDm)bvf&Sa-mexZ z{p_bI=X3q?uSm9AW|yiVrntqnwnMW*=q$%H1pzmcJmF{IayaNk1~ z{B`;y&gJ{iG9^?F_c?d<9fy{e7E_Iz1cetE@M%)bv%tOH@P6Z}U`*JxsGpEo@P$qm zxIgvtz;3&yT1?U!e&WKKn1gu^J4wb4yN92?eTyUsai5@=`R3Y&^O8ETiOT4u@tQE} zUZe9h8nKmT&_yrg(%+h(#vS@L6u(y*cEdrm9wQi>r_X%jUBGF-8*2pP1?pzEmr2Tw zl&}ZWaNpRha!MQ`%9xnTCop{Xr+|&@-0`1bvcB>8Z%&_EOY^_*w?9boUp(;t=M~)u zK|t7pBJ3I~&fpWYD{9el5lyV*`K-#x8?k*I(6a0G7BYyzArJ$^D>jcrn+@ zvN-oaS%#5>v}D)Ess<9(RAhYD3%fY)t030*0Op|UV-^c^Z*WJhTnOTn^S|GHYoTkA z$5j^uzb+CKS|~{NsU*^x=Rc1$#0F2R*N-^=IS;aSHxwK?9J{QVQI@k|O}7GZe(Haw zCT4P))mQRPP%i-a^qJ?U4^O+fit7`vGV;nNI^~%i~I%)j% z(b4Dk>1!Wzj2%+8CWe{s=R|xzXVEEe{LK_rHCrdhYOe5L?5yVr9hsM@woK>iI5gw5 zILf_jEj6AgTBKkXx_jKUJ2Dz*^k`PJ{2fMvyU;g>t5A|XS@q=5U$>`ZXZcxrD|~!} z7^~B`q7B~E?b*!5n}3WKFF%!riq?SS?cN?6%PF#`jvw(KaVVZ&zKuMayzS$vEdHQX z=gAV_#c&QRrAJDH_NJ^EYzu4I#}0X9M@+c0#u7E(MdK&WqeaF+LYO~50cQzB)!Pstbd zN8p2mhqd6}d|$J>HYW+^Brex0RQ@#~Z=p4rGIjpOb=wbLf5N1o+9OuP#-4t8UfOU4 zvQxmiA>9zXeGB$;72Y9at#h}0PDe{kbnNMKm&&39GR}2?4oZ>+$$u`kyUGUX7;DYr zdgwHgTnC)C#T!t|yUJ)_l}!QMwB0(TC$h-ZaCct7f;m*P+lTW`CE19sM!V$~bk{jx z*t9WrlE-yh`Sj#~)h6K5hkia&27ijMU(i*GCXI~kBGmy}K2bulPxm|jfs@?%E|DYU z@4z+I@x2T_@lifN-eV^UvGcnWP3d=KJt*FfNRb)MW@)1ipY%Nu<_EVWM%?Eb=46+Fx>Q zHuy06HAAPUH+!}TQE7{?Y^O2Ziv`i2EIaGbA$68`F`ldEcvuVQc`?k`5!U47?*5YE zlI?a5Cp~tkOd0FHFje$*Vcmodh*r#Zc@2mcgQje9vHf_qNbzF|XJFNG&kCaVJ%f8V zj)_9Un(xc>{f znJvW;i`O16>#VWb$>PZTW&)bJ?OmIAdxVq2&Gf;nbcy=vEa%3Ygv|NRz5#Y6JcM5# z>Z^VPe@r_YLQJJVfu3xQGO~v}Rr0nyP~>wjV~@#0J74fm@-{iS?wy)bCzBifsQ$N8 z@ie|E!T6uqNE)?65bWj*xQ{%+c?hy!BP8LTSLsNRzSJVOt<9vM(h_jHLxtcyxt+AL z=10)xG!*h=r3c5QZ`KMK+zs_7G8zUTMCXFG>fCczU8rDRMJOFP?u`6&mVG%|O%Y{B z3(8-x0iD#$sTcnprL=9sT1$$;ys5ld{YTaLCo2%^TlMBVV&W3MN^XcZXSb-wtx%?ikHhfa-&Pl2sNW3l z{&>N$|MQCr(eCjwN><_0EP* zjIEE%$6(zWx{~2ut8+%mNroXu6mZ)HHsMb57Q43~M{;F8nV+kF9rF0Oft)r3pX6)} zn#40F_w$7oPG7I{A!E>EH zl9>=`54bZUd7pX8zEi&0t`Yxn>gQaM0B=&(T>7uNlMUK~^!O<1$T63eTYl5izt4N! z@G+x@`SfY)O9mWEB~>~@v}AQUd$$pna#lzQi@gk8*lNu`{g@W$>?pB&1Tr27tMm1C z4-p0KW8d;c+2reC3JJdln%&SLVIb*IzgBTCT64r?z_G|o`gLjrQ?gnht#5dMEcCrk z3#a_m{F-CcqBg!spy@cOqJ9qV{T^*kv&LPFgw^u2*4f>b$=UA917vm}CF zeDUjjY1;i^@?cPzguU6zWDGq;r&O6Ae~#ycek9X@Sg~>oe~-)3)WX8AkdQn~xfu)} z5C7PKKx-(TtE$_4b4o7Kymx@IDc$8<9TBuMbC+a&q*@`**lR&5ORQ6OqF=byT17E_ zif3Kgy;W4k=8@li*0*O5M{sj)CD}U3`C!cqmI zBLKNM)ILlXUR4D@IjGi1Y_Q?onhp%o%#?bxvp zcoDH9r!lQw#vfcKL{9pg!A`yG{1HN|JD*Br9w0-kvwW(gW2-mZ8Wxyc;m?f$%AwVW%(%>eq0Oi^aoKn@$;OB+lYZV>Z%UTkPeW`7T7Hv%j0fGXU?O&sj`gmJiNI_o zFhhF>)a%Vkox}#B|KkoDaUF)cm^YpxE6eYAQ6^&se2yGb?Ro~8y}U&m=|bBF5=Nv#Ap?46^fV=+hb>utuwMKGmvI{mJk84xBmV=N$Lt z1~#~`U!1i|q8p8_GiX~g2ySC_ZX>faD9eIGEf>xgqeueIq0U09dJIwV$eqNVlR&gQj6Wt!NEZ?OHdEeucOBQIQ6$R9aR!AeDkhOMl}sVB-Ui}rr?3lcgB?<%14 zXNFEwzZl|o@3h=nK10w<>34M@Rd=>ojF7SGyuj=t3|T@>902e_JN_%(fmX91dato= zc;)!jpzK_Av@<cs;}p*cXE-eUF|ZyN0aCn|~A! z1K$^1|0F9z5$IA6lAC)2lo8H?h&x#4@U zN*3QAUEf6DU;7!E=O0M>-#-=IC#Uv5P#PTP{|yn!gZ_&6xNSHs%mACLvj_>%2d4Oc z(6}jMrg>9cR^zxRc?kdEIcCUkMd+%XUh5@RW)|i@V5tYz;SzhZPDUGD3;RD|GMvF@ ze;_p(F2-dF#BR`K&S1U2wqVzi+Qha=(c^HYIZZi zV2f#=rB*AsLI@cBwxB57DNE_Ssxn%g6^4iUXmO4mU3&|H;F_p|F&v@SYhSd{&lhG+ zi9S^{s@iPQJN1tWb+!6_?nci&Q5yAqO*qS@-rfg}w(Es*8a3xqVjrp#F=iJG=~YU)Tkwpt!br?@UwFK6Gb=@h6OyVSXvTC z7A!h#e=~1-i1hKePDI`Ohx1|5R%Z75OLA8?8cSXbTWkoQ;~YMfdMr(StUFLdxVYm4 zc1OoQvVwG;u)D6mX4AD_Bp@M3M$c) ze-Nm=kl-%JAFR#8%}nLrlB0Fog9ube?U`*B*zc+77i`u@?3&|Xx8|)hZrtjOvT-8y z=NXZ4U{J|istMxOHO_gk(#jAuPuqX|L^O#KfR9YkZG05ZDtJ=Isuo zDq?VLT3`?#P@|Awwbgu&rV@QQY1)we<+2x%Jbp8PpBlowWd~w(s4%PRw*?g#-rm=X zRjLoj%F%5Vsg;Av4xo^Va|&L_8a_{2R1uBR-rmFrvRIOm58xw&8=zGoM2q^1f6xC5 z{je zn?3xEB}&UvKSbl_E2Rog1Zt+& zIS)-W%C^4d(K&;#_Iwlm?ob^Y#$N$0hja~$Vd1J%-2s*CjSm|nm{^-^NS=c@REhRk zaWWF55w{8m&--OHWTP?~?0^4zk$bLZJjk0P*~ zcR~3FAV0^3L4_NW(`&mBY3F@&bgw)J;tL)Ez=9hd-urmTW>NPwzY)EmB8W!a5+8MN zym3gcdmrdl)vzvlh~T@)s#V}ZZ=!xBIGnqddfSfEna)g3TIH00iDHAI$9o@QIpf!t z@u~~ERc5^b0}MtlVWor9PZT z&EMN$W@!wq0l^p-@#|O?=4=64wQA<-3-JknmV0u7{-2;#WqbW@6hk_h4IiJ2Pj}sy z)%oAeV7tDz4~xa4`V16zcuD+&AQf_nI5Zy3{uwL*o8s!wZhIgcy1ee329nICKth1f`He2D~5>Gx)|`a0jT6awg+k;%Jr z$4nO8%5Cz1vVm&B3wid4~OcE>mCrwV$S10~i#;(gaK2nO$+tEfNRj;BE;) zQ}7p6cXMgX?~;7({mee?o(t1bg4nxQh6a6;uj2!d|6|OmF0N0x4B^(=ZHfK|%WCZC z<9yEbw{-dkKQbjYGK`+Is&PW+DR~R#`Jc2IljshC-%xJ#2~axh$zIG3a*Pj-RRS~? z%wrhf-e6Ie&^a9EIa(83*7b0g37xa4&!fl6=+uZL-c{=D7xz#G_S0W38Nc?%Y7O#D zplp}Qm&k30#?`p%g5v^n$(jIGrpnD-zK#UiTue^=tBhO1o&%GyIu-rj#k0R;zI@f2 z>oHh3dl-wj5`Htm;*;aUh-%wtH)1$!eb8z1U0n8fhP568ekJ?V#0x3>evR39we3=0 zRlDk#i_C$UTo=s5$gQq*cYm-(*R)4P)IN~umJ5rhCu8O{j#3(5KIJVX^~u1py`c5EILLCdZI_COHQ8Pq%)vA~$v` z(dnVHkd}MDc$5g%VxN6&IyK|Bi*>91C~87j8taWOoGKqJEcc}OrzEC!Ft&1$w*5=J zg@f}qp5?=ao(qiN{#Y*US5hfbDVGO95jR}rHdk(Zc|IGox!(-vZ0hy++`Zx)DXiJE z>NubvSGS6)QF0A<*ef3Ctt3NJaf!c1wMd_MJWxTiIbXr!fq1i}vBy&O7TEL5g@^pjGb4l+;9JlBEt4?sI>b3B|io|o?8eBA&jJO zarJmB98Vo?2k(nwr+9q!^*ZHU_e4RP4HBLpEMDgMWe#x+PoC-@$SL1o8j!^@ulI)v zpto{*G#9h9yzEY0Y`~mo$mL2)*1^uroq`>E3lIb`S=Yo9bpj|q*Bd*dRk%6cR9NrD z3*G6*9ZdeW`!W^j<#nrk(%3xvW90J0==e~`qegVMT*E=-&8@#1 z-8|DlDQ;sZJn|O=hYFY(uajyE!^0Uo#O~c(XX=PsJz;Qz#tv_PM*-5OoF$#PeFsYc z#Op==wZmGWB`3ShbVUBOBfP*VIU9#R9D!+g+oJjAlWG;#ad#B#N_3&SqmDe^E{B{-(;dVg|AJu()us3BegCic-O|Bm} zP@TxNdxwMl_}F~|d)R>kC))S_4t7IJ?;SYc(qeeyy7fb6>Lhm<-z;L2C3jbov!}q~ zMCrNMNnVR5uL~|bCyDEDNz0^So{w-~ek=H;?!o|nZ6mao(M03%x9X6}_q=w|zxtlQ zN|AAP-R(DZ&%4C;@HZZvbI2G4AB)ZTT``cd@DA6Fu#b_5lO?U@P+F)NTc zW#Vq7R`r7?iNCUM@6VD$$356P^w)#P+H=?8e_bDNe4MZS^IG=$kjT&LjNcb{e!k!M zxAmicUB46im9cM;{W5*(2=m}STpqZ8?D5`Tmj~V+`43dTz$>J@^{jTPOs=a_Qe4Sq z9x-o`rxl(9`dQ2U3kl~`Uz=%pjlA#D3x5O0T1_Z8{ldh4kCOBJE|#&dnz!rp<*>-Y zOrmyu(9aJY$Wc)k+S{cKW(2(xphwZ#^0BS7guT5@tU9_I*_V%nFJ$380_!d zAAjfS@7oV)>q5$xFffnCHE1B}^07@#G#YOc-iq<=fq{Qo^nQl(3C7@Xv@POxSkHxR z1c`Up{}W^Ii#XtB?8rcHFIF2E0kwNiEk}5iYi8-0O6v> zz-={|GmxNwEr6s4qTYrmOr?S8dNQx7O@Z`rBYCq^6`BUM6FDbYuC*9c9jI!>zuv(C zjoHlHU(x<7rmfCg42c2b`X?JZ&eAqL2|D=9QY`doS3?3r{~>ScSe2vw%-4X0Iu*_yQpThcxi7=gQz_RiJRUmYNIK}uFWt^ORp`4G+c!A+b2tL~WKm)bq0F_br~2zAdG zt?5TjxgR%o69sy@Sy}>o$GQ=mCLfAWO0y|l!h>3yUE+9_Z^q=VE5w0;z$Vkipx|SFTVzbLosTg*O2i=f_CJcHh&>rt1#N&OQO-h= z%go0#Cv)&L_{;g8wLFKa-kQ5;oQ%22Cojdjq6+K6eGETdm%hOf~;4n$!gydcJ&8@_{)|+k55$|D_bk`p47aP+QoePffTL(D0MOG z+xpMGowin^UWcrVaeE|}dO3NIyeROZ2dA!2E5V=6+t8Mb8Kv5UQo&G9!@gh4##(bBf+RBfvybN5$nkw(MPmu2FC1)$jZ#pAYc4|lRVg)>@ai;H!NSPX! zYxW4zA(FB~V0Bg+OQZ(-!CSQH9J7&GRr;<{dFQIGvWm;tn&vP)K4h_TGvLXpiHy`I zcPS91XHSJ9)4f|#+1qLf{ZzPMf)atW+GQJrYO!r)R&+tO3R^dPR!mo(qwjJv} zDhWEbm@B_Xat?WI&{X(@hD8>xLc)F5ZOZu5xP4*A`I--9d2V!TA>pH+J|AQF!B}%N z{L-d>glp*ezl{0NA=Q_p%v%S1n>Bv)*89l$jvDVE z=%&X_j^ALY%|0`pjf*2mgg$LDRP`_ZrK=S!qyOYH6x_Eu6-Y=NZf92C6oCm@kXc`| z8CH%tveh;*C)&(+3KLw-eu%6~c(kG$fEK$YwNq&u*eYYf)!hu*`BgnfUt+j{eRT+mj4NVhZ6lJ(6D7)1v6Wa$ zUMz`STkeXP*?9MG&QiC$|5`kvX!H3-$p$qszD4HFag(uGi6(_fH)ifmwiP?O`G;cK zq@cclo!4IX{IP=`St zz;F!9@GI`oG|d6}h%v`7-D{-s#K_KmTYJ?K3|7KCvN;2jr;wP8UgxB&#Ki=a@F6rJ z*s6-^mr#HV-kR9WHD14#eN^VBDRYPLg=Z?YZ&z1At z{Qm{%&)+%R{%@>)o$mNs?MHj)%!fGHk-bea%t)dyE$bCsE^A`|>eS)Iw zA`6|$QvrXboGQHQidy7yQD(S{$tdwIVn3aYOu;Gd9cAowM9Mx~HSw9KF>!N1)$Po{ z0v>s3z+Zm-Dr@dtVLLz3y6<>$s3CF-@KTE%ZK0y7@Sw+cbENj~LxPwQhguEo3FDL`Bp{;G^#D{lJI9JBy zMhmRx#hjv3pV}eH^;&|1*mP??!tzIxFB&X_F(IaCwNdSnr7uFRAf9l{FOc-gQW^77l5Mt7US<^&s;WkE+pC+vy*vSA z8JD3|LZ#KXgUI4;L60EZ>SBy}|EqDvUc(_vs=H>RKcb#FP+snvU0kize3t#a_YuTc zc$xBvoN_rhB?h!!s457j|Bft1FS*zeCyhmo-*2?4c{9nmGD6m97{Gt++~n0c9jcs* zhf6m0!NZqr8?Bk=9lQ6Z`hrYr*z>*mdZvDqAdcJfgAY+PVA%PMi*98ErHaHdjoPCH zK^+3B*PH~sFs-(QUtO@TwOj3r1i;$KIA(Jo%P)&8#baG_d2L6s( zLxGXD9BN2?wY5?}$)@Z}4p+dytH@T#KRZBBdfjo)471U2ow}-hOF3dQrZ+47vv2G` zdpsdvGnBB_0}zCd{=SGthg5!O;R`KnQ&O{uA@3G*<~CGT4`71r&0_|+Jn!B8R?DvM z0Pc9Jwk+~aZLEv8^{uZBiou@*a*VoFpZMdoaYLK)awEDdb=x>`9+=>3#kQ(nJm@oK z{pFo8^kMy^nyFwH5tZ_hE8AZywA+TWvYT(j^~-D9Z~V@JC2TwI->r$(M7g#m)+ljr z!i@fzLcj!lXjmUeGM%W#HL|^mwvDcKh}9r^yyQuV@4|1~bt~s^t$s$|)JT_uj@*;K zp9|UBH}v$22YM|pnmvq@P@COgYldg|aG64zhFikQ*3xh1cb$@Q9e!98-?cCV%+ve$)o@s(p+p#q+yZ_uT# zY;il|tdj6ewazdCdm6)s7DqqyKML4fusa_XUM_XwgyrX(8KAx>HCsSP;ocjZh?Whn z{)v%o8!|2YxgZNIbb8b9XV-b?4Us=#Oj!*js&ZyG0)nG9&c)(^LH&fo{YJT3j>R6gJ^G!ZyrXW4j%#)M)VtlNpHwO!_cmO#({c zVO8rmY^XRT7!i~uPSjd$biBxUeYBrm(|QYk34jWjl=3NK8Mp}VIE9l@ti2$8$n6>O z+w}e9A9v+nu3e|t&;D6d&W8x*X~XpXM)x9lb^iNk;D3?7dTr+Yd0G?~BJ`*)hB6c* zq9*pUdH2=UDP)&@c3`;~aCUvQNAG7Ua&3^VsAU%NH}Ls?3W)v}nc&~Uxj%WU-t^iR z&XuXzR8#aLtvugdaIF8gXMwxE%~RxtL9d@inI7BeUASs=elwu6D}?Ij>T2iE7lF1# zu{<-(khxv+J0Y^q?7vksJos``z>BrBs#?oiGG7IM01oMXVNY&w{fY<5Ee^s%jIUn3+O*MR zLHeQ7I6AYw$WC*KBRe@TQt z{>ay$ZFtF;|H5A#f4>}3*@|-xnFyW_t_z(vO@r>BTVDkXZqKWuJz|`nm+%ONRj*_# zyEH_=YW6l()ImRL_1DW;vcnQ4CSWk*6G)EG+buji)w&A)+R%np<=HiFyZ$7{Ea;A1 zG-0I_h>zZ0QwK_PzVY@!p^5C+cvcNKDesCvEuja~?y2*gq{V{KK6nVlwZ}C6s*8{_ zhLJ93JMut8KYGo$oW5jQn@F&9K+9~8CPomnB^}Bu0-Fae<7YtuE{{h;#6OOvGr;K9 zJ`lnUQERIVb}oAFz5(}X48R%Das>O{EcTK|{B8kf%^-7EkZ3+Ef9eg~W_qV7n`XS5 zj}CCMr#c=c5g$<$N4=_LWPQA91t?kG(W8MCa}WoQ#buII!`S-bH`4g_RN;h*`-FR$ zRR4WJ_9%$7^1$&3kG=jZwsE&8VW(@j#$GwAuVgi|()RIQ13ainw#74lsx;hb@U%u* zI5)Scaa?q3C}yrqVp;3((G%9BF)veNf#|M2f%&9viu&{GaIE`WiS+xK(}~?#f*d^d z@R*A?CLP@_{SdhzMB~Z(T$2|hCN*Tn$!gR|>kdDsJG)Z{5;Kz-sqyIJ^Ins>;#SFD zaud`|PO7{JHJHeg9%BpuNb^6W#bDL^bwU?cIcj$adok9V6{(7Tr7hf{*7ug6xFOeU zsk+&u<6_%|@W^|!mHmXGFP4)qV@$>6i;3Dmn(&}6tZlb;Ej18m7NNl&G6HsC&0%go znl5P7oCaKkTpzm@n;DUJ`t!p&X6%+lQ)v9?C!^f@Zx_o8J}zcB{NVzU;Q96Pmp5iJ z6WpIYJgHlewZbx`ujiO=>Z^(x5x)D2ipp8%OK|5|2lyzub6sxLf zldx4sr?AD}kj0&1y3w9CbB@i4i|P-*cd~64cn|XR*~9ppS7;;T(v8gg2kw@31wn|| znHp;V)B)b2oAwY^q-T}Px0;sK-yUiFb+%(RO);dj1#I~}?St^S?hBKeKZIw$34mwY zH$6A%UjpY-R$~nyldw2NKyZ!w{N<5$`$ehJW5&YRQ(bzb(CqUIaF4`#2a06IHs6$$ z4D3jg2Cy(1Q05yRT=d!7DB3b6bZmWXl!46Q1F1?lxDkRk9Me#@ka0eC(S8akd?zsB zZ`fYzd*k<^BPL-V?Hj&%mzt|wLE(Shy|3F^OL%@Zg0duEnl>gh@1N6Pu>RM7D=SKj%mJ2}JYX@!enO`uz31*a;p zK34lG9O<&#Vt(~%HDfPlhfbXs!B@fI^u*`GsjHtW$1^v};Ve70K_|k+O>TvkD_%(& zyJAu1)0+XYq(N}QRm$pBryD}zAA0B73>Xt6Ceq8-bdf8Uu;Q~7ql8joaf6o9xEG|l zP05okklWfI4fscy%eCjY1u@=b0+J9vCT|4}Kc~PouxAUQVr7W@DThAR z0r?3`p;^yWNl*%5Dd7`$* zla*U+=Q#1dZnfY*0?WUL<-2{`dtoj1uu%9=9kS9o&B%sy)hp7E_b_KVQwMRP?~TZD z>(bI%Dm&bpu29+|K$mj+8yR;UbF4%|HD{(8Z6xUnkd;SMF`RjoEWyWjP*GUzY$UYzqHW-5(#uT!hDX?5TS z(aB*ZsPPsZo_VPCfL579gOYgFUb6qTt`NPdR#`1gCfScGRbAA+O&1^)d^agw)7EwJ zZQZ2bLI!=~QUHsOMy)yj8Cq&nTO*`_jfkIW46QT(xNwVxs}^=> z0zjJT6Q=5;qpRk_ZquNuYj1WMY~Q7pd0Z1c$7z>`ybODh-N(0-U0RpM7gC`b z^itIAy`B%~<>l1~%3I;w3EYF5!LEfX5gH6;q_1b`Q14>gGA)c12)n4YopQm1+B13A zcZpw864%t(+zujx=TyE!b``o!{XS<^xv&|W6~BO|bFx0b%Y-nh)+e%aY_iq-ZCAVM z!)n4(!W25{$L&HZwOV?}5Z1mhz>??O*0rM_jxN(v#CmSsDtWn-?$2)o?S64Qp66jv z#Pi~$6)*BrlUs7V7bj9~v(}Wp}U)rmNvo$Nj9jq$H9R?#+u~_wdqRXhTG|{#8)NF9G zH4m~FVkq$b`}aq!IMRb(mCv0Ail}{-`opZ*PaLG|pGYiSG>^9dDF^YazKPgT=3EwP zeXto6CVQcf(Yod=C@C~5tEByGcJ%nbIgyv$3~a|vFCyt~((|u}2qxbCOA_qJVvs`} z=o)xWhkVQe8Y>JLKm>w1uHBuW6lX^9p8hpm&txqd{ru+pz@7SZ^lKwZQy6M71KDxS zF2KP-Sk1qpd4f&--;Lkf4^Qx-RWPG{=w$mor7z(7^!2Frqsx)3M?6~hL2jFXJXQP& zB_%1PdRjg<_{x1H71zgmNTW$-n(h|gTRBVL;ft99$8efhu|EbIaW1Y6$MOXlK;Y%& ztK6t+LZ5Rb@Ja9|f5R}!b652@72?T6?K?&-E&8+#2fDhhr3=Fl&<-DFb=6 zI$XZ=@-n}&l7#GXx|3F^N;GXGYJRt#7m`zIcq}4VhYoT_-ckHvO7aO`rA62s=K6%G%( zy1F7P9jd1ef{(K^V%@nTSrUpaf`OStc@-3&_?`lm|?GgAcqZyvE}(U~4mWs!rtFQ@%Pv1|J`)LxbZA^iV3) zI)dQuHs?DQ-Cd$CTDAnF-x_=RE()`8&np5pvxdt}uT#UyZ|}9P@z4yQwn4Aj+l&c8 ztccN3(8JYxZn9w@hdls30`|Lntdu>iiyZ);u1QdJR-k1_k?rTk7vb`C^(bfc^4ET7 zVam8#lvbLCZ83zZ1FPuly|uK}L;P_C>blI8X~AshTji2o2YW!(RR}kPKRisC16!?x z4M<-aD~hC3tan{xETU{!Z|Tqsx3x?5C&nBo+dlIiY)jrR$Bi!95g$cah%TZjpZYJJ zKmR<>fwY$XZ3&IxJSy&qPATa&-Av&(e^Zj8d^Dlg#^g%=MaV>&P}3;+qg7Tw>v-#* zuF~7%ZkL3@;r<_BZ|~HgYdeQ?2U-qSS6|(jIN~0%V^^g`P#(-dlueARn%}zh zVszxg*uFEoMEVZfS$!bgq+gq!CiU-P0N2Cs>MM_S_)2b&guCt!f#=w915GUC_0-&~XXWnG^>jwgNmL)EvYRCI96M(kk3$1>Ole9Zv*rDijfumm zLQecT+RTAb3CQ#5R7*yOgXJT{-BB}Hxm+KONN#0zM# za6pbdm{}i3>aXwC%eU@+jbkj=^5%{G)awj|p2GUIcEw{claHpUR}Zq#Zdige9_|k| zjsIfnTnulcg@%-Ui^0&Xka7cyYdp z(*2@Zalyd$z~O(3E<(_Iy-Lg;~MPP!?LCEv8qQy&>kYe9ATeDymTS5dO1l<)~7g z{M;@%@cZk1qMP~gXUh)cg#9PvTYqO-@t>&vM&75l@AY%&N{2Fdhy^^_{zgCTG3~!V z#A5#(5Gxe<1#(LK-xP8Co9Vgh`!4*?@*h&L{U`46KO&I(J5)dXuQtg+hr_idxA3PI zKc1v+O$N4Np?RY}jq^Gge#q{{(fwIeys0{$(SR#eSC7O6Tb9#nv#hMKvGr<i)!A=hd0O3lNRMDZrW@R$~5-QILX?f3PEQJ$xuyhU1~tQL!NX` zpwxvqK0IgwMI>}5BLrRBlv==a8JEf;VPXB=#{nde&xS(HZUo*RDQ0ArID5Kp(y|KW z(Z2`kc6KV~rd^<)JeHO2f`SyS*(Q$ohF_3 zGIV%r>cG~|-8Z^6)t00tD%o(2t3nO$Ggh-}8Kn_X-0x7p(VlZ+pi36$9y_?dDHDdf z+~(9)^U&#}h<&VJGA3Vf(5vp#`wjoH(&E96n4Ego%xmGeU-7d_o9Bz0i7GzSUt_`r z$-dKCx{z)M;sc)}=*j!_2!}gP-v_AQ3-+hS{hAi@y_VjFy%LAG#n2K;T0SHW8v{i~gT7D4A<|`+KN31l{t#5X>X2rNf4(-@YxTc^ zI%)i6z>$T5HI(6dTh7q?=U}O-SARDvwcbRQNK3<`(%mM@%IpdCuX8?C=ja6HYZna# zLNwhdWqrcah> zc?$MzK{{aC?tX?(n=Uwpe!TUk7k;6pc1Sx2Tw|R{e2~v7HOSYp8w<{7*|E7zJ(Qnq zSVK;!PvabzdP-R5m-DRy!tInM727Cy6<8<#yy`U{lN9lC=Klwm;i%do(#4 zr?X|M%czWwCZUnnU&9pQBr*RfZGLDL8&e&ejw!NIOEejB)XG9 z%BQjoZ8qRzLnEwH^i7JXXD5h4JVJS;9&ie&e+n)*&>F(F5W#K_P&^}CO(E)iM zU?)h0;F~@-`TA*uIjd7mrscgRf){9{K;nFPU${5XAC0bIXezu{ z(~XFScY*Sfe(w~6+zG$fX@=`KDX96NatTC*)$F=|k0^DP7Ue^Q1tgyTw8;(GW9|~P zWbj3Cl)4C}Fp?eTPs3JXudhXK_Bs}1QQA7LnY*z?iIzzBBB|?qQcG)JuBA3v0zpI{ zukIqQUX$aO>^8VC;bi4l=Iv<}?7p(ZBke~+gw^If9A04NYmVSJ$CjRZ+dz`#dH0Qm{)YbwsWRati>NfcEcZjvas6Qs$Skar5FVnU{4v`1PhVifOw zGib)uWonf`6DM7ii^)JxOt&q&mXM5Jp%P;!#dyT^Y zgm~i#nV1Oss+V*kyfduX`{*WH4r^&y6>bA(T}mNp>mHkniqR&5TPMpkoyAOIZ6{-I zf*Li8O5PqZ3B4k3`>yB+R)e#=r{T3&cQ~+Y4XN7ms7WO~kXuNM)i*9k?1W6916mTP z(qof_GxYBXZ|We0mCww8Jre}g9Xx`-_|*g>5?SXOYc_ZG_7;<2FmA^S4w!jW^Y$7o zxv19-R`>1AUl72FH-YDpqirR=M5SHMF$w@c$_Uy?=rS*u`mqXS zW8eyE+h}dflfJwhs5hvL%qSaWc!?uS3vA}>$PeHYf3^Dac+My^Tt)Ykq9HBKlR0th zsI+xWqYmAs6+t8$Zu63W-rBz}7);I`chj^ebvsM3c8$iU!#K7WnHQPPVlPtbwcUiT zjY*yp7%JjOyj0ugx_C`D%EmpQO`E#tDZ4_70eaN5_Z)~f#T5ga zFem4SgK^-{-CBaAwoHDs%K&lG?ELCU_Aq^G5lyi1kS@DZsHdN}yeST8Nmo~8O!RDv z$h@rV$eIh=3r4LM2WgJ4=;Ap;^e=S=Hv^JQ7X*5rpH4iPHmcob-IgOO&c}9K@9ce8 zp{rhWRNB%+LseMY^^MP!;S2)~v&x~PJDcjQrioAD?{uD6cv$+df>_@5B;ItfpFp|J za*rn%YTlndeEwIFH$=1aB7+lW@G`2ncdP$4Y^hFhoS(B8nGIAJ*nnFhRcS3YfN@(X1X^P_618{ z{Af^}V=$hbI{9M(z&2__&8WP)zW6%g{<6a>^ytpHY#KK0zJC+qQ0QrRv+9mRk4;j5 zMTR0?!{Ex|(+{W#QoO$oVP2e{gU?`j$!FiG<(SOvPG5J@TvJ0{q{3O@d>W08M|p&; zRl?q#*b>>AK8yqgy3jJMsJC4U@4Bk zOrzd@Lv@_5s%~}^%Z_u90R*nR`UP)Cag!sW-fMU_U35+oFjZ^#e}yVDKudv|gpbmz zVy0>$ahqWZ46LCEd}Yb5Kg704#YN(-(c|b1E=f-WFY9B$T3anr2r4>O{^eD}ue-;d zEQfPZWvvIGAQ5QKM!xDH00$aoVOgoR!^>`I-eK|SJOu-{A3uB~D4OD$caecBKr`qA z8#6iJl`BRNE{RLOU8V*ueazgrB(y(bd-C54Oo%cHGvBdN617oC8;vQcY3QrAIR#|a z*=NE+LX=ceEd7MJ>#L-_^YRiy8U@=UZ~Ahw64;ApRdDYpF9mLo4qv-;wboH+Z5~2u z4JMh_IgVPFHU*(iFi)jAzx`NAR#cZ4{9ON!Xl2#!11E^m7t0B}dtu&vJ#1TV*2Bcs zeMQgbp?8x)GRhe^c%ya6(GFskKBufKJA9q$k{QNw-i`?_YADBBaPG*;>_kbSCk@}W zFSlFH3Z#Nb0R$yoJcyN2nb6s9W{$F@Krmv&ez~DsSsd~C8BOcMLK~k78Kbf^NpC7F zMszn(%DktKa4<9_tx?j9R+CF086KptbgfG-+Dg?#P!?teNY%=x)}f{5ghZ~U>TtHL zf)+ForuE>*2a9hO)2=dG--Dasl|5wg=lZVWId3Xk6G~`3o|@X%kQc})_vRc(L*rp) z!)vMO-+*sQn)iMNvT);UH=7AdS=k?N=jW3Let(u($`t9xheQ= z#$0BtLVyF~eC+e*4?v(-YNPIqGdG1Id|8^lH#a>AHI^Ja+o>vU3HZrrRX1nVWlz}#aK2~ zsP0fMt-E%yNSZcfy)7tJ7jiIVUyF9G&-8((rLdmNfTS=?yrbN}-M82vJS)IyT#4hQ zMSipXY?*99u*0}fX&+?+lZ{ZimE`=`2}7_HqQN%kQ8vqX*-umkTu6(LPkefe-RCC;C=2&rUiXh(K_ zKKxG|_xr!V1pf~0`lr0e_Wq_U(jUydzU@C_YgHtwUpEspLEmc&H|6?i1>}^iUZTa) z+bU@#0whC7sGS7bfV5gN^_#=g*g_&Q5q7=*0{a{Smt2#<4jDcui4YW6Z@$JWZaR`W zF#@>#P5>~ZY@j^33!txx6l#X<>BsPh1cv;CE}uUhnUFjGm8cG9##xQ3yZ1BN&hu7P zh8V*4MjhBo-7tGUZzMsW7a@!^Gn=8crccf1z!>2Ec;&^TJhDT!l_Ka2sfa3lc+(B- zokcTipnU(SP8e~#nOES zf~RBFxCOt3HF34e*9GdMQA+(8xC_@F>K&Z!&y-NaR5G{dO5TKmtBIN^&nna?mw3o51qk?!{xw=eAClK$0 z97!YYa>GOos%Kjp^)>WcR&@%*V?H#|nYW(gd+!T_y?=NB*`6b!QF^n{c)8Qy{APTi zTdl8RhRME2;RqATTJd*!IDDRRc)-f+Q}{0@&Xv}cjpn4w z9*@tE!-*ymiQ?0fu!wV<@DZIf_+i5Ce<>3XK5N6k) zDcg|w0{;TMj2#br_G+=A68KmsvEJpRwoy>k1HnYMLv&S9>x_x`w)Fd-kUyxutSHn4 zhN%mraiU6twf)ePYPOU{J92*lnm!ij&9mJmko_T7!w3CaPpvDbY-Cw5ZR6j9Hb1M| z3b?3sczHeOdHF|HnksR{m2pBita@}L>il??$^~ap3HS1mGBpcvb42E8n*}H2*SD8} z0}}+1RdX?=qtnQX(o@oa%$S229U|vV^7f@P;=i+u?j$C*W3K?8GX<@iQJ_C~``biA zIznp20n4wdDk`>{;NYg-{ynF2RYeA_H&iO#V3eQp&Z+R7^ioKkWz}8Z0dcI)UxMAe zmTO+NVrF7%v&SjZ*JNc?TQT!Y>9THPW)Ei!N$cC9llTz1NHd_508Pm+AZ&AK@_8BF z5)>mh7fS`pFd`)&b9R)6Ja|vKwi{%Y7nWwlpR94rD3j`6T`Z;TQ4_ZMv;xK+jYG!5 zS^3X-R4M5>+ljy9W*WLj68UFxqft(ZtJ3&g+rGAsa^ur>}v1s1u;4Yx%hZ_ z%U1^*UC3=RPE5w8E$h`8lWiO|3lWTEY$jrMUbRhTAZ6wPrb~y7_YB8D4#H`KlFu)| zLC&y*h}QAo;wK8c(hX>^Bw+qpAw+Uk9=q;k4(Pj8Mt^W)WX<}Y32(j(*J(t%DCkQVaATzGtx&h0 z0Ab;J6DN1k$J4rB+-B7+zIx}622Z`zc+M*2FpX~<&Q4vhvNDMRP4eTKZysY7-FC~Z zR|oq1Gwn3cs5cgrHwom#*P8H@0bP_S4|XYMnEqo_2Tm>gsaL|^KXyKjV+r0w)6hogNS{7 z8BS^j$}CywVN2$_I#mHRM1>Uu1Y^S9ph`SC$1<>WfuXIyl&mD;Qrl5hrzB!L1RDKW zRNvZmCrj96V>M*2!L5lwg3#abz>9+IdAvG4CIuqA6vA(jg_~8)%K1Gm^$?4)2Bg>T z@9E)}QULaXr)MGt!rNtelgq>Q-#GdT{YJ)CLV-_RF$A6wuo zCPpWD&^Ht13x6o2-gbVt1w#`iT1hj&k)nrqv|Ul!gf2MNc&P4Z;T-4N;5N(3hW7xl%v^rPZJLrPyR=Ny~#i;MpS6W?k1;+J`2mf6($Yx`)r#g1qZ?IzBV|Z@ejHiDL=3}z&mwU&I95oQ1zmL z(7ElUkL!5o^dl#ruNkYu)7=d*EDktVRq@6}QX~k@CVE0vVe*3_?W_8ljD3tWn)N3} zs(`)qPDno&D8*j#LY(f^MZB$aEJp~oXQ!TTjIK>TG4CYL!zHN0sW`ZLFTM1U61DuN zil^nO)^FA(&F^qK%bsa(-caS;orBl)my|p%QJ(9_ z^w}W=73ws=m61iOFOpsE;8&k%C>IecCgJ&Ck69U_sEND5tJ{`gSxwRx=Rz*Os z8CU5STUx-TRd*=c)CZ8U!J+aFhTKAckdQ}K60^5Faf2c~g{#Jti{C{IZ10-DSQY4WzEB{!jH^H~M4{BqIQeo(w;&5= zUU~bpzo^)h>S%Q6sgzEKHQw3yk9 zpvdaC&5OK0&t_;kt$q=AD-mMkaYnF+@A;L& z!3eA54J@mTGuN^5$x$Aub6U5L?(&3ve>5u9T(#X_7Wk&xqPiM!lsWL^QSJM)yzAP) zrHw3+4^{8Nll4NHT<0s$>dQAode_L3|=@k6d zwbt-H@P%L|Z%IdAs3H^##422*)1}?&T-5I2wS~&GeZ5iuA3V+j-_RqVJfQAzx$BbD z;|@G&{lsM?cc%J_|t`KB$jsR3#?Lxsn|eS22@wB@8bvP_o_R+*DI z1pn}RC|ReO3rNd$O$Z7dI(PkBgQTP_g2@gfB1b!p?81I2yR6lQf7*ud3c5>1gyKgX za(-%$bSPQ!b|mV0yaLriiEY~ZDc7IK)$6b8D?DOJh`_DQ&<|UH@5ooe2Ruvx3cqP8 zDY17S_$cS|yRL{b)$f_+2kX#^?_{U~&a-`u3oR8XL15K@cKR>T`u%)9=2dxZ&Uxt$ z`rAn#tfYmnM<0gTzTjpEHL7G zzTgqq(y2!iy%D?-4TdD5XGDm5&nky%ilxT!7Y74I)6~lmZ&(S%q`l~G@wK>qAwJOf zlmmBPj^eeTS2HfC-N%+}xu{yMIa@ATIkY6wpp|GZj!c@p){4o+S{ODKhhW-l9Q+18 z|3Y2-+MsqaNbDnY>PWDSk)W#eRJ7*gD_H(DF*%2$%O*B+B^m>LAs~nZ$8zvNBfsJc z6taE!%;Z0UHtVzF>>u`d=QSLxhB%Ivc_C;Bb?SB(UtBQQbxgrxw+H$G?%y8=Fky-a zvmM&uIyncx`^e<}9DO0RJXqPy+>zuKPJ(}f_Wpcu7k3YnS9o`>s;f&c_~@%ljR|?$ ziH@$WPte0`w<5OSQg^47VMo@01(x_4V|Cd_Gfa)StUO4!L<&9I2dUU@^n&mJ$Obk2 zN6JLR|993#>)&T>kH~D+cJr4uX}f0G8o$qTmwf8X)U1)zM0Mam|3Kz=@s}RZCtuDy z&e?An6FkDn?(-NLIM9H{HmiEk1SRQoFO5|DZvr|W580==s>5WIE?cz3mqImsA-!sb z=bM=ey8i;rH-IB7^}f_Nw%FUE3~Xb26z6w0*gxnr-G5rs0!s5!v~3H}gw<(zJYDkB z54dvbFHx=zt-dDBJc9_1h{XLVbpIEG&KHYd8#uD|$+2a)>TgwJ)h?@qyNuj~n1gI$ zj#CW}xQ?w)p>M2`$-WSchfA9?_x|+}9a&hio`l$9dNtWR55_1Bqu4lQzPxQV_Fc~h zVc8u&>X9crOq=LkUyGAlsvR^9v;4`iuB{sG_R2SIh;|81 z+uO#iE*8gXFANp%AV|+52yIhW#O*10PG~j?P{Sad_t^sfI@CQk=d*lZOQncHSHy3( zUmd_6ThESU>Bnf*P$F})>QRnd$)vd_+`fVZa7MKiyS@A6dn3L9>N1cMUL|{8e#~^9 zm-;bDltFRXD4p(+Fr`ed*D5WLz4Hf=4sBZRo#A^8#U$eNw-&bl{Ig8M=KhD!{STr0 zn{e&z{}8%=lhB3au^ld9%qwW=L)I zj>0HJ)SXplB!+h%&N0Kpo^r06S+Ti|HN4GkK3~nj5H*x+5d_9qv7@BOLD6~Am9;>> z8}|znq#`&^IY83jU_l!Sef@Ezb>!pJ0KSx2a`m~O;%1bABe zx~i#@beu6pL1t*}Ji7k;$;$rGg+&h2eNg7R(HhzYWrfczN>H)LQ8qR6?5=2bT_sQ9 z*=+GE`$XcOF#cC2m5lH`x=a3t(`Do0?47m)tSn^io1Nq5RLs4skg76HX9VS3a`c6( z%p#Dzz>;rXRzP$F>sGYYgRkPV{N<>69f*etU+bmX{12oI_L02Vl&`0A6!w?nn1JwQ zz(EFE4YYchdSrK?{n2R`bh_fEB&XC%{s1TUqqF*@mBH$b7^9DiyG=6ZHoU^_gc5I` z1*vOISLiG79Ls8O`9o|#Q?$~8y!+)Pht<0tH zQ~!w$D6PC>dp41_&;moO8BPn$We{f`7`67TZrbmBJ#Ct9bsxtz9Zr^;GvLYv?9E3j zxxdlV7uY-Fy%Jbn|2$RSr!DVC(vz5w6>Iw|L)Xo*QObV+6%h17esbkS2<817E8oGt zpEzf&uDH!v-I$hB^DQqGjhV%hyp{$m+ZGS-0za*jDCJ&uxPt|WoK}TihtWL6zKG~>>jZ7w^I5;dO z>PhAGm+^IXOkp%7B~7%6yEer*4dVPL&^dTR+|3~XpOj?QULp-Q?)w4s0W(2$BWrbD z`eQ$^ph{rvh1Kh?h?SyM_e0ZCT`}YHqV_bKo7C*qftwaPQ;(|0K|m1NHb^b67Dr6q zUDPMPy+U>qiLvr!I^2v%R1AG*d(CTr?u6)5!rFhstQXFg6vEirgYUst+vW0VLp0p^ zP0fE-`$$f>t!wA((qaYHcPf)YL;C7EO~;e6&zQei769+GK~L|zzZMnydX#HFO$2t4 z877k{sv ze0DOncg*LoIy52_6`}$u>z$%s`XUPn{eP-C^S7q1JPtExp}1CYN5HCpfM9KiN?4^( zHUWhI5@fLzP*wriAt(YWmVktSYzYVRzDtnLw!w&LDK#<51NFWQD8*AGi z=9&I7&oj@=`2+5A?>YCLd(QW~@8`z1I&O|t-bl*_H@Z+ywz1(F=YcAv%8N#yeSQlc zZeb6fV39>;&Z)v!zAu=Ei*kVaXa#A*=~xUOY@?O3)Ll<8_@iIC|_^1G~rZ8Klz?(1p{QG&?o=+z^Q6V zNEdnfNLpWDP$W&VgA3x1)F z_Z*pQ?W>!jcF<<&ES~gIzgK9qCDxn8PrU##f80UIi z=NDS!1D}(zN#Xguz7JGZ!cO{`rp)Hz*+hm6aU528)7z|HCe08_$v;tSv`Tw+vZ85? zwJGSed=lZt*~h9BjI>DeS_GBOX4J?Yr#U7r!?(M$R{n0=%UDjt`@AG)-URbic=K0> z1lZ|aLqXfc44*l_Rehxu&o>jHYm2zplK296jzm#eu$Z|cwUtN1gMu{t86Nm8(fLq* zAg$b2=dD143dt4I(iqO3H9C>5O6BVfI%pM6xg`wJpfDtr)2IV`P zg!YtJopraTz0RZd0EWs@x! zhbk$fyL4;g=tqIQ|LxusaFqY8aCCftroR;{2_Y-Fl;8>*s3MLt^nxt5KdSqI(916f6l#Iv0p8I13JdQRdB-5xa z0AuXfjMQFf-VobYGv9wPwfcAet*I5_>AM3T{6IlbHDlLuUY$)mzB5QAC>uk#Q$9Ot z#aQnwWDjqUEbmOh!Ot7)pFW(QD{YbI4L08xLHwHEJ@JAS<~p_aXi&>IK&7l{DC9qM zu5N}c)LqZ&ezuFt{&(c&NLzEUJt0vMm1rEKKDTCGI$z?%esxZkQj8G<;B} zoml0OkUb-+us*?vC);8!3%P;qbg#MR*UbCBj&2n3kY#cy2n}&JPcClHiwtCpF))M2##Jw~`d6-RvQ^3bn0I!EtUWV&x(?$$sJe zDb<6hFkFnuAu}zIkMPy@jE0_&@3(O;V?WIV8(|GUs;KR@kRw2wiI1?yYZ?Zzqioe_egADV3m`< zHp{>?{pyc`sP;lrZt}Ekt8TbIL^^X%YdSboNqi{0j?$NZUjX^Ai<2_!sg$E@@AA5T z%F1*M=I~5nk9}OW3>>BaSTx$Z2EKN&CdnnkTHn^)F7ji&FO53Y+jpE>#LWUL_u)B9$(lcbE5A^I5QKtIs8LzEet{#}Kztv7vdp>=jHu2C~ zwpAig%e5%NYGcW^h#SZ|=An>K0OhxY#bv{N+6@mZYR`J*YH>;HFiNah*WEN<-qLz@ zrh(V`L-(-u$Y@;*(WzbV%M9Tb(c_#)Uj3_1!!vdBH8b-hD(Y+|<&Au$xsfGEsaQki2ia4C?arsg(~tOO%1LH6f?j$CGrNp~3M z3i2K=b#%*wHylz@Vk^JdX!;4XU>X?si}*~_P%)5oV4=jS%vkLK`T5OJR}A(jD!#9+ z{Vt-sXXSL-8PVuQ+-TaTzA7K=7L{eq(9Xj;-Q-~Vp987pyZ>nc6AK9?c!ddR=bR zyRTvj9B@jE?<~wYiP6eNxqp*4%A20e_v4gSmtRJy6A?l6Y1EYdev|XeeY(!mt8qtn zDmWTsN;e$`l{wE z$s+$O)fzP|G7kusE^Lh*csbqu)yDmGgZGMdTHqbST9|X?STuUe-&G5rB5(*pl`@!04L$i1OFt zDvFB}U&s*LbpHW3+gUJU(1^>`+9>|v9s*H8U46=1O+DQKlg#^b#_O4Qqg5b)XMs|j z2;xpn<=b zb7x=kB0=asJs%e_n^_VG!CbdQ9PaaykS)J*Fb;*u<1iEeew8Xe%c}}J0k=`-?F%`i zM10bsSTHqtQ?+)P9~FOL}; zPunIakdfdpaKdj}Pmy2Tyltqm6Dj=TMs8+3KG)DOscL-F6d;Nm5`YbT=;0RttM#wnu7d^{+ z=;aT*qq5`|xXN*|{g)d=Gf{a_IJlaaH;+b0FZZZFq_iC2;4pjte&7e~ioe6bW${ak zi>kWmAFrZ%$w3~F&kU?l}J`3+n4V#0Z^o=Gqt3+Dji6ev};$ID<>o zWi|9BE%VgsLF%NkY?fg>p>!ZBx*%~N4BF;6zWtqZDU@UT_Q@-nA0h-z<#5k(&$=bU zqU`iz#>V-3HRmV~F#Y>44s6u*Mf~q&8v+03KR>d(X8zZ*4I--kCm#nk{(lv!bnj9w zRb@~u)m=)V`F9QPZf+6AnnbqhF4dZFZ0BqitB+C6==;unU}?LdEzC9W27HO=o<2V{ z&f{>_68IE+ri07jx||%!6TYH#49^A#f>EMmwaUm}cZnqk(r&hE)LeP+-7(QYe6R>M zJ8?dDatQr!&_1~p_Do%s2$QZ{i}il=|XvMfm|x5fM&^CUBY$m z*2xbnEqxf2)LxI8Ld-(gkv_B@M2@CS_K^b9;X!bUsZis z6;U10)o+f%Id}0g@`IdZ?tV+%S_Jq2DEwh|K!cHY?N*mIjhV7Fs?_6AcD$xC*Rnzd(+hF`0Rl+iD@{GtrP##}3um zOBqzId2lO!l3?)`h_b4}!LCq(pTa8IQR&cH&N}$#01w;VqImQ*x$=!e{?*XA7sg7$ zAkUa7Ske>vg`dCBW#=&xg@671qH{q>;9o!5#w`#U@eCo|Vzr0p-DX?V?Vg>TeU1QD zOtwR86hbCx73nA{9?3v4&N-1SKcm$l*>7uXJ4)F0mx}m!OMzjX$DUytycsr@h*nF zrE-Y3=v^JR?>7QX1Y`5VZSb#VmcVKw-0tk?72~jg&Z}t0(%C!pdJCLzk8=aVgQKe1 z3;W_pF7&6;exu&Z1kgP`pvE-9U4L$}+R;k&lQmd>{Qi2f)XXOT@t)~ssC(N`r^4Z6N=<_=efQ~{G6hnn!k1k?xm?<#@?J`P^zwL>@7 zDow0M$_`oTUg#vei99JY)NGH%~^MBCW}*erFbxR0aBybUqb8gI`dR5wm=k z@ME`zW%4PZZJIx&t5Jg#ZM`>37F#jq-a;>47y5g(>C-#wh4JIxqocFEr=1mQN#9F8 zKq!24>XtQWedmRlr)6-2cYQo%76+Pv22;F81EQ*;JVJG-539J5fjGeX8Uy2!o#gwp z(%Oo^BpT-qy8wbHF9%z~vT92)&I6u_BD*noeDft8I2XXa9mko~>_cfji2QNPL6|%( zTmO%`v)4equzI%9;d{#!KElHb(lzHa;~m|TYXI$YSNDVbxp zk8g$aTNT)SV9prx<&XRe)!tzBb~&X!31(&gFDTk64eG1S+G^jgV>52@1udZOXg5PS z_NCO!q0&s!aRK<7Uad8Qii8z*V{zhiBzYPt$9{|tx{`}kaTN(IS-vbhjeb_DR9ck9 zyi}fG&}|nAiQ3s)R@d9Sqql-2aU&uQkWfH`WZ9&#^*yXyK{liMQWP}&LLPl(i(#?{&RNL&W93nFTm z@Z`0F8E&KT{!hkI&L>qIrkZgN-e*b@rG}lDDU4ae6C!wiF#*#@9|tD zVBYNdJ5XXjsYEE7>)@RPpj9dETDE@WKz%wZQc1dXxr3MZ`nBdOT>OozL&HcWNm~8> z6&hp~1rXDd_-n+i4a_<~%iC)~9md0f3kk*~Oh)F;=LHIEpjpTzO#*lGgZEkNPFvma zz>s+M8ViuS3{%MANDu}{u!67eTyRfQw{ea-g6Pgt<+{KzQZ81^oa86%joL$axqsN= zyYR0(YoCzpnpwyE_2!ik9`7Id<}3LOX+a+cZICbF5BXXPlVxx0g!B`(+)dW^ zBmb#1#Dk?N)A9>G1UkY5NA)+9w2)M4$q@ZDIgXO(|B9Ob)zr)a`u`S4|GV>+UBwnQ zjj^{$U^Rc&x0G&3>YtZNcbx7ER4kf^vH~1iPtpP_Z??HSl9}$&3th4^`s+Y2dS2q+;f2~dEzlV<=rl8vbdaG{Wur+*Z|X+M zc6Vsx{n#IUmlyOOq3^7xy~+cP%p{%5xxc%^W1UH0t-))r|Gk6NJ6)1$sRNDQooRbM zOvz=xI_baYo1@1l-xtLx4dKlClI=1_cm1kajlykF3KHf+FksOOwGa!4jL#)~zBfHu z>ZJ7i==*b1f;a%#@Mr~vIa3gGHS+H`928mQQOn#Fu`MwxZRGS)X$>d_YEHMJN?x^f zka_lenU&%u;Mog22PsETIe8sfd?KDlt_bwnv=~q!E|HQ6?Oks6X5XdddHQX($ldYQ zD=z3d0lY!Y;7FB}S3~aYpD!h6!-aksc@glU77`$&_-R26%4WkPD?kw3;Hcl1qL^om z^fUW8kHh7T%E@{g%V0}W;YD-=uLSOp~HssfC4D8Xr;MNE+Nn7PQs`#U5Sl^u`Q}(8ClK1^9+i98USZ< zC0F&u7W_e|bvZb*%}eA8oDP9{0uDszac4a44$o&RPIFBb(S=TaKc_k+mI|+j*@v!y z$S#Yw5#?;$eWd*8u|7Mt?9b+cGif11F@6>E1Vx{=5ef zfBka>%YPCS^|tI#&nk$&$Qg=3`y&zMjTb2JGdu0RpJv-J9y|E@(rjZ1izce)=+v(b zmX$uT{p5{`-u3G@@m`_GK*{2T0@n(!%ESlGD%**zeoRUBTM+{q0^z3XlH{p}GqT6q z5OV-(pn>33Ya`Y&;zPC^1C`J{_f5qUnt`M?4B;-@rI8(dZxZe~X?QVwnvKfHm9FE- zlt21{f?Zskb*GkqKza+UNpLcSF-_LY@m8yZgB{z%D^i3`mnq*K$lW%_VbzEVJ7lbAvNf1RQ(C@; zE;mF#;0uR`a|0jn4e+6(j`rgOQmG!KvDTU-cb5 z%=`mAOaaAnfXJ2RC{Dqh!pccEz(;h6gJ?)Ge6>;R{D2fKYK~ALMLk1Py zzsRzt{@?~T0YDSCLm5`p>M{5ULN$C0x2IB31HdE@%`G>|TVaFfbzaFo36hbyWmH$G zSm)4bVz*jX^KrwkzaezRJOVCnc+kR?7U8(-d?SUXTFl&@*QM{xiBysJD5?VRr^t8^ zrtOca#j0`1e)>jYih06h7jL1A<(e(1&}px!tMQ^UH?~9H?9cU04A}d~pkkBn%?35+ zKLj4rZ@ac8f^*z_Txe->dmOa7{w&lm$|Ny8oJ6xm_D9phLbi|1qHxod^$V1mz108* z4$gzy{3`7ECC3Yp*(Mgv3w=HbOl!XZjMs+S`K~qF6MS@f$D|3;@7NhgWD7CHCI-eP zYqb!r9?cMQo%O~D$$K-$?JG=Ohca8nzUtCKvB!l_+XnI`!h~s_rp@mz0AxDcc(!eCKx!~j8 z-r^sn(Eti4dRC+|Y{7)^p!J<)e=Ctled{?tM+fqPByIN{bpannXKU1Rw6qWq?x|w7 z7~>})&)NK!Z>^@pbY!b`>E*Izv@vXVp^BG*@Rxpnkn=zi~zS{)(JNciDzmU z^(!1k$j$9ewVO$0*FEr0*|hV4aXUVJ)6G?YXW*NI7%j(oyYI{rFOzb!)~~u~H##ojV&CmJ zX*#tmia1J-;6Q*Hjv~k1$Y`y^PifZo6KHmcptRcnh8^U*L2oJ2>c5fa7(rXz%nNWB z?$jp~<_>TWb@aI4bqG@NJNQOPI|qnvgMGz>;$<5xHuowHDy5|dIPeB&6>}Qb++WT6 zuwx!N8+FGU|55#ryRD{0>?^1(`<3QBJnGj@jb4oXAz_=@)}lUf!%cV{dCvNDG}bH4 zP4S8cGOnzHKz{%Yc2S@MJ{gtoQ|n zCiNa{!an)wkWY`cd+Y4xgS4X>Zlhu5gDvshEIPBcozGk1^*}Lb_IhZugqFS1Iw6aV z2*FoaJ@(WEAPB9kwPcH-RvF{l%;~FWaslJ?N>Y^0I>{fC4+xTT^X4RQzo1t5AK#Oj zEL%K2jM(Zjzl|(pxv*+b9PC(pd(iNyt?Eb-3kL^3ZsZjZ&6$Y=5bWrrL>BFB1DsK4l#kWH{Bju+mPBkzP2NBw&N}FH zOmH*L>Yx2>j^D5e#fPh|a&Bc0qRZ`7Rmu+&j2f88HZp3`%XLf?-yLa3OS`*B*#Frh zDNkPIt0+e_`XZ^rD05Xf20V-%vnaCs>N;T1K@7ercK3KD@!|xvo?Oz*qzh9TF_%ce z=(J2>rd}6|-`d)}ifl3pRIaS|0aszxRz)=|Jl0$wvs!XVm(E|Y?0_Y*jP?-Y9u2GN zq1p_2E8$+v=C$CDnC&{?SI5QID(sFCIOVS!MKv>7Ox+VU+-?N6yl?D&uDOo}H4n1J*sV5<)m8Y!YOe_7`B&2-IptiknUGZdq# zF5mUm61SdCj67q;Z1!&5yj%>5K54Dnd6p(!HCNl1?H}e4aoV`wKG{VeK>J1>(%ZY3b zIp-lSG3eUyIjp48+J@6N^mk~_!w^?>{~ac}C4X_Ozbn(D_oHf%qIz$qXEq3pPW#h$ zxpl2K#j|L%-@PtIh^Vqg&~~UdrFy1TJ&wt4DE%L?&Z?HWK4u{MicnskTJ-IjH&fH( zmW`Rf%kGCa`!)~rWksjl=GwC|LaOd0)v_I&l$bZ*XWh$%AEC4CyW6S*5HwpmFIReQ zc1ECmX9#3<395}s;cuG*LXeA!X3nm&ca^g;t1s(2>ca)6pam5ghE>WvO`_?KC>{ztT@(Se{*Uho-zpyH&=dqwW@PU*CVTX?i#`r7F%a~QCzv;Xg{tm^h%45 zePYy#A{|~*aMWZZ<{$CXNlnjq3KjhRPb#j|I~(qL?<*K32^RyBS`>LE6?-OB=J8iH z%C(&Hd?j%IxU^hgIU7l>r%izj4!HhQ8;`ewjEe%;A1{gbs(hE!yL&Xam`gP6Q;2W4 zcWvYY%%V=*E-rZ%>-fmp1J#h&-oH}Ga*_ipgVP@C6%gX_n$745Z(53n2gM|OlT&z7 zj<0M#-|N7xO?6_o)?Yud;H%fwc^?2xQW6cAR51_Sp7~J(c3-lkcwd(VZ*T376n@f7 zvkmNwf5z`iWxg}ccLEN}rkW=B^wRL&hPitP+Dv{`+ts=8A=Ghd2}65*N>q`YDx$nw zc4*hPJ|#OVY|^<(sfJ%m73nS6UNk+8-$<6=QFeT_AMG+m(Xg5^!i8uAW0niqqWZM- zt~Hle(I8=>+N6qg3V)6a-oVHkugKR3WVL5y#iF7-k?#6)xHqm&qI&C%ucxpvyd`2z z{6i#0qOi^Z$9XBQlFG$Fr;zF5mO=hBMK z9PvVHWTEBG;6j>4rioue;b$8BNQrlwo|OjFdOmTv|O%* zsa}(FSiq4S3R_~Z|Cn~@8)~@1=#Mqaj8D3pM1Fo~N~Ck{7$|=4s>G#ZJ=&dvH1pj~ zdX#6|k-ppTT8LIe{DV@uaQ)Ld%&QK^?Iq5@L^+ksr#FS4%s)jRlo;M=IKSMu2x7i3 z%ib=eFlWPf=dv?Z@5)5$Jzt9Y5XGTw{d~%RzJC(fep&RVQ-seV=kFRdYyv-0kiX*k zQ2Nk#P`px!#;L+p<2%gS=j|eOs}pBdKI;jhE?tR-DQ;?9^?6cm5jwff{9zc?;vL!3 z$zx=&6A9*UFR&nT<*Qq*{fIxc9t`k`Hjq|>sg-3Bw-}?hw}V4_Bi1 zSD*~0yxUC`H+oj7v)(tm=W90RrbtU&%|c0uFhj=dRfW1F5;(!2h ze)0Cs>Fv*L%YvvxsY*21E`9?)$gIROq<9c_x0|kadJPP2YK>G(%D>r&Y!`&HAYsih!*u|HpCBY ziwt?a;y>=&N+~AM9_fiNLtSJ0(EkSXwZYBWfW;L>rI$^o=Fm;6p7gjO*4zG)2)%n)5qs_T`cN~m}ks6$2P%`X`p@t(Z-?dzVa5gFEepSBDfob5))7#Xm z6pMMn(8!_r9ZT^ku*Fy1mPu5nhE#TS7W;s zN&u!7jRx3mgJ;gyK7tJ5RX~Qv`DBvc5baaySJaoTti4;03EEAgJ$n?G8Dz%SXqR|N zL-h|A1*)-8C01ve>5kUx2Z$QYIZ*Nny?^%0?hw=oIvW7#b?|e-?K97HS0%QJB+*VY#V35dWn=kp+2sPk+5Y?oiY5rS_5NA zdpI54_KdM%5*~Rf)0p)WND~Z`Zq8_8W%#`EyplE3Un3zKC)Qa(<6y0p<~vF~%rXq+ zcO(GrZOp$FZSSpdn^0IC{N9vruFpDx!QAv#m7l8&=&O$Y{^Fy!&# z`ysOem39W=8d!p0P>IoX^4-I#1_ukxYm)%GegszmX{ML$WZA&WTCl`&0iohW{dUkf zNt7hGXzQs9bLUyB4CmnWHER@DH_a*kt>BM(toa)+QEi}tSM6QDNK8lSb5dmK{C?As z5B+p)4X?lgw%Ps}Ya_vv#}`UO>2e2V<@E})@A~{ZLWO&nT@N6TgW$HtYr~EFm82u3 zRWX~+w88RjH`xu^PE)oe+p?0NdeF5y(e(NrJ6j2}<1f{Y>|y662f2?j)~Y*s6~_k! zCsBPS!k1&a8Avzdx8zyq4Une6imY@ly@E;QIFD(fcHEfJo>K$)DXevL4AcNciC2G& z9Xfo2lfx6Hnnm7#jC{xaxCjsHG-jbS(-*=OqY9l24^;=EM00a@<=@3=Eo(fUY`Ki1 z)`kS3Ujgy%jcj z0#Y4mv(6G(o0r^4SZxZW)qL;;Ju^Sd_i~g)J~IK%A95=ONIpVx2{scf23lae6fqk~; z_0Z<*~2nB z+Es%IHX7)2hWEgn=W>hxu|PiEl5dK==}oTG;-3tvtLILJd&I*2!56)LUlRjGZvjfw zvecA64~kytRrR^`nGUP6%vP#VpoUzv@4qQQCjp`V)bK#heZd2fq-8ZkabM~e;V+xX z$V7B9=vtGc55=%LA}YZU-E*_!6HXQR?Q;8G?d#%&-e#5-_It(LWB~&i zyxo{l*k*|6TV`^%H&UzGwSy?%16lzWT&BBi%LB1k9KXx6N&J&40;>{?!tNsg+`zqB z_>}L7q0vI5L`gAx;s#2W;Zg0E-m#^jCCRzYAYQLVGQlWqZF3keOJj-}{^{44<>}Gz zuEt--JUk5DnSXF+eP2H`R_pb)A@UGq=rP1-nXiE6-d2P#J2f5KeE8YcI&i`7IR1Qu z?~E7mz~83Gc?DhBt1kyFo=hEi3%<+J0z;t3gI}&)RAMT+k2GpU8YA9&r>uqvjhdSr z7(Jfuap2{x=|%SgqJaF(&E0}u_ssHz6YO+sMVJ}Fdcn(;kRcl!q!s*$4Y0Ic4+ zMW$SA2y&QS+&!|dM(KxB2$zb(TBSR*Rg=^vNYDf=^|=s;W(hzgnR{L!r5u>_gczrp zz;dw0dk`=EYrw#r^@HXQWR6j-;%=p<^^FTGecSY-r=Q)kvU;|UB&P@ikIbs5Jg6V| zUncsbT?bAj!LCuUOncfq=Ismcuzv9g_~i_f{HITaTI?m%0S|B2&2`Tom^9mXy2jEn z@xl*i{wdpvnR$1PGJZO8-d8!|VC%|>3zW`%!q?`(q&46=DbBn5co0ZW?-klFAVmGj z@qMvKr2~^PdC=l0h1FV^)X8sd6u{274s>B7VMuIB=^;}p{C6o<#1&cmyr@KQ_LmPo zb!NPd#9Vxn*P=#6HlFuv`&zBG8$1r`-sISPX zTdB=z&t=*g4`@pHQO=|MG+8ew!C!b+jP|Svg@_B+fhHQQ)iRAmoPX!>BW$EJyP21x z1zcHpjb-_7LfFg?;ytzNDbBo<>&wLa*bCYvj zK1E^#_~#;$v~srzD&2DtKSMw93QC~q>PUL+h;rXT8^dyv+ zTKal+dgQv?Bv|cy8nBkitgYN==}t<>TkM8EdZXh-(p`U74igabL@TGTV-!v?HA)36 z)7Q)$4DrO+RV49qIe>k>$*5#j4+dnfP#?FlJS z&>&}N%subJO>!%&_U*?aU=pwe&9yUOPhe0cMsZBw=)CUYchv zg3~G}^BHnm^6W)<0&%v;* zncTaTZ(g+wxZ;9|JJ5A-xN zxuglQI+}9RJ++XXV}S};Z9O!akzbk~c%IL8$btARoJOltT}@SDU(f^b|5g`WUFBa9 zP-mP0M1(^#V2c4wikO?DKUJEDTt!{;lSKy#m`}FE7SE4N`@B8&&;*xM!Z_WjfeNJl z(ZE)8q-)BMssWNGSLM8FmuS}ae>>!Lkyq{st!!CH24_*zHp(QK8SFj!$WzqwFYnh` z?Hw5Zs}SSQ@mLvAx0F6d_Id21R~X~35^D$G^Tgq`zrK9le-ussSHSmK?D?NeEtdcP z1g-zBEB`-Jz5ctWi?j1Lzc~lOLS+&+KKlZgeL2oi2mThxn@Myu{}qvc+i)2Er8m*g zH1_-brA)ol`w0*T{n|%U9FY<0)0rOyQT+=s?LSR2>mA-o zmAd>wzxn=(A-{;J{<%I{dJ7K^KY(}Dl=#v*)iC(dy-b^Wg*Gu@=~vQAQ{3UX^sTt6 zajIeq78+VWa&j^SuU?xQj=jCT$1lZ}7w2hlc^QdPn8|Bqq<u@V5DHYFw={=1$5p;Zl2IRZuS?m4p&UV%ie#S$V*JlqWHcNcVeh0t|})p z?JC2ssJLqO*99DyoVsZI!-oWH2V0l0mFyWs*BKmm*>AL79L1qhQ*ia|i}haW97R?X z)ovahIU^OTQzauT9=~3meKCZSJOc1w4&ldXEbSalFq)6Go)R| zUI7Vs8wS=-z2ROqB6kOuidR%yMzP5fQL2m-LyWH|Sf9AWa=b}-q%JIY|8qW3f|?%{fFC?Tr(Ul&g8_7+{r z1u|+Yg5Qb0kZ|`=9{Ti8Q_{r7#o3MqQzUby(vSSE_3=?Sk=hln0^9bgOneITBjGvg z6oG}9h&%-ygF!jWl%~>udvjWKu;_9a^z$#?JB~Uf^bH*IwdIy^OmMG_WCmBkKId`! zULVYh-Cyj~oHQDoPbk5JIuGd}8vZ*A%c9X|^5zh1GXkda#JzH+cf#_j_9TDmEpEvlw$VB4&-pi+N-1va9 zC8f#~G6bB@cOV8-tRD$-a&n0H9q2y7PJK1&JfhMJ;M;8vD}W_|hCE~&sWrbsDd16JZ=Jeg+h%A=6!>oh%iFl8P!5k@1C#`%gM=6+O z`MvE+0ZN)708GHL?{i?x?pW_o(A(d?e|P=qkKll`-~J^~{#_K37&SfuUr$f78ZFgk zoo$9t8m_iDKUmBmW0Cdso&8|eKI2iy5{|mSA3g;0C~Ei*&nOC)H1awRp2V9< zqI@1lL^nsvQF)RvT{AOpU2jffkSRS-#6mD;o)mSzKGeDanTk{flvQSaST))fE7bvC zAS@X4QZc`vAjdl-nlB+GblvA^E=BC0e*jvIUIFXO#&eYmhVQ`Z&p*M?o3FhRQP>Su zgwN33^p>PQt#*Wm&kPtO++Allv_EJz5m|Mc49mT*k5_8QbwIYkF)>(~UIz?8#an#t zoZTtuoiE{ZbE7*@U_$`gJ2vAu>}5p7eP{m()R$^I-M^ByXR>yW$PC7&?LV>gQhMT= zO}wX3K*FY}cCnd7E4MlAycjL!;KQYixLec|B3CWK^kTZ-%)>H0+>b9c4n|86-je4w zpT#~MPYbr|ydOvra{>saerw8pc0fX2?r6;PeRh93kg`prHvUs}Vjsk99kl1|8O87t z9BLgb-i$nm%5;1PbvE>se6c=7!w_hYpG@5F`iSZhsig=iw#Yzw-nG~hzIF&Yup)O1NJWLx?z z=ha3JBn^8CgO%wGgT}qPSdur>!NPck;Gu?O+}{{reK98#&8SwkyEoywla{@nLdd=y z4W4W-a^4F?gZlJ$&;d9KZv2utTC9l6mmDTP*kd{9#&8S!V|Xf%yt}s&F=p(s9K`py zA2AVPT{5e3=-jAs1MFTG_o|@yGLGJPaeo;umH#lhk9Yk<-7-;4+#F0K*1&Y)q;`;x3ioSj>ShQebqH%7(y;>+6b z8r4Tcx#4d*Y7na|R7E)s{^`VNjba!U4T#4PiVXW@SvE1O`?N$9(M(#JZ9p-Cqqi^% z^T&zGJ7qWoD^2{3G+fce)_Ioo90S#{N!lcXy7drF5aNmu5b)JkMZ>P z4y%~#@IePg`x25C9EGV*rYk`wO*}qzdXsMJ+DiAWSQwDtV`&wkx|G;_9=96Q^s4O! zK5*m)#^}>PglmU5Z#S@xtY!!K=tmqd7e)nabS7MMAGArJ^|dT-qqq)8782%JmZGfz zpQ~;B`zn?ohAbl0_@qx?{HhH4l@}{l8+RQB8tN4VS2M4LUSUcU0|HI>-PhMfR)sby_BzD54S<&PczzN%e1KKY;%&|Qc%0;eDm6=aBhJ-ejWhYXoQOm;wzLVn z>zyCqSAB%{rc?cF;WEvQqp&MY=OEfNFF8*HOlz*tBv!5A`~6NZN30zs2-N=vW7 zl6E}c&JN?Cr|-nfQ2Pd4LmMe%;G#JIzXmNU<#LcsLo`f)jX@nE)Kh!XXbCm#pC%}$@@zf*nz#8@acQ15 z{0SGPmh}!jcA_Qq)%%h=WH%_zV`922nX) zvN47xCnx7sRW4*As}YG+tAE~2Oq`eVT9102_+piMo%%xWi^fFv`md+%3MAi7BJpLW z^1odAT8=fuxyM<`Ykbok<)<8&yjlQHYEb}{9!{*NPtBFTFAKosk9q?+pbbd*s0zpR zg{|oIJ&$e?Rf#u%sl&O&u55L&gV20&nZU2!u96XY1E`HR;Io0o8f-lsAt$K(`T6x` zSlqggl25Z!x<>8CTj$_aiD{*8oiX;_%!B!r$jpP;O!vX&nxl@MlDKij!>~9>zg=Ay zUwR9hH?Zmi2VJv7pF(K?_=GNwBka z%udU}?I=;QJ2EXZi$!Swi8~dM{1U|PDAG_Ixz7Do$NpxCDSUCOXmeo`=f;)6G`K@n zQz_q|B`AWB?LhGH$3~aGn9=L|@z_&LjTZY;TvMD`%+<22`gJ7c>M@%$kvMO&GMOm5 zuPWk3VloI$Sk0mGKtaeNNx@R&hVT~vu^m~-m!+I zfApBY-tI?}j9OA`;bR1-gVlHa?|Yb$m%^WKIZ?-HiMH;@UYI^6&1*}iOZ?66A--eh`rFsf-%yL5 zv&han@b#>Q^-fg3**s^dP@c32dvdZ3LWa&;#{|ebrD0iDZQhI&Z$`Y$Bw9XsVZH=R z_!=G6cg^@7i@x}Yv*cXIX811TD4=|G9??#n(ZuRizSKQ{ECOSwE&SduX!4lX?eS+H zenoWAm^Es?t@4867kd8|w*m>*cJfo(9gn3AEXiP+?`YrTfv-+S=K?HYwCH2cGo8kq zpU|qX#aVdWl!{B>NoMv~t5Ry&h{^HrwB0V0pb!=jD%!q_)J}guCa9?mxcZn^vwEJp z3w@Rv(dERAUMwshED_;7Xt&G}=1r;~&kT;s-6~frE9}I=t>X>-Iq;hI~LpyC2huOu$(N6pXOfexpZcHspq%JA0 za#YR2h?=H_qB^+$LH6GEDB@c3mb!ORLnI-O`Nrl$RH?+9&yPU4zo&^1uG?ORuDhW7 zDxJqN&A3AwDZV)7y5I817HON?y&oM2qLIXhg%e5H!A&!;%k{F|5sqtg3Cw5W0-B(zv&E-J>d2jy(;c@4Nz^eYF z%F=|Yg%^Qr5lgjRmK!Bv$hFdG##UAP0hz5Yd<-$9WWoKK_K0)WR4{b{TE}p@rD`?o z$&*iC?Qx?x;Q5ZlP;pU2(u}6iu%!1oLS#QC+V!^Kn28R5kQFEyuA5LSFJ&QseoHc_ z!{$R6jg-{b5YDfk0K%_%YTwuFH2_IVFK-2o1I8v+ZOl`e$W%I)^LKys^;-@=8uj1r zR`Ed|>xzUW&v!_SHsG#dvLd}EsF=Iw%~jk~PEZ zay3)zf?jn{zQXpZH2A3*axQBS%MRA-ao{1>D;gz5qf1Q1oy3e^vc)7#Yoj5C!MfLEnUvXrdD;(2 zduCp`gHH&HJq}6xV02_~7C?zP|7-sOIGwrE-Wz34lZ#tWTUC*} z*6e8Zbnt7o&?+%vGnZ0^%ld=F#Wx?JeC&M zb|jWGUQxf7C4@nRfS5Q{N>)~-ig+MR{G?3oo>3zEOY%r>9``4iWU<|XHxj6E(7$hg z3PVO)At2zD{jHym+sQr-3TA0E3n{E?z`(b^`^ocLLp*PbQxh>QWe1__x_i1lu!3d# zgbpLJTjo6W@WVo#xH$*j41uKa%=pt{-8#_=-BJS(b-z9TH^*P~8wDnH8@cAFgn*=k zyi*hwTowi6v;LwZq2mHzaQ;i__X)fCx)n4dX%fgj!WXaOyJ zLb!;qy)mLHi4f#_T58+Mij^07-WVe`aS%2@02zPdh63LTW=@t%xa8papehZ1GGXkf@+F5x#7dW3YOzW}B3sA&6{yXei2%1e z5@R*2B!M>Wd!h-czoJJ7m4}kitCEpZL*H|V{^H~FOq01>>zgX@^XtbI_;lC|ypoP; z`P8~KQoNxF9HX_n?8J;1bvdzw!vE;#ctVz)JS>*4a?n*rF+jQDlo%E*a9CCVv~}BcjZa;Y_{nvJ{`nt4^Ob0jVW9s&j2gA+?yZIb)zjN zyh4+}ks|r&vsc*nZ_9IE4W?t;$V?|ySaxSv&nOT>wT0gRI>YO2948dYe{s=3v0Cd? z>juBuzMOE1+X9DGMT+c-ZqZiDv(#N2FPshSKB3I;0I`Giy)~I=maHKrwooqgWV8lt zUP+UI4>J~u(*oJRbZb?QtBs~(vVDaCkHUd@_xX8BT9YHk2Jcj}^+Nlo3mwSyD^STy z1z96)AirYVrGxs(Z(RjF-Sz0L**iX`E1t@l4xg^J9Gl6eG4|2AintltRW%-V+z4iP zg*fSmo-KpCldYGNxjdFq4-1{6KulStua$}H78UHfslDD8b*)q3_TYsZ2T!ZuDUZ0a zwg#J}2WLOV#?;GB2@|j`)JsS+TI^Mc7~{98Ey3IG$aEDtxx-5$_8X9U2~i^q(Vd5) zAEqPJ4HW~$zw-JE5!0ICtYS(QvV~LX-1&Fqi1LN)lJnlaXVVKsbuF84wD?2Shye4P7TqpzFEEss)k1-Mdmshm4O;#(A<1@MKi3Zb}&t1GvWIGK@ z82n?;%7KGF43s$bgF~Dv4Zf;(`fg$h8`iGUk6rtz(rtr%1>w6IjjMbcuy(692vjsP zym3{Mx_BcBgUnHyj`lyam-yMye`mRunB=X2)W;mKZQS*)#WmTd*qNdwEMS$nkR7s{e`Nub_s^2*7Pjk*9Rlx2y zdZQE~BuvKNN$oW`Ot}Z-p5)#;C?}n=!=&WqETl2mor6p5iygH{lY(OBfmGs*OC3|1 z9J5lM%8(_}7Ye4_bT~HW2f?m5!*`M`2?F#0pf(PWC@^sSjKcK_Aw2+OK@#FK@bSAQ9tK@SmWij`I}}s|g49dGciCHY z^WK_mi-U`bxbq|Y!}l-c#)@Q(SmU`S0k5}zu#GYBE>YfJs+F)-pRku}SR!YnQ zzpEC%@9z8l!fObdfQ`-xY&wH!i=99A%zNZOD0}>?M$g72ZOqcAT5$Xm=Mk*C2jhxx zOh9gr5SCw+uuv8utC9AWqb{S3`YGeudy(5ek>#|a3ebd`>s(B3iDJx1hj<`PRh{IO zy}GR~AtBbI5ozZH$E4EW$Jq}mV&+zqdZlv*<*zbqEITjlcm2>Z({{25T()#V%|apv zKH&@Hmws*m2dY%NK}@cSJWaVDcrOrf=WctuPMYk39x#bH;PhHVN`<#F*lo;RRhcrv z_r5CT$#xpKxs1-Z701N6+>FlbQRa38F8s`ccq;-T(_GghtY&%R(6n37ze*OLs)ue;fJj3kQw59Z!Fs;aPE_ok5+lvvzz z^gx1Z#l}xP9rY`qnjg%dNDu$ui78=B=zQznC#xJ7RbSthP>DX#L{-W%U3{}|%b)P_ z`@9L&6uC|@LP@3oj7eT=Sc(af(W54c>W@Ns|04FN^Z;6~xV6P!SkUVe%qNL)e#;UK ziuu_whao?Ek_-bTuS=N^GAU==zXhRi&3GF>^H;iKmAf1>QRCMLL+z-i4_!Ce_nSZE zAi4I=<#vsY^TArLdJtJptCT-6z{%}bMX1yG;QP}SS9N_O@h)Celi6wISJG6Uuqpru2pI#iz~F=tgFB+9%s;RWW?5 zdCeLGB&$a)oB{$v`@omrw%0y3PQynm6o|HyDAXUg>V+CzLr@LzOfy%*&??Age3ETg z-q&g3;=YN{+T0ZC)Izkuao@5@7zoyFyTYU9k6r8a`#_csxp0IilT5PU_Vb@xJ6@_* z*~tWuQQ!29mv0G773H8^0(gYtvcxRnnX6j7ur4 z{Y$7XZcIkX*P)^6zJZpn;fh!}Uh#Z&8gr2N|KP_lUmkU9|EsoB8DvcU=e9g0Go|UCB9o8F*C3W}-5K zYI}vTC*Hg$^z;1|leozgU4vJ!?JB4i$z9+$hf~UkCz6Z9;=?`VTjDR7A-xBZAr;C3 zvF;C*@$QUSRg$B~wVi5RO$}19h)?`5w#TR>t!8N*^!BrXl{@w+_)_qGL^DBZTv{QF z=tOIdn+^A?S^n4g0Or-P<6C5%?zN46HSu)Vx;2wedO7ztNVFb6w*{jvU{f=2FQe-c zPKem>=_rgUkcU0SrE;;Th=RuJ316AEtJuoGq^N?1bO_lHpp`P?v}p5!QZ{BryKnB) z*Um@qa^w}Ze6rD&55S<#z57HWYp>x>{EYL5INxzOa+Z$C8;m!{`QrrCrOh)R@0+## z`G?dqi-Yr6|3D=U`rZjr+WdZZl|E-MGhkuZ-vO+5_K=(zL`W@^79UOJi{+rXifIas zUs82zJC7gkUiz>jjRz}H3}$n)8Vra_CqnPMR1lda24Yjbs};e~FTN30zF9bd;(pDN zkF7`#os!i1uA%*8UXZsV^>o{qVR$yuK;qYsk4LBRl+905kThk0=3HWJ(7w5qKVB-$ zs6?g^WC89>p6Svw{3O^d$G9$pEhsAViLkx9KoTs9FH~9Afw^JKx-kWtTFRnjm0@e5 z#CXo=uw)XB*Z;!%+=d?41=4T#o+DDgGlpfa0@DMLVq(Mea|717vbg@wvWSnPDESG( zTG2JdhnJ<8kTx2`#!odySywRmEX;N4H8xGTU5X6OH2cPa+WSE!GU1%t8>7XJx`=90 zO`FL%f$Pc&13z*K3SsCvl0i7{AJIV(J9cnC^CQZjNH z+&$eb26c7YS#_IZ@1u024xYG9Z39=bor1+7uG81ScFVPxVuh~LeDa^d_)DIQ(v+yd zxAHVf@=e)eC|H=?1#Y{){M0m_$7NOvXTN8D+~2Kc|M-r7<*Tf=MGwX=dYU{pr~%~{ zd)5(!CL9QXk49(Lj{GsNU#t0#>fXL%7d-JhhoILkIo-GINT6%2D#ZDQsOnuxf-ThN zH?TNt7lLoBhRvB1pCsejdp&Ql>D^&gBEvh~>@arrPJ%urLo{gcMm4sr zR=!f6Z(>G!G7~ABr)zP#-`pTJT*fiNhSk^ei9VkC(+PZ6#YR4PrKLm; zK&_~I2f(`;WBEK&s>q;zLbbP$`SVZE{lR0@Q zcRNnnZo6ft`;pR7`%aBfun09TM>3}ez-=wayKPX&dRYJDA?q#LQK!XxZFrBy;e7v^ zxu5TPp})-q*`e{M^bF1K^n+rm2vMsNUH4Ky~bzN?qjVa;IG46GpCag|Ta$g$`!Qkw?!(`Q11)j0yFd z;=d_g^*Vz=dX=8bNPl|u&Q;GpqG|tf)?Bf7Xu>&Z7nWI*E>kPgmx^cI&FO-gO~8iM z!r#w}VQ+sMwQAJmoQRD{F@JCj=zGwg6lFg5{xV|Fyx#qUCUdh@2-V0N-bD)O$XXx} zfzY;`AAsGrD(PJ+s4u*(j>D4Z6eqwUkC)D;jG4;xDuAlBv(>MrU1!Ym>lb9B1y!Ea z%#5`mvBAI#c+sXG!{%O|IPDeB9-l6i&4Y6y7x0K!vP zSP1YS{B59f>d(hZh*4GB(d#Ni`&OrKw8&C8BPaTpHIOWmI4f;;G4C5}f(&J5Xk~gz zy?PaPU3xE>ood6wEJArcF?_!?fSq=wX(H2)`$GGmDmXF8HCAA$MnfVN84(jBxOU^* z<(VethIvKI&7Fu)XZJ{sqn!Tx(Z|d2eoo~^v*_#O_k4%9ENq<$*JQ09+TirGLPAL7 z$m1It+?hdbBxr4qIH}XumcI+*nrgSbt%yeQ^~KfIU*q|;!!Y?i%CV(ZugZ7!T*nB> zBz$#Y-<)Z^U7`)sr)T1lxNeSiq0?Jag%ga#4`bHL`t?s45UjU$u%F<}!Ny=`V0W2RqQRhQn10KUB zv|3gcgTeq%0WqMtGR{RT1$W1|{JDmd6=WLOi@sL1GhlXu7jirHj)8xMLA4xp(83U? zOBZV-#3P6xVncV3cTY zY_3Jxqn%*eOLc-=t+l{tr}Ik>1r>iXu4>9cUz&-diS$> zp)SU--qKgD@A+fJ%AnAd44AYlU(_P-!V7*>X(qW;t@aIfZBxbp4n1D zU_2VGD*RdarsW?4wTnL8UqGkFFZU;}tQEZjd|Q9yZ2Cw`Bi$FN2ifP!pI%;?jsbLT zj(+u*Tw@7x^`m2~@{V(>f~-N-p8PfACB!scXSm(#%tBJQWTMec_w{k zDU8nEZ2Ie7&%EtO=b8R`0m7>0tacFIcoE4ODy0ccAYa*HP;(e8tv5PM#(zmjXc=#) zHyS|{giJ;dz);@$?WA4LCLS-7Jc&gj5DBBg@5whCp!U3!@0E3yv-4sP#58Io zesOlz)7ABDpQ4*24IrZ)dfp30|7C8R_*gNtt-c}teCK0tQe=etu0>@tL);`3m5H7G zWq<$fQXbDUUlg+E)W~d9_@Vum9S=j%kLv;o`i5T|8tj(e=c@hM$#|cxk|q=3Ei2iR zV&3Y~Naic0pMp=orz>~Pmrb1ZGE=O}s2@3#IA#;fa)W+1g>yNP09NkaQe!nouXJQ* z8hs#1cJ#%5PGZ6(D+6B?Pr0*0owp$iH|NQ|MTS2JSM1(mff!;&GCJN=W&=*rD8BOU zwf+lOsW0i{Roq;UG>?W(j|Vxqkf+8b-@&0dw{A1O;M}bTkG+jzd*t;>t!j7PJ#PonLokn~Is0!Ysop6Mw&niL zO#G3T-~DjCV!gWCgF$@Nvewk;xuEiKWZg+1Bl~c(9^@xcJX3mA6HO86j|$vr*o^^T zxJ2DLJ^WN0zBK8D{X^8dm~s=x!#j5b^n#!tf!4&iyiVZF00aaCiX&Ab)IeZqD>D_ z;QGjAa!wY~&<-q2sJyhd&m;lf@TGMHg{4N70pU=5;mysBKCUkc`p^}Pc8nfLl;1vW zYetU6_NGOM=XI7{NXt-;^Y6V8I7Z)4@p8yR5=^XRQh9Armjx*cb&c0V<`)mM;o_al zEe#C4$ff6VfE!ZV4t{Fo*SKdQZIh2MzZbc@QlDkB5TaI%{K!UXu5_@KNM%My8JXyQ22c?n8cTv`StxO3@Oy~Vg6JRgmUy&drdS)d zD{DTmYyUk)MqgGm?LTL#tU+iUG2hspfSQiIs7EYagRuN$;#<$5h0F=A+sK4-=iU#KU6BUvd z-Ql19gkDEGEl$o63knedgQ(2=ZGMQ-+)r|r$k3Xv3)OKio5ai85HLeOv?WXaOrk9 zC269rI2_1WYxj+&NB}r5iS)OUCFl6d4a)!izWM(xTDUDfE=13h6x%(|5)9GB`Q?-k z&`AIt#y`Gk2_yXP*J;mo+VkswN4jsRHC~0f&0e5j)U-_Ysrjedw?ZO)?&&h%Y-4zP zljr&j^jZD-0Hz;*CcYMJ#GNsPKJAIr(fpll;3j@NFkB0a`$anLNA`@5>t$8<$MblG zo2zTry{W=D6(|jtFBPO4%nxTt&tc^M$w^2|3;P>?pB^DNE0I^*vhG z!`AEFIkm#il1CGTnsm;D&IUT4fkG;f=-A^Z!X@=SQYv!ZQ_&oTYRILIkjr96ch;r% zs2=>2!VQxk3pC&K_n2qVfZ&zKR_mQqBy+(gcFbnblDQ&-Rk~F@BEhR$E+(isbn?e^ z@l{QN`ekcN%js#wN6(Z#vB$Ae%o&(0pI*%58~KI|a%X;|kAc50y$SP_yx@_4Va;8u z2sL1~v|iZrIMo>fx3&rEnD~1%hNR8&v$Gl4a0ZGjBqBabV-TOfEs3G;HZB0w_i3A`gL!C&73tB?(WgqOf^6sceeWAESFD&x zuH?j?%&BgKBQV7hndN;Q254nm5>sR)#4`w_zcLD_sseCi`wGT+c05?Nq4nk?lHT4e zN*A1Zil|inF;{k=$V<`bM!dvBzBdJRcJKebc~eFMvr(hNn{I+?OZKut-({Z9#F4(K z$`!wINQCXfw{0iCVKhyD+HI{j-9FnV8RJsvQ2Lf5n^}H!Geg z^$A*)fgl(qcAKLDx2&^@ZWI7USQI)MJcAs~vdMs6?ROdHCG-nUp~TC8(mNszGdt*!TimU4&$nkR1V1-exsOyhdH4ANkr$OEw*j0 zYn-Uhd6EOnpQAz9L5Yug+BD)fH`!5Rb+$rx&`OSAw8JhcupIqkBHywpNLdh^3fo_4 z((Ce)YWpb#f>if#h2IlJoWF~*-!<`5LPq3ib5wK^Hfer0mp!L@XKG(92-5+8b5395 z9SZv2+=!hi@nsiCs_eFFr9YjyCY#5<#2&xu@9JgCTJtV8{_u|iWw4b$YmsM0Wp$~U zF1Qn!W47gw{LN^EWowtQ6Vsm0fo+Xw3M zK=djz3sjyM{Vn2jc1J9taO3>7=ptDpSpsBZ@S_2Td8vwi$+rTZmhWWK{yrd0nd|$L z<6~o-im%yWX?|Y>{hp&(%fwi%Kgub{c8>>D_NcGRJ>j`wXbxR6*BQQyx%0s9(p8r+ zN-xGOfiW-_1=6sAamV6*GuSZxwk=>fdsNJ4;NZT^6qt6LN^XMCh*yfvi##A+@e`pOEA%bKysf&;6H8 ze70y-9#`=DL6&h{W2YPT+R$B{Z03C7>$om4Y)A2(r|(!L4>nE1(m5s74`@qKe3jBY z*S>)$aazVnjjcxt96#Mih3`k24yz29I2!9KF@UMOj}6>L*gE?UIgsjqhQ>k7MhXn*?iIh#B9-O29z`znba zpANEa$MkHZlFPSQ&iu*`DF0D627Iven0AF z6}vW_k>&I>XMWFEFA(rJU$SCpE5;tX-UPzW2{|G^5>;X^k}c-+V)?me$yx$LzB)nu zTDpwqPtO$f!@G0rnq!EYFl30DV5yc8%HO{GMNP!q*T2$$k#hfMFS&n^gQDOT&PU(WvL{8^OdXJ$TcqDc;m_KLzH>xUgmy{Zg*!L=D`&Q!Os-)+)cb41{!`|&|?t87& zB4RYYb`%4R^qe41TOZ-MYft=c!jN&+@w=vLVcX8D_B!1~HSssbD)Ye>RUvHX!^ zul7FWhEX?)-gdjDN%%CPeEqiq!*K#FC6c9JpXTcw0?f?1VFeMY$vgFEl@8xDe&I*H zLs>0Kg)o&H8JXIV@2jV|^G-lvr6v3OG1rO1K`o?(r+hDN0#$H8@KoReh;HUMj zes{cW9b39)#ym-Ayx{PK@_A;Iqmn?ctiMm;UYs^xG~?|uJv|Tzw;K8EW!7$! z5L-k<_Uo8JK?lC)4gGVk=`wu7YZJy=S_EI&ZZz?rY@DE?Bq?e7SG}1XN-mqmCip;l zwI~{W@iqo1$A6nz;P?OP-V#mbunOJZL<=soeYjEWza^5_028LO9yOwjyr;a0z#|N- zbGlaOZs~BLzX|;KpzZT7-Pz&DaKQ-KXF28tGh8q$@4Z!e^25nYTXf4|xPMHM)E*aS zC$V70v-rReCQnzuho8RdldX(j-Lrc{{DBb{Y+SkJb@%yd#6Do!yx=CVF^B|iBSfHy#68fODy5UsxFEybLeS#Q zL#1oaIhk(9n5*1jE;i`T1Zuzo$i0zvznAK4dT_} zibwV@wV}_r@NjJpc#=i3z|U;*B@LHfbvU+#>s?#EPXWeLThd0iW(@-Y6-M}Bh)W<5 z|CTh9D{|MSZ1Yfi>&NKRxkCOOUsQR;U6QNmG7=EwtF}7=xt?U^tEcRx>-|(kR$gM# zHoC)EHQF*m>x7156mA!8z?JbQdDk=qMxEBr$iPJOz{ChlTIYd=nf12(o%%p=jRc>! zxt>K2ojRcn0!nwm+c)eW+oxJYA(yc+<1ml=>Ix>8Qi@i_UC zPbG}`|J078rUwVnu&{{plD^+>Vl6p=SsFXmX{)e-9qwGlf|OZ-4S@nI_98 z7;*#j#;uR-JuO)?*PZF`NCeK))NS-Z$cNC(cL;o(!08>J~+9FMt4fUJaFz2bpf|9RgkGjsJ!fI8t; zi|*Sl|1RD89|x{vzNc?#=rg-Ef$7kw_bXv1?N68z$L;Of5H@gM)18J9<%#RXSRQm~ zYbpD)_O#%kr%x-w21;9+0Yz|N z(XI`N9&X>?%0*NwHLdgVjxb@XkNvz&cE}K|!cYp4N2H$Q?MNm2-`=>gpMrNj9<@O~ zsSNoDL!OM0kcU+a(gW<)$5_Y#76})GP!Nb-rtuyT$9~PNmE>i$5e9^K^ET#c%;8Hb z?e=_GTLI1o;t-*r$)Yqq1d8YI_A|SEIem;yWHZz zHIQ&6dG&?JQ&(1MTHn4AHDKsgwLjskd)3@t4dQmZBw$kH@Z5_cQ{D-9UKU^yDXKQ| z?moT5_6IzZmoHx$Ve$IjUGd$W4LVhM`|{e&6@a!$Orv4e=PFGgwn&K6GqXP{&IQ|A zWWUhC`ZF_arMaB|3AeTjdzOtof-vrmC8E5}iyjOIkLfX4+uwU-4jda3aVl=L%FFUe zqqKI|bQ@k+7Fq(I?-WOW7UFfe`1D|3HcE(%8%%R=XHPj`_wWMslxGKjdEd3#$wnF3 zg7L=leZ*)lyVr9NMI+WMB6BSxfeG(-VkPP$m(Pf&eY2JP5FcSUq^WnqowX6F#N{0U z@OXt4c?R;`-#2^1V_W1FVp2w^_oa8(b`cqdL`w?gBlk_|P;g52Wf5zmlWFFnzwF0^y>{Hzg#%I-hrl;3=W(nZ@JSta0b4UacUv=yTq1`^wux8&U=m1n9!gm zu0$-(b(G5HD0<7Yoi7GwKV8gqlid}0vOsemoVr5 zD&KoN*YDWm)<oK011@Oua-!=NT+xjm_+| zkSxEm>%F8AN73k|DP@>ApaKW+Vn|u(T4f|${BrvIcy@LMB`NKt4ZN~5op3UJKiH&? zXy6xzz=YF~GAQ4aoS;wKSVz~mGjpv|$F!JKQ_=PS<@iK-OPBWShQJm29xm(WbP7krpYyqQK)asuuv1cRwHFJ-~Kee`5}@?QvxRQKly7tUs#D0JVcNH*T@-XZ&p9rqet26( z*J$SyIl_45L^j%f+Jd>3*UquLQon7*87PdBGh~U9tmssl6BRXIF1s_x!`JVTyh~N8 zh4Tr!k#;}ISk5ojg)uerbj5kzN8CwqcQzO?|5UA^u{EtT%0;#QWcTRMR<=0ECCiP( zO}Z||C)^krZ}FO50>YtpeZ3HnEnWEDu$Rh(DU?HbH0fcxK`9YzoLD_60yGWVfH<)I zVI-@Is{;)KWch6(BljFbQ*yu`xT{dadm=sFYDo@rXVx7p?8vXiKGLgt@FvAP5(n9S zjFE54fs>=RcYc^l?vgs_GKQ>1t8?ps1l{m+f8QPa`3{{{ERWTU`&~088y)-OGmvCb z2{Af4oTquPLNbml>9uN&(^5&9Jt}KHt^@G_NWr$2;rO7eAGVI&_5jGGC}D`H>;Y|` zp86#9P-|k1MjVxxTb6tf*?G5cw1d_}P7nOu<-UF-2@|@rD;eye{-$!nC8mp z65P4E!xMIjdlhNpvl<#EcJ~(0{`E?lfseLc&X*whB(W6ZTt8)JE+cyyXn*Zq|2u1C z8trI3vP?mrgC7V?@9dD7AFR%;Xn!)%TY60>cc0CSO45d2es^4)dei%w4_H~o0NM$5 zZxTu8?L&}qreHf8A${V`(EGMTVDY@NtT5r9BNjgIv4l%<0ylG>mwL%%Ql`=2LLCcZ zR=rJ`^jC{0v~2td`z$y&CJw6pR*c2bw00mxxE#HE8>^F|BiImwmr~-AL`H_4K=C|@ z^t`W^?MG~!FMs^714Uka-q;%0n(Q~cSgD&n@}&(O#oUb_KQ7vnE^) zGK1>g-b^ZAIc~W!&)m*#5aA_~nzwZZ8KC%NU{8S)^Hn7-fn`TnnEs{eOM0QkF8y_8+otA4@3 z=l)NtKU*{Grki*Gtt-h;i5XM}#3HHJB6B}4C?vH~pA-MDm<}}KeieB{p*jUH z5vd`@aWiuTSymU>2o>w=O{ST$Pu9_7Mc4egUdha!P4I}cRNdj+X{tJeMx-7N%2G`1 zMQ#!G)v}j2whXwsw6t*^xhqwrxr)q>XrbZFjrI%U zR}V4srCgXb@6=s*k(-eN88COB$RrGb$;%gDi&5dkd+mDKUgKju!wbPDkY?$O*^V!1 zluX{Um25`?6yJNV*&#lRAs3gAB%j+GhLcsN1gGuL*y+wKG>wK|=kpY6fi0N|B|SYn z*4ICFU2?|w-T%}RDM=WFkO~=XFs*y~4y_Y>#Xzmr`kMbgE8u9eR<8jOc&bJ{UDHgH zy)?njBJGIFN+zBIA5z1`kmL*q;v*`S7$4rsZqmI!1n(rx@SJA&3sS^%Y&r2Gai8l} z8cQv!Qqxf2JgcdlscFF;OA}SpcYFyK%*f;*kjPWyqW!Fy6DvNO;gs2P2j1x#;EaGC zdG1M0OW|&2%Gwc=wdE3uee+R8T`Gi5_F!S=rn36MYZzxu+P7V&fLGmL-`{N7h23D5t3 z*up6zrm>UxGd0FFrmjC&OJI=lH_ zOvxi~=rVu(iPisCo_~B`+ym;>yMgCE*8n?Fz9zb+MvGo)YLlwGhPC=!=pkZ1X&Fm$ zCa!~#eQYL{u3T^G>WX={FiHlF03~^AL0%y~Etq{45LgYA!)m6ueM&T)Sa)2buV`Oz zTyHBHo@A2*BgmR7Bpm{)A1Tkw+nDY1yF(ygYOa^Q9a`igAmhZcB@%l*pf4?|cCN#| zn$$9~Ds1jdJmVa%h2lK~69ZgFd(vx7Uvf1OO@`0l zOFh!ZHfE02J2@(>w#Ej|`*ldoHY1;}u2~BEjVHHH@nbA%qx$(p(Y;`-3#**apu*5k z0v}Ae`SKhhxeAIx8}n^Gwkq5CV3JglY>yUm1r@4@9LJwufsJ5Mu`5Vsy5ST{F;`A3M^Oe9?!%l>uPQCmVCsBoOU|E3!jcNW* zy3BdM-wRmcf~i7zq5_XiE5PW|J7f}7Lj0LFJRfz$8vXg-rEI-#I{!Q`c=L0AGvgY` z1rHPlFxSAw)X4dT5`NtgM9~yN@vgH~*8>zbDGP!y&(|Kl5-?J?fG>c^J46eyAoGsqlp3 zoH;SRTEa~(^jT5MJ6C@qGzTm2e!@QXbqyw|;KDUMt{wQ1CM(9td66?2R|m*CQLba! z{#{AiLs-b3#G*ArwkC&Yn3o&N+RGA%AYm>)1@x8Mi|6V~Ik*ybEVj$-OE6hkqi=mP zNl_+fq!b6XJxld(71~N^&&m3{KDI)nFeprkXRc)oX<3G$kFQY5&$k5}8jinlngK%% z6u)A-|Fwa$rFHdheP^QmVAnK7dzOM&OiREEt{}Mp8mV>L(0|UR;C6J?2QY_xl)h}EQT$5-zkzs$Y`M8Z&=h35dSvD0IrBowKp7bs{C=#2 z&q++QlIjx;H9=CcFgQMx%aW#IK+ zRfqqZjq2Zxj@7e(jmg%WooUrum&tuaihdcZ*_(_+dMeEBr88q#mC|O6ai6)AlsD8+AG&Jm9kSm>6Is=NV2kTLU*g*dD_dm)s)3-<6j%j zmKmINO^}~00!&*^jpd6>ZfvdO4GGa7 z2JQihK?1kJPz;|BwasEJaD&A^16Z4Z?I6P(@g1y&QPNiZl#+m^n5EPI5qfpIn>kw^ znWvmt1~S=rbqSuvnW(^iT)5BY&=7t{#4D|;8q48&3zv!h&AwT_N4>6Qv+&K48d5G( zy!8EDa7@j5I0yYAsoRRbMTQ4n!UN;x*iQ+_=6tmm)^XDvtGkB>rF6n*rWiRjxgQCT z6ZsCXcpW!x9K-!Ag?}Rj{dCI|m2Gv$-WC?AJj^#sCLk-Tr)1PD3E|6A?i%J>4ZqkO z?NVc@HoisWwq8N^uZ3F&^mQh`TSUHEtDvkbiZo#R3Ne-k6cJCzm&{D^iHV5{&nqhz z@C*hJa`?{Jm}(?VAW$t|XjwDZH_HXxdU0Q;eKl8Q4Z0%E> zN~OBBmyly(Z?=t%jqvQ|wi_sP!@kwiq+3~R<9866bfNRg%F5oXeuJ z2W73Il9gTf@wrx}0qrXHzB|uHAdy5llT$vVAji=IElh?G3jq^FdQ)!rL#YK!OX|(9 zaA-FDza(G&ODml5t0Lo1$8C%ZUZd3J^4y#wW_$ag@6)a=2nB7D%TBKk#$R2pdS$Ah z4t?-9s@JpYe%6thT3Pf~zE0#SP+RRP8EDq&3)CKeaM_!~wr{`UrBh1VtHBZZbZRtJ ztcSJP+xit))QBVFqM)D~C z`6@XWE~l-{WPoqu*1Sj!=Iz$wvLJFc0GBl*AAriX_)Tvf?@mrnsiXFsD0>;($>b5= z?a%|__+WX1h3=m&EYT3XY4W+gK3O0FwM@OxDfdIuuhQQs4d<^%?mrXZL-HvemkAI= z)bO{9k|r+(po@m3Tlik&xZyU-RT}la+9JG8G>K0waIc<3_=c~qdR2fNQ=9pFF>c!#{n1zFZYD-^ zMlJ`QVRjhBx}`)!ymkSL(97w!^4Zc6(_X%q)>`F~(%)DLXsMcT{)q@b{9e_`dl$lI zwe;$fq5(NTQOZ9hfrfek05e>b`1a~4QO|zdzq1xqwWRIIj^nuf+Ry|QU{2w7M`*JF z8^p6o13WYLJmoG>={?V>uHn}*^yOQKoee+{%8I3y^|tEWZERuDzvNRuWE!23x<#r} zH*{p693~i~dn<2c#rQ5Y=wOPaxXtIzc=H=ZG88%`JQ+pfqo~VDQxKhq-p=UTq^~R7 zT;f%St`f)D=K7t=3QrjGL(p+Qyvu0ymo{XEgu9}S&762N=zK4uGNX{G{T&#LrtJm!kb zI1g6y6dgOx-NDbpw!7D&1EM7tL)YWN-&(e==CNl+Gd!4YEA12_yO-))c3dCZOLR*I zhaLpUq7+}@=Et|zJ$^MSj+Z)}dpSjx8;}rvXe5=kn%+G6Q(aq3Ewh&{BGqX7KqL97 z8^4EyLeR7QIQ4wVc@);;@|Upt8U^HdIm|B{ifl;2r<9K;fP_4l_>gm#{+t8*O@v>O zjk*vtalqlz2AIy~I>*>di zWJpb0J)WMOP4jWS(FnbUQ2t`tt+K~?TH(2P56?wvKoGplX2+HHx>l)n5ib1ueG0BN zSGOe)X6m^h&lq!Fy!?#Wn^8U8NYs03GbJ4feeU?9_512Rxr?J|GhYWgL+}XWD#*8^ zEo!0D74<=eje-KE(6UglbfCmYmuY!~f6-zp@(?q^d?6)%P~i5)eYceWE z&j=!?K+LyfTSVGc(g|0ylmm*AQ59RDB2a_HRgYp8hqfhBQrA$uBPs# zoLxz)zt6v4)$)ki^1#|TpNQpohMXHcGM~O-fL-U^HT>gjwbdY78hIDZbdpl8hZod+ zvURmpvSS;#X&3kx&Wo{WpBwO3SspQ4Jt3045K?vkzdF4!p}wMU+dLR66M+_u)(!dH z=AJcFuadgE%`n?6HK;^Ax$P(lU;T;uv|5+mcI$t?nxu50dEWYlblFU={`xpuPh{)q z?TKOi{+a*56I28q`M_4bJ%McbDNpD^;favYRLn`Z3PhN+J!BF;@=#Ug4(-ps6wR47 z-^z~KKPyXbHo6phvIIR!S7;(8PHfPY<23ZWtaT1EFFrsvS zbxWssjn3@$N?#XYr{%g$1uk6E%v>-|4$8m8=U&lT9#}&mTO6R1f~Oi&oA);5A~%+0 zb7Fpi<}MCYfT{o&UaD8OhniOn(=`q_#e1{Y7Naxe8-P!^5arj7>Y4NOEt+%Rlo9u1 zp(L7|f|u)tqzLP|JeZTIeR4G!*koSZRHRTG0cpW^I)0Yr04k5!ND_s>j>Fzxn~?ZM z0PADfE~vFB0}rqmq1vTe`a@s}u)<5@_R z%tQeDlBYq(6RAG)^mP&EW`=A`}(n;6Y(1tBhmupAWVhQILxw)sXDjAVK#b@zfb~M z`Mm0Da`N&~8OD{W_l+2Z(MHOQ6F4O)CA*7-&KB912TXfE1}g1&C%R25^4zws=40@% zP{M@(cIxp?it0WRLxy8;F-nVbXp&_yg-vPI0757mWh*9SRrfm9K zfITcI{{v$(=ePNi6^EFrWA)=gI)0&pJW*6iD0QI};zO04*#oYDEMj#9tn%B=uQ`u> z9Q{TsA|(a5A5e;b#{o~C(`0XPSzNTOd{YX-d-H`Dxd2WS8&fYj6hWGY_W@)AyaLh} z?!#BK%L;XD=~k1fY#W&j<CiAb_9+tA=x=B5nRSm^Cn|U*D_0MPQO2=nU}F;JQ=RzJryu zaPFO=?*+}$9%WU)2CMf3)s{<TZsL>=EDPBc5Va?Mo);Mnh|*TjbKR5@>IeSMCo8#3+vbhcsW5%eD$@B34~%Vn z<#f>md#3QAI5XX1FcEI8LQ+3l?*ApyPc%J4>L3E*G^-0*n0k-c;~sU5?czwAug%c< zyX%h}Q7VkPRmZ)VK6y;(=H#y}Ofx4O^`S}0ckz*r=DD{3qtLX$v>mHS<3q5OP)pm$9V8xfznnAlm;HvmXrRR#?Bkt`e|vO$eDja3jBWyVuZmIN08J3<-) zPPJd6$wF+aiTN9Jr36mamf**2Bp5^=OhCnzjizHTR%M;F2K>l#Tb7t>@f9?1Et?e# zFvwZ8hyS|C<;EEGX8h>#uS9r?rwgol zfpq*Q?z~VLKm~#7&`Hh;dDxBII`_*8`wYCH{1w|{#=>lgQpn%LK9kHSyuZ3p))|_! zAPbg$YpJ@mGNfK~uX^#U%k3>V=yXs;vIzuS+@blQtzF#3IvVe*m>ev`!AL<7k{N`} zLp4559C ze7RO<@<5`aD14vlg+_;J+uP&YjYy%B4&}i_N~bPQ@7pUaX$E%a?QSKc9^`7>6A*;v zFuUxw-kX`Y(HwH(Iv-1(2<%0ln0$F62QY;2GmrmIVb|eL_5bfxN>Y?M$SftH^A)}_ zGO~#%;~?8fNOG)f=Ns93uZ&1K)-lTAWcIak;>Zr?*gNCon8 qwnKB?&EiV_jk`f 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 - ![image](azure-ci-builds.png)
- * Click on the link "View more details on Azure Pipelines" link. - * This will take you to the actual Azure CI build page. - * On the top right of the page there should be a button titled - "Artifacts". Click this and it should show a drop-down with various ZIP - files that you can download.
- ![image](azure-ci-builds-artifacts.png)
- * The ZIP may automatically download for you. - * However, if you are signed-in to visualstudio.com then you might see a - dialog titled "Artifacts explorer". - * In this case click on the name, then the "..." button to download the - zip file.
- ![image](azure-ci-builds-artifacts-download.png)
- * Download both the x64 (64-bit) and x86 (32-bit) ZIP files. + ![image](gha-ci-summary.png)
+ * Scroll down at the bottom to find the sub-section "Artifacts". It should show you list of zips you can download
+ ![image](gha-ci-artifacts.png)
+ * Download the x64, x86 and ARM zip files. * For each architecture: * Extract the Zip file. (It will have a name like - "20190829.6_ICU4C_MSVC_x64_Release.zip"). + "icu4c.Win64.run_#104.zip"). * Navigate into the folder with the same name. - * Rename the file "icu-windows.zip" to the appropriate name: - * Ex: The x64 zip for version 64.1 was named - "icu4c-64_1-Win64-MSVC2017.zip" - * Ex: The x86 zip for version 64.1 was named - "icu4c-64_1-Win32-MSVC2017.zip" - * Note: Note: As of ICU 68, the pre-built binaries use MSVC2019 - instead of MSVC2017. + * Check and verify the names of the zip file are appropriate: + * Ex: The x64 zip for version 76.1 should be named + "icu4c-76_1-Win64-MSVC2022.zip" + * Ex: The x86 zip for version 76.1 should be named + "icu4c-76_1-Win32-MSVC2022.zip" * Note: For RC releases the name looked like this: - "icu4c-64rc-Win64-MSVC2017.zip" + "icu4c-76rc-Win64-MSVC2022" * ~~AIX Bin:~~ (AIX is broken and ignored for now.) * ~~login to gcc119.fsffrance.org and copy the ICU4C source archive created above to there.~~ @@ -360,7 +348,7 @@ run \`make dist\`. This step publishes pre-processed Unicode property data, which may be ingested by downstream clients such as ICU4X. * Using the output from the build bots: - * Navigate to the Azure Pipeline `C: Create Artifacts from icuexportdata` and download its single artifact (`icuexportdata_output`) + * Navigate to the GHA Workflow `icu4c-icuexportdata` and download the artifact (`icuexportdata_output`) from summary page * Unzip the file * Rename the `icuexportdata_tag-goes-here.zip` file to the correct tag (replacing slashes with dashes) diff --git a/docs/userguide/assets/gha_run_workflow.png b/docs/userguide/assets/gha_run_workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..3923cf4fe674b4cafc1dd7a480d29459bdad1686 GIT binary patch literal 12129 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 j!8oJmKTyNqUzc$PlhW6JF;N15 "Github Apps". - -In order to configure a newly pipeline in Azure using the Github app for Azure Pipelines, you must do: - -1. Create and check-in a new YAML file in the icu repo at `.ci-builds/` -2. In the repo settings, go to "Github Apps" -3. In the Installed GitHub Apps section, click option to configure "Azure Pipelines". -4. A page to update Azure Pipeline's repository access apears next. Click on "Update access". -5. Next a page to authenticate with your Microsoft credentials appear. Sign in with Microsoft credentials. -6. Select ADO org as `ms` and project as `icu`, click on continue. -7. After authentication from Azure and Github, you come to the new pipeline wizard. -8. Select repo as `unicode-org/icu` and select "Existing Azure Pipelines YAML file" and choose the yaml file created in step #1 -9. Review YAML file and click save. You will find a new pipeline created with name `unicode-org.icu`. Rename it to a more appropriate name - -***The pipline should now run as per the YAML rules and would be visible from Github settings for branch protection.*** - - -#### Jobs - -Jobs can be added, removed, and edited merely by editing the YAML workflow files. - -The syntax for Azure Pipelines workflows is very similar to Github Actions, including the YAML format. -However, there are noteworthy differences in functionality and the expression of equivalent configurations aross the systems and syntaxes. - -#### Conditional Triggers - -Conditional triggers can be configured for Azure Pipelines similarly to Github Actions. - -Note: The triggers for merges to a branch (ex: `main`) may need to be duplicated into a separate trigger section for Pull Requests because they seem to be handled differently. - -### Caveats - -In order to set up a pipeline, a person must simultaneously have access to the Azure Pipelines project for ICU and to the Github ICU repository. - -If an Azure Pipeline only has one job, -that job might not be shown on a PR's main page within the list of all of the running CI checks. -There will only be an entry with the pipeline name in the list of checks. -However, if an Azure Pipeline has multiple jobs, -then each of the constituent jobs of the pipeline will be represent in the list of checks, -in addition to an entry for the pipeline itself. \ No newline at end of file +1. Go to your respective fork of the project (username/icu) if the PR is not already merged. Otherwise, go to https://github.com/unicode-org/icu +2. Select on the "Actions" tab from the top bar + ![GHA Actions](../assets/gha_tab.png) +3. On the left pane under All workflows, find "Exhaustive Tests for ICU" and click on run workflow, select branch and click 'Run workflow'. + ![Run Workflow](../assets/gha_run_workflow.png) diff --git a/docs/userguide/dev/gitdev.md b/docs/userguide/dev/gitdev.md index d9c4570a07c..adf4805df29 100644 --- a/docs/userguide/dev/gitdev.md +++ b/docs/userguide/dev/gitdev.md @@ -591,16 +591,9 @@ Send the PR off for review. As in the Easy Way, **you should use the MERGE COMMI ## Requesting an Exhaustive Test run on a Pull-Request (PR) -The ICU4C and ICU4J Exhaustive Tests run on the main branch after a pull-request -has been submitted. They do not run on pull-requests by default as they take 1-2 -hours to run. +The ICU4C and ICU4J Exhaustive Tests run on the main branch periodically once +every Saturday (at 4:00 AM UTC) and post merging on the maintenance branches. +They do not run on pull-requests by default as they take 1-2 hours to run. -However, you can manually request the CI builds to run the exhaustive tests on a -PR by commenting with the following text: - -``` -/azp run CI-Exhaustive -``` - -This will trigger the test run on the PR. This is covered more in a separate -[document](https://docs.google.com/document/d/1kmcFFUozpWah_y7dk_Inlw_BIq3vG3-ZR2A28tIiXJc/edit?usp=sharing). +However, you can manually request the CI builds to run the exhaustive tests. +See [Continuous Integration / Exhaustive Tests](../userguide/dev/ci.md#exhaustive-tests).