From 3fa5f1cea493b41c86358ec7abca01d9b12bf5e3 Mon Sep 17 00:00:00 2001 From: Haleclipse Date: Wed, 8 Oct 2025 21:12:00 +0800 Subject: [PATCH 01/10] fix: convert API usage reset time from UTC to local timezone with rounding API returns UTC timestamps but status bar should display local time. Changes: - Convert UTC timestamp to user's local timezone using chrono::Local - Round up to next hour when minutes > 45 (e.g., 04:59 displays as 5) - Use Duration::hours(1) for proper date rollover handling (23:50 -> next day 00:50) Fixes timezone display issue where Shanghai timezone (UTC+8) was showing incorrect hours in the status bar. --- src/core/segments/usage.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/core/segments/usage.rs b/src/core/segments/usage.rs index 94fc27d..51a00d4 100644 --- a/src/core/segments/usage.rs +++ b/src/core/segments/usage.rs @@ -1,7 +1,7 @@ use super::{Segment, SegmentData}; use crate::config::{InputData, SegmentId}; use crate::utils::credentials; -use chrono::{DateTime, Datelike, Timelike, Utc}; +use chrono::{DateTime, Datelike, Duration, Local, Timelike, Utc}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; @@ -50,7 +50,16 @@ impl UsageSegment { fn format_reset_time(reset_time_str: Option<&str>) -> String { if let Some(time_str) = reset_time_str { if let Ok(dt) = DateTime::parse_from_rfc3339(time_str) { - return format!("{}-{}-{}", dt.month(), dt.day(), dt.hour()); + let mut local_dt = dt.with_timezone(&Local); + if local_dt.minute() > 45 { + local_dt = local_dt + Duration::hours(1); + } + return format!( + "{}-{}-{}", + local_dt.month(), + local_dt.day(), + local_dt.hour() + ); } } "?".to_string() From e826bef808af86496eda8840156c71e3ef8d0ca6 Mon Sep 17 00:00:00 2001 From: Haleclipse Date: Wed, 8 Oct 2025 21:12:53 +0800 Subject: [PATCH 02/10] release: version 1.0.8 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ade23d8..55cf6b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -160,7 +160,7 @@ dependencies = [ [[package]] name = "ccometixline" -version = "1.0.7" +version = "1.0.8" dependencies = [ "ansi-to-tui", "ansi_term", diff --git a/Cargo.toml b/Cargo.toml index dd8e655..5157ab7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ccometixline" -version = "1.0.7" +version = "1.0.8" edition = "2021" description = "CCometixLine (ccline) - High-performance Claude Code StatusLine tool written in Rust" authors = ["Haleclipse"] From b1c5b20ec760c79cb856d3eeb79369fccedf572f Mon Sep 17 00:00:00 2001 From: Haleclipse Date: Tue, 2 Dec 2025 02:32:08 +0800 Subject: [PATCH 03/10] fix: prevent git lock conflicts and skip disabled segments - Add --no-optional-locks flag to all git commands to prevent .git/index.lock conflicts with concurrent git operations (fixes #46) - Skip disabled segments in collect_all_segments to avoid unnecessary API requests (fixes #50) --- src/core/segments/git.rs | 12 ++++++------ src/core/statusline.rs | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/core/segments/git.rs b/src/core/segments/git.rs index 9e7b73b..6bc9c84 100644 --- a/src/core/segments/git.rs +++ b/src/core/segments/git.rs @@ -66,7 +66,7 @@ impl GitSegment { fn is_git_repository(&self, working_dir: &str) -> bool { Command::new("git") - .args(["rev-parse", "--git-dir"]) + .args(["--no-optional-locks", "rev-parse", "--git-dir"]) .current_dir(working_dir) .output() .map(|output| output.status.success()) @@ -75,7 +75,7 @@ impl GitSegment { fn get_branch(&self, working_dir: &str) -> Option { if let Ok(output) = Command::new("git") - .args(["branch", "--show-current"]) + .args(["--no-optional-locks", "branch", "--show-current"]) .current_dir(working_dir) .output() { @@ -88,7 +88,7 @@ impl GitSegment { } if let Ok(output) = Command::new("git") - .args(["symbolic-ref", "--short", "HEAD"]) + .args(["--no-optional-locks", "symbolic-ref", "--short", "HEAD"]) .current_dir(working_dir) .output() { @@ -105,7 +105,7 @@ impl GitSegment { fn get_status(&self, working_dir: &str) -> GitStatus { let output = Command::new("git") - .args(["status", "--porcelain"]) + .args(["--no-optional-locks", "status", "--porcelain"]) .current_dir(working_dir) .output(); @@ -138,7 +138,7 @@ impl GitSegment { fn get_commit_count(&self, working_dir: &str, range: &str) -> u32 { let output = Command::new("git") - .args(["rev-list", "--count", range]) + .args(["--no-optional-locks", "rev-list", "--count", range]) .current_dir(working_dir) .output(); @@ -153,7 +153,7 @@ impl GitSegment { fn get_sha(&self, working_dir: &str) -> Option { let output = Command::new("git") - .args(["rev-parse", "--short=7", "HEAD"]) + .args(["--no-optional-locks", "rev-parse", "--short=7", "HEAD"]) .current_dir(working_dir) .output() .ok()?; diff --git a/src/core/statusline.rs b/src/core/statusline.rs index bd4e581..5f84bf1 100644 --- a/src/core/statusline.rs +++ b/src/core/statusline.rs @@ -463,6 +463,11 @@ pub fn collect_all_segments( let mut results = Vec::new(); for segment_config in &config.segments { + // Skip disabled segments to avoid unnecessary API requests + if !segment_config.enabled { + continue; + } + let segment_data = match segment_config.id { crate::config::SegmentId::Model => { let segment = ModelSegment::new(); From 664c6dbf4075a8f03b5ba218b82921028c23f674 Mon Sep 17 00:00:00 2001 From: Haleclipse Date: Tue, 2 Dec 2025 02:50:56 +0800 Subject: [PATCH 04/10] style: use compound assignment operator for clippy --- src/core/segments/usage.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/segments/usage.rs b/src/core/segments/usage.rs index 51a00d4..135ad47 100644 --- a/src/core/segments/usage.rs +++ b/src/core/segments/usage.rs @@ -52,7 +52,7 @@ impl UsageSegment { if let Ok(dt) = DateTime::parse_from_rfc3339(time_str) { let mut local_dt = dt.with_timezone(&Local); if local_dt.minute() > 45 { - local_dt = local_dt + Duration::hours(1); + local_dt += Duration::hours(1); } return format!( "{}-{}-{}", From eb9db75b728296b78bf5e8dfb089ee12b6c5006d Mon Sep 17 00:00:00 2001 From: Hobee Date: Sun, 12 Oct 2025 13:13:26 +0800 Subject: [PATCH 05/10] =?UTF-8?q?feat:=2088cc=20version=20with=20quota=20m?= =?UTF-8?q?onitoring=20and=20binary=20renaming=E2=80=A6=20=E2=80=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 188 ++++++++++++- .github/workflows/release.yml | 72 ++--- Cargo.lock | 2 +- Cargo.toml | 17 +- LICENSE | 23 ++ README.md | 143 +++++----- README.zh.md | 151 +++++++---- assets/img1.png | Bin 18730 -> 57078 bytes npm/main/README.md | 19 +- npm/main/bin/{ccline.js => ccline-88cc.js} | 22 +- npm/main/package.json | 20 +- npm/main/scripts/postinstall.js | 22 +- npm/platforms/darwin-arm64/package.json | 10 +- npm/platforms/darwin-x64/package.json | 10 +- npm/platforms/linux-x64-musl/package.json | 10 +- npm/platforms/linux-x64/package.json | 10 +- npm/platforms/win32-x64/package.json | 10 +- npm/scripts/prepare-packages.js | 16 +- src/config/types.rs | 1 + src/core/segments/mod.rs | 2 + src/core/segments/quota.rs | 265 +++++++++++++++++++ src/core/statusline.rs | 4 + src/main.rs | 22 +- src/ui/app.rs | 2 + src/ui/components/preview.rs | 16 ++ src/ui/components/segment_list.rs | 1 + src/ui/components/settings.rs | 1 + src/ui/themes/presets.rs | 126 +++++++++ src/ui/themes/theme_cometix.rs | 18 ++ src/ui/themes/theme_default.rs | 18 ++ src/ui/themes/theme_gruvbox.rs | 18 ++ src/ui/themes/theme_minimal.rs | 18 ++ src/ui/themes/theme_nord.rs | 30 +++ src/ui/themes/theme_powerline_dark.rs | 30 +++ src/ui/themes/theme_powerline_light.rs | 30 +++ src/ui/themes/theme_powerline_rose_pine.rs | 30 +++ src/ui/themes/theme_powerline_tokyo_night.rs | 30 +++ 37 files changed, 1159 insertions(+), 248 deletions(-) create mode 100644 LICENSE rename npm/main/bin/{ccline.js => ccline-88cc.js} (74%) create mode 100644 src/core/segments/quota.rs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66c586e..bda8173 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,9 +5,11 @@ on: branches: [ master, main ] pull_request: branches: [ master, main ] + workflow_dispatch: env: CARGO_TERM_COLOR: always + CARGO_INCREMENTAL: 0 jobs: test: @@ -40,18 +42,194 @@ jobs: - name: Run clippy run: cargo clippy -- -D warnings - build: - name: Build Check + build-nightly: + name: Build Nightly (${{ matrix.target }}) runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-latest] + include: + - target: x86_64-unknown-linux-gnu + os: ubuntu-22.04 + name: ccline-88cc-nightly-linux-x64 + - target: x86_64-unknown-linux-musl + os: ubuntu-latest + name: ccline-88cc-nightly-linux-x64-static + - target: x86_64-pc-windows-msvc + os: windows-latest + name: ccline-88cc-nightly-windows-x64 + - target: x86_64-apple-darwin + os: macos-latest + name: ccline-88cc-nightly-macos-x64 + - target: aarch64-apple-darwin + os: macos-latest + name: ccline-88cc-nightly-macos-arm64 + steps: - name: Checkout uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Cache cargo registry + uses: actions/cache@v4 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} + + - name: Install musl tools + if: matrix.target == 'x86_64-unknown-linux-musl' + run: | + sudo apt-get update + sudo apt-get install -y musl-tools + + - name: Build binary + run: cargo build --release --target ${{ matrix.target }} + + - name: Package Linux/macOS + if: matrix.os != 'windows-latest' + run: | + mkdir -p dist + cp target/${{ matrix.target }}/release/ccline-88cc dist/ccline-88cc + cd dist + tar czf ../${{ matrix.name }}-${{ github.sha }}.tar.gz ccline-88cc + + - name: Package Windows + if: matrix.os == 'windows-latest' + run: | + mkdir dist + copy "target\${{ matrix.target }}\release\ccline-88cc.exe" "dist\ccline-88cc.exe" + cd dist + 7z a "..\${{ matrix.name }}-${{ github.sha }}.zip" ccline-88cc.exe + + - name: Upload nightly build artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.name }}-${{ github.sha }} + path: | + ${{ matrix.name }}-${{ github.sha }}.tar.gz + ${{ matrix.name }}-${{ github.sha }}.zip + retention-days: 30 + + build-summary: + name: Build Summary + runs-on: ubuntu-latest + needs: [test, build-nightly] + if: always() + steps: + - name: Print build summary + run: | + echo "## 🚀 Build Summary" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Commit:** \`${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY + echo "**Branch:** \`${{ github.ref_name }}\`" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + + if [[ "${{ needs.test.result }}" == "success" ]]; then + echo "✅ **Tests:** Passed" >> $GITHUB_STEP_SUMMARY + else + echo "❌ **Tests:** Failed" >> $GITHUB_STEP_SUMMARY + fi + + if [[ "${{ needs.build-nightly.result }}" == "success" ]]; then + echo "✅ **Build:** All platforms built successfully" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "### 📦 Nightly Builds Available:" >> $GITHUB_STEP_SUMMARY + echo "- Linux x64 (GNU libc)" >> $GITHUB_STEP_SUMMARY + echo "- Linux x64 (static/musl)" >> $GITHUB_STEP_SUMMARY + echo "- Windows x64" >> $GITHUB_STEP_SUMMARY + echo "- macOS x64 (Intel)" >> $GITHUB_STEP_SUMMARY + echo "- macOS ARM64 (Apple Silicon)" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "🔗 Download artifacts from the [Actions tab](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" >> $GITHUB_STEP_SUMMARY + else + echo "❌ **Build:** Some platforms failed" >> $GITHUB_STEP_SUMMARY + fi + + nightly-release: + name: Create Nightly Release + runs-on: ubuntu-latest + needs: [test, build-nightly] + if: github.ref == 'refs/heads/master' && needs.test.result == 'success' && needs.build-nightly.result == 'success' + permissions: + contents: write + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: nightly-artifacts + + - name: Generate release date + id: date + run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + + - name: Generate nightly tag + id: tag + run: echo "tag=nightly-${{ steps.date.outputs.date }}-${{ github.sha }}" >> $GITHUB_OUTPUT + + - name: Delete existing nightly releases + run: | + # Delete previous nightly releases (keep only the latest) + gh release list --json tagName,isDraft | jq -r '.[] | select(.tagName | startswith("nightly-")) | select(.isDraft == false) | .tagName' | head -n 5 | while read tag; do + echo "Deleting old nightly release: $tag" + gh release delete "$tag" --yes || true + done + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create nightly release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.tag.outputs.tag }} + name: "Nightly Build (${{ steps.date.outputs.date }})" + body: | + 🌙 **Nightly Build** - ${{ steps.date.outputs.date }} + + **Commit:** ${{ github.sha }} + **Branch:** ${{ github.ref_name }} + **Build Time:** ${{ steps.date.outputs.date }} + + ## 📦 Available Downloads + + ### Linux + - **ccline-88cc-nightly-linux-x64**: Standard Linux x64 build (Ubuntu 22.04+) + - **ccline-88cc-nightly-linux-x64-static**: Static Linux x64 build (Universal compatibility) + + ### macOS + - **ccline-88cc-nightly-macos-x64**: Intel Mac build + - **ccline-88cc-nightly-macos-arm64**: Apple Silicon Mac build + + ### Windows + - **ccline-88cc-nightly-windows-x64**: Windows x64 build + + ## ⚠️ Important Notes + + - This is a **development build** from the latest `master` branch + - Use at your own risk - may contain bugs or incomplete features + - For stable releases, see the [Releases](https://github.com/${{ github.repository }}/releases) page + - Install via NPM: `npm install -g @byebyecode/ccline-88cc` (stable) + + ## 🚀 What's New + + Recent commits in this build: + + ``` + ${{ github.event.head_commit.message }} + ``` - - name: Build - run: cargo build --release \ No newline at end of file + --- + *Generated automatically from commit ${{ github.sha }}* + files: nightly-artifacts/*/* + draft: false + prerelease: true + make_latest: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c8f517a..d12ef48 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,19 +18,19 @@ jobs: include: - target: x86_64-unknown-linux-gnu os: ubuntu-22.04 - name: ccline-linux-x64.tar.gz + name: ccline-88cc-linux-x64.tar.gz - target: x86_64-unknown-linux-musl os: ubuntu-latest - name: ccline-linux-x64-static.tar.gz + name: ccline-88cc-linux-x64-static.tar.gz - target: x86_64-pc-windows-gnu os: ubuntu-latest - name: ccline-windows-x64.zip + name: ccline-88cc-windows-x64.zip - target: x86_64-apple-darwin os: macos-latest - name: ccline-macos-x64.tar.gz + name: ccline-88cc-macos-x64.tar.gz - target: aarch64-apple-darwin os: macos-latest - name: ccline-macos-arm64.tar.gz + name: ccline-88cc-macos-arm64.tar.gz steps: - name: Checkout @@ -60,17 +60,17 @@ jobs: if: matrix.os != 'windows-latest' && matrix.target != 'x86_64-pc-windows-gnu' run: | mkdir -p dist - cp target/${{ matrix.target }}/release/ccometixline dist/ccline + cp target/${{ matrix.target }}/release/ccline-88cc dist/ccline-88cc cd dist - tar czf ../${{ matrix.name }} ccline + tar czf ../${{ matrix.name }} ccline-88cc - name: Package Windows if: matrix.target == 'x86_64-pc-windows-gnu' run: | mkdir -p dist - cp target/${{ matrix.target }}/release/ccometixline.exe dist/ccline.exe + cp target/${{ matrix.target }}/release/ccline-88cc.exe dist/ccline-88cc.exe cd dist - zip ../${{ matrix.name }} ccline.exe + zip ../${{ matrix.name }} ccline-88cc.exe - name: Upload artifact uses: actions/upload-artifact@v4 @@ -111,24 +111,24 @@ jobs: mkdir -p extracted # macOS x64 - tar -xzf artifacts/ccline-macos-x64.tar.gz/ccline-macos-x64.tar.gz -C extracted - mv extracted/ccline extracted/ccline-darwin-x64 + tar -xzf artifacts/ccline-88cc-macos-x64.tar.gz/ccline-88cc-macos-x64.tar.gz -C extracted + mv extracted/ccline-88cc extracted/ccline-88cc-darwin-x64 # macOS ARM64 - tar -xzf artifacts/ccline-macos-arm64.tar.gz/ccline-macos-arm64.tar.gz -C extracted - mv extracted/ccline extracted/ccline-darwin-arm64 + tar -xzf artifacts/ccline-88cc-macos-arm64.tar.gz/ccline-88cc-macos-arm64.tar.gz -C extracted + mv extracted/ccline-88cc extracted/ccline-88cc-darwin-arm64 # Linux x64 - tar -xzf artifacts/ccline-linux-x64.tar.gz/ccline-linux-x64.tar.gz -C extracted - mv extracted/ccline extracted/ccline-linux-x64 + tar -xzf artifacts/ccline-88cc-linux-x64.tar.gz/ccline-88cc-linux-x64.tar.gz -C extracted + mv extracted/ccline-88cc extracted/ccline-88cc-linux-x64 # Linux musl (static) - tar -xzf artifacts/ccline-linux-x64-static.tar.gz/ccline-linux-x64-static.tar.gz -C extracted - mv extracted/ccline extracted/ccline-linux-x64-musl + tar -xzf artifacts/ccline-88cc-linux-x64-static.tar.gz/ccline-88cc-linux-x64-static.tar.gz -C extracted + mv extracted/ccline-88cc extracted/ccline-88cc-linux-x64-musl # Windows - unzip artifacts/ccline-windows-x64.zip/ccline-windows-x64.zip -d extracted - mv extracted/ccline.exe extracted/ccline-win32-x64.exe + unzip artifacts/ccline-88cc-windows-x64.zip/ccline-88cc-windows-x64.zip -d extracted + mv extracted/ccline-88cc.exe extracted/ccline-88cc-win32-x64.exe # List extracted files ls -la extracted/ @@ -137,20 +137,20 @@ jobs: run: | # Prepare packages with version management node npm/scripts/prepare-packages.js - + # Copy binaries to platform directories - cp extracted/ccline-darwin-x64 npm-publish/darwin-x64/ccline - cp extracted/ccline-darwin-arm64 npm-publish/darwin-arm64/ccline - cp extracted/ccline-linux-x64 npm-publish/linux-x64/ccline - cp extracted/ccline-linux-x64-musl npm-publish/linux-x64-musl/ccline - cp extracted/ccline-win32-x64.exe npm-publish/win32-x64/ccline.exe - + cp extracted/ccline-88cc-darwin-x64 npm-publish/darwin-x64/ccline-88cc + cp extracted/ccline-88cc-darwin-arm64 npm-publish/darwin-arm64/ccline-88cc + cp extracted/ccline-88cc-linux-x64 npm-publish/linux-x64/ccline-88cc + cp extracted/ccline-88cc-linux-x64-musl npm-publish/linux-x64-musl/ccline-88cc + cp extracted/ccline-88cc-win32-x64.exe npm-publish/win32-x64/ccline-88cc.exe + # Set executable permissions for Unix binaries - chmod +x npm-publish/darwin-x64/ccline - chmod +x npm-publish/darwin-arm64/ccline - chmod +x npm-publish/linux-x64/ccline - chmod +x npm-publish/linux-x64-musl/ccline - + chmod +x npm-publish/darwin-x64/ccline-88cc + chmod +x npm-publish/darwin-arm64/ccline-88cc + chmod +x npm-publish/linux-x64/ccline-88cc + chmod +x npm-publish/linux-x64-musl/ccline-88cc + # Verify packages echo "Package structure:" find npm-publish -name "package.json" -exec echo "=== {} ===" \; -exec head -5 {} \; @@ -161,11 +161,11 @@ jobs: run: | # Publish platform packages first for platform in darwin-x64 darwin-arm64 linux-x64 linux-x64-musl win32-x64; do - echo "📦 Publishing @cometix/ccline-$platform" + echo "📦 Publishing @byebyecode/ccline-88cc-$platform" cd npm-publish/$platform npm publish --access public cd ../.. - echo "✅ Published @cometix/ccline-$platform" + echo "✅ Published @byebyecode/ccline-88cc-$platform" done - name: Wait for NPM registry @@ -178,9 +178,9 @@ jobs: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: | cd npm-publish/main - echo "📦 Publishing @cometix/ccline" + echo "📦 Publishing @byebyecode/ccline-88cc" npm publish --access public - echo "✅ Published @cometix/ccline" + echo "✅ Published @byebyecode/ccline-88cc" echo "" echo "🎉 NPM packages published successfully!" - echo "Install with: npm install -g @cometix/ccline" \ No newline at end of file + echo "Install with: npm install -g @byebyecode/ccline-88cc" diff --git a/Cargo.lock b/Cargo.lock index 55cf6b5..bfa409f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -159,7 +159,7 @@ dependencies = [ ] [[package]] -name = "ccometixline" +name = "ccometixline-88cc" version = "1.0.8" dependencies = [ "ansi-to-tui", diff --git a/Cargo.toml b/Cargo.toml index 5157ab7..90f6ab9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,11 +1,11 @@ [package] -name = "ccometixline" -version = "1.0.8" +name = "ccometixline-88cc" +version = "1.0.9" edition = "2021" -description = "CCometixLine (ccline) - High-performance Claude Code StatusLine tool written in Rust" -authors = ["Haleclipse"] +description = "CCometixLine (ccline) - High-performance Claude Code StatusLine tool written in Rust (88Code version)" +authors = ["Hobee Liu"] license = "MIT" -repository = "https://github.com/username/CCometixLine" +repository = "https://github.com/byebye-code/ccline-88cc" readme = "README.md" keywords = ["claude", "statusline", "powerline", "rust", "claude-code"] categories = ["command-line-utilities", "development-tools"] @@ -28,9 +28,12 @@ chrono = { version = "0.4", features = ["serde"], optional = true } dirs = { version = "5.0", optional = true } regex = "1.0" - +[[bin]] +name = "ccline-88cc" +path = "src/main.rs" [features] -default = ["tui", "self-update", "dirs"] +default = ["tui", "self-update", "dirs", "quota"] tui = ["ratatui", "crossterm", "ansi_term", "ansi-to-tui", "chrono"] self-update = ["ureq", "semver", "chrono", "dirs"] +quota = ["ureq", "dirs"] \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..66d46c9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,23 @@ +MIT License + +Copyright (c) 2024 Hobee Liu +Copyright (c) 2024 CCometixLine contributors (https://github.com/Haleclipse/CCometixLine) +Copyright (c) 2024 ccline-packycc contributors (https://github.com/ding113/ccline-packycc) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 91512b7..ef287ae 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,24 @@ -# CCometixLine +# CCometixLine-88CC [English](README.md) | [中文](README.zh.md) -A high-performance Claude Code statusline tool written in Rust with Git integration, usage tracking, interactive TUI configuration, and Claude Code enhancement utilities. +A high-performance Claude Code statusline tool written in Rust with Git integration, usage tracking, interactive TUI configuration, API quota monitoring and Claude Code enhancement utilities. + +> **Maintained by [HoBeedzc](https://github.com/HoBeedzc)** - This is a specially adapted version of CCometixLine for 88Code service. The original CCometixLine was created by [Haleclipse](https://github.com/Haleclipse/CCometixLine) under MIT License. This project is also released under MIT License. +> +> This project also incorporates code from another MIT-licensed project, [ccline-packycc](https://github.com/ding113/ccline-packycc), with attribution retained. +> +> 88Code is a third-party Claude Code proxy service. This project is a voluntary third-party adaptation and is not affiliated with Anthropic or 88Code. 88Code websites: [88code](https://www.88code.org/). This project implements automatic adaptation for both endpoints. ![Language:Rust](https://img.shields.io/static/v1?label=Language&message=Rust&color=orange&style=flat-square) ![License:MIT](https://img.shields.io/static/v1?label=License&message=MIT&color=blue&style=flat-square) +[![CI](https://github.com/byebye-code/ccline-88cc/actions/workflows/ci.yml/badge.svg)](https://github.com/byebye-code/ccline-88cc/actions/workflows/ci.yml) ## Screenshots ![CCometixLine](assets/img1.png) -The statusline shows: Model | Directory | Git Branch Status | Context Window Information +The statusline shows: Model | Directory | Git Branch Status | Context Window | API Quota ## Features @@ -20,6 +27,7 @@ The statusline shows: Model | Directory | Git Branch Status | Context Window Inf - **Model display** with simplified Claude model names - **Usage tracking** based on transcript analysis - **Directory display** showing current workspace +- **API Quota display** showing current API quota - **Minimal design** using Nerd Font icons ### Interactive TUI Features @@ -43,24 +51,24 @@ Install via npm (works on all platforms): ```bash # Install globally -npm install -g @cometix/ccline +npm install -g @byebyecode/ccline-88cc # Or using yarn -yarn global add @cometix/ccline +yarn global add @byebyecode/ccline-88cc # Or using pnpm -pnpm add -g @cometix/ccline +pnpm add -g @byebyecode/ccline-88cc ``` Use npm mirror for faster download: ```bash -npm install -g @cometix/ccline --registry https://registry.npmmirror.com +npm install -g @byebyecode/ccline-88cc --registry https://registry.npmmirror.com ``` After installation: -- ✅ Global command `ccline` is available everywhere +- ✅ Global command `ccline-88cc` is available everywhere - ⚙️ Follow the configuration steps below to integrate with Claude Code -- 🎨 Run `ccline -c` to open configuration panel for theme selection +- 🎨 Run `ccline-88cc -c` to open configuration panel for theme selection ### Claude Code Configuration @@ -71,7 +79,7 @@ Add to your Claude Code `settings.json`: { "statusLine": { "type": "command", - "command": "~/.claude/ccline/ccline", + "command": "~/.claude/ccline/ccline-88cc", "padding": 0 } } @@ -82,7 +90,7 @@ Add to your Claude Code `settings.json`: { "statusLine": { "type": "command", - "command": "%USERPROFILE%\\.claude\\ccline\\ccline.exe", + "command": "%USERPROFILE%\\.claude\\ccline\\ccline-88cc.exe", "padding": 0 } } @@ -93,7 +101,7 @@ Add to your Claude Code `settings.json`: { "statusLine": { "type": "command", - "command": "ccline", + "command": "ccline-88cc", "padding": 0 } } @@ -103,33 +111,33 @@ Add to your Claude Code `settings.json`: ### Update ```bash -npm update -g @cometix/ccline +npm update -g @byebyecode/ccline-88cc ```
Manual Installation (Click to expand) -Alternatively, download from [Releases](https://github.com/Haleclipse/CCometixLine/releases): +Alternatively, download from [Releases](https://github.com/byebye-code/ccline-88cc/releases): #### Linux #### Option 1: Dynamic Binary (Recommended) ```bash mkdir -p ~/.claude/ccline -wget https://github.com/Haleclipse/CCometixLine/releases/latest/download/ccline-linux-x64.tar.gz -tar -xzf ccline-linux-x64.tar.gz -cp ccline ~/.claude/ccline/ -chmod +x ~/.claude/ccline/ccline +wget https://github.com/byebye-code/ccline-88cc/releases/latest/download/ccline-88cc-linux-x64.tar.gz +tar -xzf ccline-88cc-linux-x64.tar.gz +cp ccline-88cc ~/.claude/ccline/ +chmod +x ~/.claude/ccline/ccline-88cc ``` *Requires: Ubuntu 22.04+, CentOS 9+, Debian 11+, RHEL 9+ (glibc 2.35+)* #### Option 2: Static Binary (Universal Compatibility) ```bash mkdir -p ~/.claude/ccline -wget https://github.com/Haleclipse/CCometixLine/releases/latest/download/ccline-linux-x64-static.tar.gz -tar -xzf ccline-linux-x64-static.tar.gz -cp ccline ~/.claude/ccline/ -chmod +x ~/.claude/ccline/ccline +wget https://github.com/byebye-code/ccline-88cc/releases/latest/download/ccline-88cc-linux-x64-static.tar.gz +tar -xzf ccline-88cc-linux-x64-static.tar.gz +cp ccline-88cc ~/.claude/ccline/ +chmod +x ~/.claude/ccline/ccline-88cc ``` *Works on any Linux distribution (static, no dependencies)* @@ -137,30 +145,30 @@ chmod +x ~/.claude/ccline/ccline ```bash mkdir -p ~/.claude/ccline -wget https://github.com/Haleclipse/CCometixLine/releases/latest/download/ccline-macos-x64.tar.gz -tar -xzf ccline-macos-x64.tar.gz -cp ccline ~/.claude/ccline/ -chmod +x ~/.claude/ccline/ccline +wget https://github.com/byebye-code/ccline-88cc/releases/latest/download/ccline-88cc-macos-x64.tar.gz +tar -xzf ccline-88cc-macos-x64.tar.gz +cp ccline-88cc ~/.claude/ccline/ +chmod +x ~/.claude/ccline/ccline-88cc ``` #### macOS (Apple Silicon) ```bash mkdir -p ~/.claude/ccline -wget https://github.com/Haleclipse/CCometixLine/releases/latest/download/ccline-macos-arm64.tar.gz -tar -xzf ccline-macos-arm64.tar.gz -cp ccline ~/.claude/ccline/ -chmod +x ~/.claude/ccline/ccline +wget https://github.com/byebye-code/ccline-88cc/releases/latest/download/ccline-88cc-macos-arm64.tar.gz +tar -xzf ccline-88cc-macos-arm64.tar.gz +cp ccline-88cc ~/.claude/ccline/ +chmod +x ~/.claude/ccline/ccline-88cc ``` #### Windows ```powershell # Create directory and download -New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.claude\ccline" -Invoke-WebRequest -Uri "https://github.com/Haleclipse/CCometixLine/releases/latest/download/ccline-windows-x64.zip" -OutFile "ccline-windows-x64.zip" -Expand-Archive -Path "ccline-windows-x64.zip" -DestinationPath "." -Move-Item "ccline.exe" "$env:USERPROFILE\.claude\ccline\" +New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.claude\ccline-88cc" +Invoke-WebRequest -Uri "https://github.com/byebye-code/ccline-88cc/releases/latest/download/ccline-88cc-windows-x64.zip" -OutFile "ccline-88cc-windows-x64.zip" +Expand-Archive -Path "ccline-88cc-windows-x64.zip" -DestinationPath "." +Move-Item "ccline-88cc.exe" "$env:USERPROFILE\.claude\ccline-88cc\" ```
@@ -168,18 +176,18 @@ Move-Item "ccline.exe" "$env:USERPROFILE\.claude\ccline\" ### Build from Source ```bash -git clone https://github.com/Haleclipse/CCometixLine.git -cd CCometixLine +git clone https://github.com/byebye-code/ccline-88cc.git +cd ccline-88cc cargo build --release # Linux/macOS mkdir -p ~/.claude/ccline -cp target/release/ccometixline ~/.claude/ccline/ccline -chmod +x ~/.claude/ccline/ccline +cp target/release/ccometixline ~/.claude/ccline-88cc/ccline-88cc +chmod +x ~/.claude/ccline/ccline-88cc # Windows (PowerShell) -New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.claude\ccline" -copy target\release\ccometixline.exe "$env:USERPROFILE\.claude\ccline\ccline.exe" +New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.claude\ccline-88cc" +copy target\release\ccometixline.exe "$env:USERPROFILE\.claude\ccline-88cc\ccline-88cc.exe" ``` ## Usage @@ -188,45 +196,45 @@ copy target\release\ccometixline.exe "$env:USERPROFILE\.claude\ccline\ccline.exe ```bash # Initialize configuration file -ccline --init +ccline-88cc --init # Check configuration validity -ccline --check +ccline-88cc --check # Print current configuration -ccline --print +ccline-88cc --print # Enter TUI configuration mode -ccline --config +ccline-88cc --config ``` ### Theme Override ```bash # Temporarily use specific theme (overrides config file) -ccline --theme cometix -ccline --theme minimal -ccline --theme gruvbox -ccline --theme nord -ccline --theme powerline-dark - -# Or use custom theme files from ~/.claude/ccline/themes/ -ccline --theme my-custom-theme +ccline-88cc --theme cometix +ccline-88cc --theme minimal +ccline-88cc --theme gruvbox +ccline-88cc --theme nord +ccline-88cc --theme powerline-dark + +# Or use custom theme files from ~/.claude/ccline-88cc/themes/ +ccline-88cc --theme my-custom-theme ``` ### Claude Code Enhancement ```bash # Disable context warnings and enable verbose mode -ccline --patch /path/to/claude-code/cli.js +ccline-88cc --patch /path/to/claude-code/cli.js # Example for common installation -ccline --patch ~/.local/share/fnm/node-versions/v24.4.1/installation/lib/node_modules/@anthropic-ai/claude-code/cli.js +ccline-88cc --patch ~/.local/share/fnm/node-versions/v24.4.1/installation/lib/node_modules/@anthropic-ai/claude-code/cli.js ``` ## Default Segments -Displays: `Directory | Git Branch Status | Model | Context Window` +Displays: `Directory | Git Branch Status | Model | Context Window | API Quota` ### Git Status Indicators @@ -244,14 +252,27 @@ Shows simplified Claude model names: Token usage percentage based on transcript analysis with context limit tracking. +### API Quota Display +Smart monitoring of API usage: + +- **Usage display**: Shows subscription name and used/total credits (e.g., `Pro $0.06/$20.25`) +- **Auto-detection**: Automatically detects the correct API endpoint +- **Zero configuration**: Just provide your API key, everything else is automatic + +Supports multiple API key sources: + +- Environment variables: `C88_API_KEY`, `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` +- Claude Code settings.json +- Local API key file: `~/.claude/api_key` + ## Configuration CCometixLine supports full configuration via TOML files and interactive TUI: -- **Configuration file**: `~/.claude/ccline/config.toml` -- **Interactive TUI**: `ccline --config` for real-time editing with preview -- **Theme files**: `~/.claude/ccline/themes/*.toml` for custom themes -- **Automatic initialization**: `ccline --init` creates default configuration +- **Configuration file**: `~/.claude/ccline-88cc/config.toml` +- **Interactive TUI**: `ccline-88cc --config` for real-time editing with preview +- **Theme files**: `~/.claude/ccline-88cc/themes/*.toml` for custom themes +- **Automatic initialization**: `ccline-88cc --init` creates default configuration ### Available Segments @@ -300,6 +321,8 @@ Contributions are welcome! Please feel free to submit issues or pull requests. ## Related Projects - [tweakcc](https://github.com/Piebald-AI/tweakcc) - Command-line tool to customize your Claude Code themes, thinking verbs, and more. +- [CCometixLine](https://github.com/Haleclipse/CCometixLine) - Original high-performance Claude Code status line tool written in Rust (upstream project). +- [ccline-packycc](https://github.com/ding113/ccline-packycc) - Another high-performance Claude Code status line tool written in Rust. ## License @@ -307,4 +330,4 @@ This project is licensed under the [MIT License](LICENSE). ## Star History -[![Star History Chart](https://api.star-history.com/svg?repos=Haleclipse/CCometixLine&type=Date)](https://star-history.com/#Haleclipse/CCometixLine&Date) +[![Star History Chart](https://api.star-history.com/svg?repos=byebye-code/ccline-88cc&type=Date)](https://star-history.com/#byebye-code/ccline-88cc&Date) diff --git a/README.zh.md b/README.zh.md index 88656db..7684bd3 100644 --- a/README.zh.md +++ b/README.zh.md @@ -1,25 +1,33 @@ -# CCometixLine +# CCometixLine-88CC [English](README.md) | [中文](README.zh.md) -基于 Rust 的高性能 Claude Code 状态栏工具,集成 Git 信息、使用量跟踪、交互式 TUI 配置和 Claude Code 补丁工具。 +基于 Rust 的高性能 Claude Code 状态栏工具,集成 Git 信息、使用量跟踪、交互式 TUI 配置、API 配额监控和 Claude Code 增强工具。 + +> **由 [HoBeedzc](https://github.com/HoBeedzc) 维护** - 这是专为 88Code 服务特别适配的 CCometixLine 版本。原始 CCometixLine 由 [Haleclipse](https://github.com/Haleclipse/CCometixLine) 在 MIT 许可证下创建。本项目同样在 MIT 许可证下发布。 +> +> 本项目还整合了另一个 MIT 许可证项目 [ccline-packycc](https://github.com/ding113/ccline-packycc) 的代码,并保留了相应归属。 +> +> 88Code 是第三方 Claude Code 代理服务。本项目是自发的第三方适配,与 Anthropic 或 88Code 无关。88Code 网站:[88code](https://www.88code.org/)。本项目实现了对两个端点的自动适配。 ![Language:Rust](https://img.shields.io/static/v1?label=Language&message=Rust&color=orange&style=flat-square) ![License:MIT](https://img.shields.io/static/v1?label=License&message=MIT&color=blue&style=flat-square) +[![CI](https://github.com/byebye-code/ccline-88cc/actions/workflows/ci.yml/badge.svg)](https://github.com/byebye-code/ccline-88cc/actions/workflows/ci.yml) ## 截图 ![CCometixLine](assets/img1.png) -状态栏显示:模型 | 目录 | Git 分支状态 | 上下文窗口信息 +状态栏显示:模型 | 目录 | Git 分支状态 | 上下文窗口 | API 配额 ## 特性 ### 核心功能 - **Git 集成** 显示分支、状态和跟踪信息 - **模型显示** 简化的 Claude 模型名称 -- **使用量跟踪** 基于转录文件分析 +- **使用量跟踪** 基于转录文件分析 - **目录显示** 显示当前工作空间 +- **API 配额显示** 显示当前 API 配额 - **简洁设计** 使用 Nerd Font 图标 ### 交互式 TUI 功能 @@ -43,24 +51,24 @@ ```bash # 全局安装 -npm install -g @cometix/ccline +npm install -g @byebyecode/ccline-88cc # 或使用 yarn -yarn global add @cometix/ccline +yarn global add @byebyecode/ccline-88cc # 或使用 pnpm -pnpm add -g @cometix/ccline +pnpm add -g @byebyecode/ccline-88cc ``` 使用镜像源加速下载: ```bash -npm install -g @cometix/ccline --registry https://registry.npmmirror.com +npm install -g @byebyecode/ccline-88cc --registry https://registry.npmmirror.com ``` 安装后: -- ✅ 全局命令 `ccline` 可在任何地方使用 +- ✅ 全局命令 `ccline-88cc` 可在任何地方使用 - ⚙️ 按照下方提示进行配置以集成到 Claude Code -- 🎨 运行 `ccline -c` 打开配置面板进行主题选择 +- 🎨 运行 `ccline-88cc -c` 打开配置面板进行主题选择 ### Claude Code 配置 @@ -71,7 +79,7 @@ npm install -g @cometix/ccline --registry https://registry.npmmirror.com { "statusLine": { "type": "command", - "command": "~/.claude/ccline/ccline", + "command": "~/.claude/ccline/ccline-88cc", "padding": 0 } } @@ -82,7 +90,7 @@ npm install -g @cometix/ccline --registry https://registry.npmmirror.com { "statusLine": { "type": "command", - "command": "%USERPROFILE%\\.claude\\ccline\\ccline.exe", + "command": "%USERPROFILE%\\.claude\\ccline\\ccline-88cc.exe", "padding": 0 } } @@ -93,7 +101,7 @@ npm install -g @cometix/ccline --registry https://registry.npmmirror.com { "statusLine": { "type": "command", - "command": "ccline", + "command": "ccline-88cc", "padding": 0 } } @@ -103,33 +111,33 @@ npm install -g @cometix/ccline --registry https://registry.npmmirror.com ### 更新 ```bash -npm update -g @cometix/ccline +npm update -g @byebyecode/ccline-88cc ```
手动安装(点击展开) -或者从 [Releases](https://github.com/Haleclipse/CCometixLine/releases) 手动下载: +或者从 [Releases](https://github.com/byebye-code/ccline-88cc/releases) 手动下载: #### Linux #### 选项 1: 动态链接版本(推荐) ```bash mkdir -p ~/.claude/ccline -wget https://github.com/Haleclipse/CCometixLine/releases/latest/download/ccline-linux-x64.tar.gz -tar -xzf ccline-linux-x64.tar.gz -cp ccline ~/.claude/ccline/ -chmod +x ~/.claude/ccline/ccline +wget https://github.com/byebye-code/ccline-88cc/releases/latest/download/ccline-88cc-linux-x64.tar.gz +tar -xzf ccline-88cc-linux-x64.tar.gz +cp ccline-88cc ~/.claude/ccline/ +chmod +x ~/.claude/ccline/ccline-88cc ``` *系统要求: Ubuntu 22.04+, CentOS 9+, Debian 11+, RHEL 9+ (glibc 2.35+)* #### 选项 2: 静态链接版本(通用兼容) ```bash mkdir -p ~/.claude/ccline -wget https://github.com/Haleclipse/CCometixLine/releases/latest/download/ccline-linux-x64-static.tar.gz -tar -xzf ccline-linux-x64-static.tar.gz -cp ccline ~/.claude/ccline/ -chmod +x ~/.claude/ccline/ccline +wget https://github.com/byebye-code/ccline-88cc/releases/latest/download/ccline-88cc-linux-x64-static.tar.gz +tar -xzf ccline-88cc-linux-x64-static.tar.gz +cp ccline-88cc ~/.claude/ccline/ +chmod +x ~/.claude/ccline/ccline-88cc ``` *适用于任何 Linux 发行版(静态链接,无依赖)* @@ -137,30 +145,30 @@ chmod +x ~/.claude/ccline/ccline ```bash mkdir -p ~/.claude/ccline -wget https://github.com/Haleclipse/CCometixLine/releases/latest/download/ccline-macos-x64.tar.gz -tar -xzf ccline-macos-x64.tar.gz -cp ccline ~/.claude/ccline/ -chmod +x ~/.claude/ccline/ccline +wget https://github.com/byebye-code/ccline-88cc/releases/latest/download/ccline-88cc-macos-x64.tar.gz +tar -xzf ccline-88cc-macos-x64.tar.gz +cp ccline-88cc ~/.claude/ccline/ +chmod +x ~/.claude/ccline/ccline-88cc ``` #### macOS (Apple Silicon) ```bash mkdir -p ~/.claude/ccline -wget https://github.com/Haleclipse/CCometixLine/releases/latest/download/ccline-macos-arm64.tar.gz -tar -xzf ccline-macos-arm64.tar.gz -cp ccline ~/.claude/ccline/ -chmod +x ~/.claude/ccline/ccline +wget https://github.com/byebye-code/ccline-88cc/releases/latest/download/ccline-88cc-macos-arm64.tar.gz +tar -xzf ccline-88cc-macos-arm64.tar.gz +cp ccline-88cc ~/.claude/ccline/ +chmod +x ~/.claude/ccline/ccline-88cc ``` #### Windows ```powershell # 创建目录并下载 -New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.claude\ccline" -Invoke-WebRequest -Uri "https://github.com/Haleclipse/CCometixLine/releases/latest/download/ccline-windows-x64.zip" -OutFile "ccline-windows-x64.zip" -Expand-Archive -Path "ccline-windows-x64.zip" -DestinationPath "." -Move-Item "ccline.exe" "$env:USERPROFILE\.claude\ccline\" +New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.claude\ccline-88cc" +Invoke-WebRequest -Uri "https://github.com/byebye-code/ccline-88cc/releases/latest/download/ccline-88cc-windows-x64.zip" -OutFile "ccline-88cc-windows-x64.zip" +Expand-Archive -Path "ccline-88cc-windows-x64.zip" -DestinationPath "." +Move-Item "ccline-88cc.exe" "$env:USERPROFILE\.claude\ccline-88cc\" ```
@@ -168,10 +176,18 @@ Move-Item "ccline.exe" "$env:USERPROFILE\.claude\ccline\" ### 从源码构建 ```bash -git clone https://github.com/Haleclipse/CCometixLine.git -cd CCometixLine +git clone https://github.com/byebye-code/ccline-88cc.git +cd ccline-88cc cargo build --release -cp target/release/ccometixline ~/.claude/ccline/ccline + +# Linux/macOS +mkdir -p ~/.claude/ccline +cp target/release/ccometixline ~/.claude/ccline-88cc/ccline-88cc +chmod +x ~/.claude/ccline/ccline-88cc + +# Windows (PowerShell) +New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.claude\ccline-88cc" +copy target\release\ccometixline.exe "$env:USERPROFILE\.claude\ccline-88cc\ccline-88cc.exe" ``` ## 使用 @@ -180,45 +196,45 @@ cp target/release/ccometixline ~/.claude/ccline/ccline ```bash # 初始化配置文件 -ccline --init +ccline-88cc --init # 检查配置有效性 -ccline --check +ccline-88cc --check # 打印当前配置 -ccline --print +ccline-88cc --print # 进入 TUI 配置模式 -ccline --config +ccline-88cc --config ``` ### 主题覆盖 ```bash # 临时使用指定主题(覆盖配置文件设置) -ccline --theme cometix -ccline --theme minimal -ccline --theme gruvbox -ccline --theme nord -ccline --theme powerline-dark - -# 或使用 ~/.claude/ccline/themes/ 目录下的自定义主题 -ccline --theme my-custom-theme +ccline-88cc --theme cometix +ccline-88cc --theme minimal +ccline-88cc --theme gruvbox +ccline-88cc --theme nord +ccline-88cc --theme powerline-dark + +# 或使用 ~/.claude/ccline-88cc/themes/ 目录下的自定义主题 +ccline-88cc --theme my-custom-theme ``` ### Claude Code 增强 ```bash # 禁用上下文警告并启用详细模式 -ccline --patch /path/to/claude-code/cli.js +ccline-88cc --patch /path/to/claude-code/cli.js # 常见安装路径示例 -ccline --patch ~/.local/share/fnm/node-versions/v24.4.1/installation/lib/node_modules/@anthropic-ai/claude-code/cli.js +ccline-88cc --patch ~/.local/share/fnm/node-versions/v24.4.1/installation/lib/node_modules/@anthropic-ai/claude-code/cli.js ``` ## 默认段落 -显示:`目录 | Git 分支状态 | 模型 | 上下文窗口` +显示:`目录 | Git 分支状态 | 模型 | 上下文窗口 | API 配额` ### Git 状态指示器 @@ -236,14 +252,27 @@ ccline --patch ~/.local/share/fnm/node-versions/v24.4.1/installation/lib/node_mo 基于转录文件分析的令牌使用百分比,包含上下文限制跟踪。 +### API 配额显示 +智能监控 API 使用情况: + +- **额度显示**: 显示套餐名称和已用/总额度 (例如 `Pro $0.06/$20.25`) +- **自动检测**: 自动检测正确的 API 端点 +- **零配置**: 只需提供 API 密钥,其他都是自动的 + +支持多种 API 密钥来源: + +- 环境变量: `C88_API_KEY`, `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` +- Claude Code settings.json +- 本地 API 密钥文件: `~/.claude/api_key` + ## 配置 CCometixLine 支持通过 TOML 文件和交互式 TUI 进行完整配置: -- **配置文件**: `~/.claude/ccline/config.toml` -- **交互式 TUI**: `ccline --config` 实时编辑配置并预览效果 -- **主题文件**: `~/.claude/ccline/themes/*.toml` 自定义主题文件 -- **自动初始化**: `ccline --init` 创建默认配置 +- **配置文件**: `~/.claude/ccline-88cc/config.toml` +- **交互式 TUI**: `ccline-88cc --config` 实时编辑配置并预览效果 +- **主题文件**: `~/.claude/ccline-88cc/themes/*.toml` 自定义主题文件 +- **自动初始化**: `ccline-88cc --init` 创建默认配置 ### 可用段落 @@ -290,10 +319,16 @@ cargo build --release 欢迎贡献!请随时提交 issue 或 pull request。 +## 相关项目 + +- [tweakcc](https://github.com/Piebald-AI/tweakcc) - 自定义 Claude Code 主题、思考动词等的命令行工具。 +- [CCometixLine](https://github.com/Haleclipse/CCometixLine) - 原始基于 Rust 的高性能 Claude Code 状态栏工具(上游项目)。 +- [ccline-packycc](https://github.com/ding113/ccline-packycc) - 另一个基于 Rust 的高性能 Claude Code 状态栏工具。 + ## 许可证 本项目采用 [MIT 许可证](LICENSE)。 ## Star History -[![Star History Chart](https://api.star-history.com/svg?repos=Haleclipse/CCometixLine&type=Date)](https://star-history.com/#Haleclipse/CCometixLine&Date) \ No newline at end of file +[![Star History Chart](https://api.star-history.com/svg?repos=byebye-code/ccline-88cc&type=Date)](https://star-history.com/#byebye-code/ccline-88cc&Date) \ No newline at end of file diff --git a/assets/img1.png b/assets/img1.png index 8887d92e0585ef38f3536eb72d6d2ea3a83dcb94..28002c9dd18cab8dbb52a60577bc5c936f666d71 100644 GIT binary patch literal 57078 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%0D~`K6Er>_TW>VQrq$}_(d(?G~4ay{NV8%B{RmXQ> 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.0.0" diff --git a/npm/main/scripts/postinstall.js b/npm/main/scripts/postinstall.js index 639058b..1784ee0 100644 --- a/npm/main/scripts/postinstall.js +++ b/npm/main/scripts/postinstall.js @@ -53,12 +53,12 @@ try { } const packageMap = { - 'darwin-x64': '@cometix/ccline-darwin-x64', - 'darwin-arm64': '@cometix/ccline-darwin-arm64', - 'linux-x64': '@cometix/ccline-linux-x64', - 'linux-x64-musl': '@cometix/ccline-linux-x64-musl', - 'win32-x64': '@cometix/ccline-win32-x64', - 'win32-ia32': '@cometix/ccline-win32-x64', // Use 64-bit for 32-bit + 'darwin-x64': '@byebyecode/ccline-88cc-darwin-x64', + 'darwin-arm64': '@byebyecode/ccline-88cc-darwin-arm64', + 'linux-x64': '@byebyecode/ccline-88cc-linux-x64', + 'linux-x64-musl': '@byebyecode/ccline-88cc-linux-x64-musl', + 'win32-x64': '@byebyecode/ccline-88cc-win32-x64', + 'win32-ia32': '@byebyecode/ccline-88cc-win32-x64', // Use 64-bit for 32-bit }; const packageName = packageMap[platformKey]; @@ -69,7 +69,7 @@ try { process.exit(0); } - const binaryName = platform === 'win32' ? 'ccline.exe' : 'ccline'; + const binaryName = platform === 'win32' ? 'ccline-88cc.exe' : 'ccline-88cc'; const targetPath = path.join(claudeDir, binaryName); // Multiple path search strategies for different package managers @@ -123,7 +123,7 @@ try { if (!sourcePath) { if (!silent) { console.log('Binary package not installed, skipping Claude Code setup'); - console.log('The global ccline command will still work via npm'); + console.log('The global ccline-88cc command will still work via npm'); } process.exit(0); } @@ -148,13 +148,13 @@ try { if (!silent) { console.log('✨ CCometixLine is ready for Claude Code!'); console.log(`📍 Location: ${targetPath}`); - console.log('🎉 You can now use: ccline --help'); + console.log('🎉 You can now use: ccline-88cc --help'); } } catch (error) { // Silent failure - don't break installation if (!silent) { console.log('Note: Could not auto-configure for Claude Code'); - console.log('The global ccline command will still work.'); - console.log('You can manually copy ccline to ~/.claude/ccline/ if needed'); + console.log('The global ccline-88cc command will still work.'); + console.log('You can manually copy ccline-88cc to ~/.claude/ccline/ if needed'); } } \ No newline at end of file diff --git a/npm/platforms/darwin-arm64/package.json b/npm/platforms/darwin-arm64/package.json index e6ca5ef..f934b2c 100644 --- a/npm/platforms/darwin-arm64/package.json +++ b/npm/platforms/darwin-arm64/package.json @@ -1,14 +1,14 @@ { - "name": "@cometix/ccline-darwin-arm64", + "name": "@byebyecode/ccline-88cc-darwin-arm64", "version": "0.0.0", - "description": "macOS ARM64 binary for CCometixLine", - "files": ["ccline"], + "description": "macOS ARM64 binary for ccline-88cc", + "files": ["ccline-88cc"], "os": ["darwin"], "cpu": ["arm64"], "repository": { "type": "git", - "url": "https://github.com/Haleclipse/CCometixLine" + "url": "https://github.com/byebye-code/ccline-88cc" }, - "author": "Haleclipse", + "author": "Hobee Liu", "license": "MIT" } \ No newline at end of file diff --git a/npm/platforms/darwin-x64/package.json b/npm/platforms/darwin-x64/package.json index df166fa..8a287bd 100644 --- a/npm/platforms/darwin-x64/package.json +++ b/npm/platforms/darwin-x64/package.json @@ -1,14 +1,14 @@ { - "name": "@cometix/ccline-darwin-x64", + "name": "@byebyecode/ccline-88cc-darwin-x64", "version": "0.0.0", - "description": "macOS x64 binary for CCometixLine", - "files": ["ccline"], + "description": "macOS x64 binary for ccline-88cc", + "files": ["ccline-88cc"], "os": ["darwin"], "cpu": ["x64"], "repository": { "type": "git", - "url": "https://github.com/Haleclipse/CCometixLine" + "url": "https://github.com/byebye-code/ccline-88cc" }, - "author": "Haleclipse", + "author": "Hobee Liu", "license": "MIT" } \ No newline at end of file diff --git a/npm/platforms/linux-x64-musl/package.json b/npm/platforms/linux-x64-musl/package.json index 17bc698..f8a657e 100644 --- a/npm/platforms/linux-x64-musl/package.json +++ b/npm/platforms/linux-x64-musl/package.json @@ -1,14 +1,14 @@ { - "name": "@cometix/ccline-linux-x64-musl", + "name": "@byebyecode/ccline-88cc-linux-x64-musl", "version": "0.0.0", - "description": "Linux x64 static binary for CCometixLine (musl libc)", - "files": ["ccline"], + "description": "Linux x64 static binary for ccline-88cc (musl libc)", + "files": ["ccline-88cc"], "os": ["linux"], "cpu": ["x64"], "repository": { "type": "git", - "url": "https://github.com/Haleclipse/CCometixLine" + "url": "https://github.com/byebye-code/ccline-88cc" }, - "author": "Haleclipse", + "author": "Hobee Liu", "license": "MIT" } \ No newline at end of file diff --git a/npm/platforms/linux-x64/package.json b/npm/platforms/linux-x64/package.json index 578e9c8..415b9b7 100644 --- a/npm/platforms/linux-x64/package.json +++ b/npm/platforms/linux-x64/package.json @@ -1,14 +1,14 @@ { - "name": "@cometix/ccline-linux-x64", + "name": "@byebyecode/ccline-88cc-linux-x64", "version": "0.0.0", - "description": "Linux x64 binary for CCometixLine", - "files": ["ccline"], + "description": "Linux x64 binary for ccline-88cc", + "files": ["ccline-88cc"], "os": ["linux"], "cpu": ["x64"], "repository": { "type": "git", - "url": "https://github.com/Haleclipse/CCometixLine" + "url": "https://github.com/byebye-code/ccline-88cc" }, - "author": "Haleclipse", + "author": "Hobee Liu", "license": "MIT" } \ No newline at end of file diff --git a/npm/platforms/win32-x64/package.json b/npm/platforms/win32-x64/package.json index 91568de..e268bbe 100644 --- a/npm/platforms/win32-x64/package.json +++ b/npm/platforms/win32-x64/package.json @@ -1,14 +1,14 @@ { - "name": "@cometix/ccline-win32-x64", + "name": "@byebyecode/ccline-88cc-win32-x64", "version": "0.0.0", - "description": "Windows x64 binary for CCometixLine", - "files": ["ccline.exe"], + "description": "Windows x64 binary for ccline-88cc", + "files": ["ccline-88cc.exe"], "os": ["win32"], "cpu": ["x64"], "repository": { "type": "git", - "url": "https://github.com/Haleclipse/CCometixLine" + "url": "https://github.com/byebye-code/ccline-88cc" }, - "author": "Haleclipse", + "author": "Hobee Liu", "license": "MIT" } \ No newline at end of file diff --git a/npm/scripts/prepare-packages.js b/npm/scripts/prepare-packages.js index 591bdf6..f15e38f 100755 --- a/npm/scripts/prepare-packages.js +++ b/npm/scripts/prepare-packages.js @@ -2,7 +2,7 @@ const fs = require('fs'); const path = require('path'); -const version = process.env.GITHUB_REF?.replace('refs/tags/v', '') || process.argv[2]; +let version = process.env.GITHUB_REF?.replace('refs/tags/v', '') || process.argv[2]; if (!version) { console.error('Error: Version not provided'); console.error('Usage: GITHUB_REF=refs/tags/v1.0.0 node prepare-packages.js'); @@ -10,6 +10,14 @@ if (!version) { process.exit(1); } +// Remove -88code or -yescode suffix if present (for branch-specific tags) +// Keep other suffixes like -beta, -alpha, -rc for pre-release versions +const originalVersion = version; +version = version.replace(/-(88code|yescode)$/, ''); +if (originalVersion !== version) { + console.log(`📝 Tag suffix removed: ${originalVersion} → ${version}`); +} + console.log(`🚀 Preparing packages for version ${version}`); // Define platform structures @@ -42,7 +50,7 @@ platforms.forEach(platform => { JSON.stringify(packageJson, null, 2) + '\n' ); - console.log(`✓ Prepared @cometix/ccline-${platform} v${version}`); + console.log(`✓ Prepared @byebyecode/ccline-88cc-${platform} v${version}`); }); // Prepare main package @@ -61,7 +69,7 @@ mainPackageJson.version = version; // Update optionalDependencies versions if (mainPackageJson.optionalDependencies) { Object.keys(mainPackageJson.optionalDependencies).forEach(dep => { - if (dep.startsWith('@cometix/ccline-')) { + if (dep.startsWith('@byebyecode/ccline-88cc-')) { mainPackageJson.optionalDependencies[dep] = version; } }); @@ -72,7 +80,7 @@ fs.writeFileSync( JSON.stringify(mainPackageJson, null, 2) + '\n' ); -console.log(`✓ Prepared @cometix/ccline v${version}`); +console.log(`✓ Prepared @byebyecode/ccline-88cc v${version}`); console.log(`\n🎉 All packages prepared for version ${version}`); console.log('\nNext steps:'); console.log('1. Copy binaries to platform directories'); diff --git a/src/config/types.rs b/src/config/types.rs index e5a78dc..2c038e4 100644 --- a/src/config/types.rs +++ b/src/config/types.rs @@ -73,6 +73,7 @@ pub enum SegmentId { Session, OutputStyle, Update, + Quota, } // Legacy compatibility structure diff --git a/src/core/segments/mod.rs b/src/core/segments/mod.rs index ff036a9..76d8a08 100644 --- a/src/core/segments/mod.rs +++ b/src/core/segments/mod.rs @@ -4,6 +4,7 @@ pub mod directory; pub mod git; pub mod model; pub mod output_style; +pub mod quota; pub mod session; pub mod update; pub mod usage; @@ -31,6 +32,7 @@ pub use directory::DirectorySegment; pub use git::GitSegment; pub use model::ModelSegment; pub use output_style::OutputStyleSegment; +pub use quota::QuotaSegment; pub use session::SessionSegment; pub use update::UpdateSegment; pub use usage::UsageSegment; diff --git a/src/core/segments/quota.rs b/src/core/segments/quota.rs new file mode 100644 index 0000000..8bbd86a --- /dev/null +++ b/src/core/segments/quota.rs @@ -0,0 +1,265 @@ +use super::{Segment, SegmentData}; +use crate::config::{InputData, SegmentId}; +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; +use std::env; +use std::fs; +use std::hash::{Hash, Hasher}; +use std::path::PathBuf; +use std::time::{Duration, SystemTime}; + +// API 响应结构 +#[derive(Debug, Deserialize)] +struct C88ApiResponse { + #[serde(rename = "creditLimit")] + credit_limit: f64, + #[serde(rename = "currentCredits")] + current_credits: f64, + #[serde(rename = "subscriptionName")] + subscription_name: Option, +} + +// 端点配置 +#[derive(Debug, Clone)] +struct EndpointConfig { + url: String, + name: String, +} + +// 端点缓存 +#[allow(dead_code)] +#[derive(Debug, Clone, Serialize, Deserialize)] +struct EndpointCache { + api_key_hash: u64, + successful_endpoint: String, + last_success_time: SystemTime, + success_count: u32, +} + +// 智能端点检测器 +struct SmartEndpointDetector { + endpoints: Vec, +} + +impl SmartEndpointDetector { + fn new() -> Self { + let endpoints = vec![EndpointConfig { + url: "https://www.88code.org/api/usage".to_string(), + name: "main".to_string(), + }]; + + Self { endpoints } + } + + #[allow(dead_code)] + fn get_cache_file_path() -> PathBuf { + if let Some(home) = dirs::home_dir() { + home.join(".claude") + .join("ccline") + .join("endpoint_cache.json") + } else { + PathBuf::from("endpoint_cache.json") + } + } + + #[allow(dead_code)] + fn hash_api_key(api_key: &str) -> u64 { + let mut hasher = std::collections::hash_map::DefaultHasher::new(); + api_key.hash(&mut hasher); + hasher.finish() + } + + fn try_endpoint(&self, endpoint: &EndpointConfig, api_key: &str) -> Option { + let debug = env::var("C88_DEBUG").is_ok(); + + if debug { + eprintln!("[DEBUG] Trying endpoint: {}", endpoint.url); + } + + let start_time = SystemTime::now(); + let bearer_token = format!("Bearer {}", api_key); + let result = ureq::post(&endpoint.url) + .set("accept", "*/*") + .set("content-type", "application/json") + .set("Authorization", &bearer_token) + .timeout(Duration::from_secs(5)) + .call(); + + match result { + Ok(response) => { + if response.status() == 200 { + let elapsed = start_time.elapsed().unwrap_or(Duration::from_secs(0)); + if debug { + eprintln!( + "[DEBUG] Success: {} in {}ms", + endpoint.name, + elapsed.as_millis() + ); + } + + response.into_json::().ok() + } else { + if debug { + eprintln!( + "[DEBUG] Failed: {} status {}", + endpoint.name, + response.status() + ); + } + None + } + } + Err(e) => { + if debug { + eprintln!("[DEBUG] Error: {} - {}", endpoint.name, e); + } + None + } + } + } + + fn detect_endpoint(&mut self, api_key: &str) -> Option<(String, C88ApiResponse)> { + // 尝试所有端点 + let endpoints_clone = self.endpoints.clone(); + for endpoint in &endpoints_clone { + if let Some(response) = self.try_endpoint(endpoint, api_key) { + return Some((endpoint.url.clone(), response)); + } + } + + None + } + + fn detect_endpoint_static(api_key: &str) -> Option<(String, C88ApiResponse)> { + let mut detector = SmartEndpointDetector::new(); + detector.detect_endpoint(api_key) + } +} + +#[derive(Default)] +pub struct QuotaSegment; + +impl QuotaSegment { + pub fn new() -> Self { + Self + } + + fn load_api_key(&self) -> Option { + // 优先级:环境变量 > Claude Code settings.json > api_key 文件 + + // 1. 环境变量 + if let Ok(key) = env::var("C88_API_KEY") { + return Some(key); + } + + if let Ok(key) = env::var("ANTHROPIC_API_KEY") { + return Some(key); + } + + if let Ok(key) = env::var("ANTHROPIC_AUTH_TOKEN") { + return Some(key); + } + + // 2. Claude Code settings.json + if let Some(key) = self.load_from_settings() { + return Some(key); + } + + // 3. api_key 文件 + if let Some(home) = dirs::home_dir() { + let api_key_path = home.join(".claude").join("api_key"); + if let Ok(key) = fs::read_to_string(api_key_path) { + return Some(key.trim().to_string()); + } + } + + None + } + + fn load_from_settings(&self) -> Option { + if let Some(home) = dirs::home_dir() { + let settings_path = home.join(".claude").join("settings.json"); + if let Ok(content) = fs::read_to_string(settings_path) { + if let Ok(settings) = serde_json::from_str::(&content) { + if let Some(env) = settings.get("env") { + if let Some(token) = env.get("ANTHROPIC_AUTH_TOKEN") { + if let Some(token_str) = token.as_str() { + return Some(token_str.to_string()); + } + } + if let Some(key) = env.get("ANTHROPIC_API_KEY") { + if let Some(key_str) = key.as_str() { + return Some(key_str.to_string()); + } + } + } + } + } + } + None + } + + fn format_quota(&self, subscription_name: Option<&str>, used: f64, total: f64) -> String { + if let Some(name) = subscription_name { + format!("{} ${:.2}/${:.2}", name, used, total) + } else { + format!("${:.2}/${:.2}", used, total) + } + } + + fn calculate_used(&self, response: &C88ApiResponse) -> f64 { + response.credit_limit - response.current_credits + } +} + +impl Segment for QuotaSegment { + fn collect(&self, _input: &InputData) -> Option { + #[cfg(not(feature = "quota"))] + { + return None; + } + + #[cfg(feature = "quota")] + { + let api_key = self.load_api_key()?; + + // 使用静态方法进行端点检测 + if let Some((endpoint_url, response)) = + SmartEndpointDetector::detect_endpoint_static(&api_key) + { + let used = self.calculate_used(&response); + let total = response.credit_limit; + let quota_display = self.format_quota(response.subscription_name.as_deref(), used, total); + + let mut metadata = HashMap::new(); + metadata.insert("used".to_string(), used.to_string()); + metadata.insert("total".to_string(), total.to_string()); + metadata.insert("remain".to_string(), response.current_credits.to_string()); + metadata.insert("endpoint_used".to_string(), endpoint_url); + if let Some(name) = &response.subscription_name { + metadata.insert("subscription_name".to_string(), name.clone()); + } + + Some(SegmentData { + primary: quota_display, + secondary: String::new(), + metadata, + }) + } else { + // 所有端点都失败 + let mut metadata = HashMap::new(); + metadata.insert("status".to_string(), "offline".to_string()); + + Some(SegmentData { + primary: "Offline".to_string(), + secondary: String::new(), + metadata, + }) + } + } + } + + fn id(&self) -> SegmentId { + SegmentId::Quota + } +} diff --git a/src/core/statusline.rs b/src/core/statusline.rs index 5f84bf1..841d4c5 100644 --- a/src/core/statusline.rs +++ b/src/core/statusline.rs @@ -510,6 +510,10 @@ pub fn collect_all_segments( let segment = UpdateSegment::new(); segment.collect(input) } + crate::config::SegmentId::Quota => { + let segment = QuotaSegment::new(); + segment.collect(input) + } }; if let Some(data) = segment_data { diff --git a/src/main.rs b/src/main.rs index 66706fb..dbfe679 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ -use ccometixline::cli::Cli; -use ccometixline::config::{Config, InputData}; -use ccometixline::core::{collect_all_segments, StatusLineGenerator}; +use ccometixline_88cc::cli::Cli; +use ccometixline_88cc::config::{Config, InputData}; +use ccometixline_88cc::core::{collect_all_segments, StatusLineGenerator}; use std::io::{self, IsTerminal}; fn main() -> Result<(), Box> { @@ -17,7 +17,7 @@ fn main() -> Result<(), Box> { // Apply theme override if provided if let Some(theme) = cli.theme { - config = ccometixline::ui::themes::ThemePresets::get_theme(&theme); + config = ccometixline_88cc::ui::themes::ThemePresets::get_theme(&theme); } config.print()?; @@ -34,7 +34,7 @@ fn main() -> Result<(), Box> { if cli.config { #[cfg(feature = "tui")] { - ccometixline::ui::run_configurator()?; + ccometixline_88cc::ui::run_configurator()?; } #[cfg(not(feature = "tui"))] { @@ -58,7 +58,7 @@ fn main() -> Result<(), Box> { // Handle Claude Code patcher if let Some(claude_path) = cli.patch { - use ccometixline::utils::ClaudeCodePatcher; + use ccometixline_88cc::utils::ClaudeCodePatcher; println!("🔧 Claude Code Context Warning Disabler"); println!("Target file: {}", claude_path); @@ -101,7 +101,7 @@ fn main() -> Result<(), Box> { // Apply theme override if provided if let Some(theme) = cli.theme { - config = ccometixline::ui::themes::ThemePresets::get_theme(&theme); + config = ccometixline_88cc::ui::themes::ThemePresets::get_theme(&theme); } // Check if stdin has data @@ -109,19 +109,19 @@ fn main() -> Result<(), Box> { // No input data available, show main menu #[cfg(feature = "tui")] { - use ccometixline::ui::{MainMenu, MenuResult}; + use ccometixline_88cc::ui::{MainMenu, MenuResult}; if let Some(result) = MainMenu::run()? { match result { MenuResult::LaunchConfigurator => { - ccometixline::ui::run_configurator()?; + ccometixline_88cc::ui::run_configurator()?; } MenuResult::InitConfig => { - ccometixline::config::Config::init()?; + ccometixline_88cc::config::Config::init()?; println!("Configuration initialized successfully!"); } MenuResult::CheckConfig => { - let config = ccometixline::config::Config::load()?; + let config = ccometixline_88cc::config::Config::load()?; config.check()?; println!("Configuration is valid!"); } diff --git a/src/ui/app.rs b/src/ui/app.rs index 0cca753..2d048ae 100644 --- a/src/ui/app.rs +++ b/src/ui/app.rs @@ -503,6 +503,7 @@ impl App { SegmentId::Session => "Session", SegmentId::OutputStyle => "Output Style", SegmentId::Update => "Update", + SegmentId::Quota => "Quota", }; let is_enabled = segment.enabled; self.status_message = Some(format!( @@ -530,6 +531,7 @@ impl App { SegmentId::Session => "Session", SegmentId::OutputStyle => "Output Style", SegmentId::Update => "Update", + SegmentId::Quota => "Quota", }; let is_enabled = segment.enabled; self.status_message = Some(format!( diff --git a/src/ui/components/preview.rs b/src/ui/components/preview.rs index 53c5d66..31abb15 100644 --- a/src/ui/components/preview.rs +++ b/src/ui/components/preview.rs @@ -183,6 +183,22 @@ impl PreviewComponent { map }, }, + SegmentId::Quota => SegmentData { + primary: "Pro $0.06/$20.25".to_string(), + secondary: "".to_string(), + metadata: { + let mut map = HashMap::new(); + map.insert("used".to_string(), "0.0635".to_string()); + map.insert("total".to_string(), "20.25".to_string()); + map.insert("remain".to_string(), "20.1865".to_string()); + map.insert("subscription_name".to_string(), "Pro".to_string()); + map.insert( + "endpoint_used".to_string(), + "https://www.88code.org/api/usage".to_string(), + ); + map + }, + }, }; segments_data.push((segment_config.clone(), mock_data)); diff --git a/src/ui/components/segment_list.rs b/src/ui/components/segment_list.rs index 832834b..13f6a89 100644 --- a/src/ui/components/segment_list.rs +++ b/src/ui/components/segment_list.rs @@ -57,6 +57,7 @@ impl SegmentListComponent { SegmentId::Session => "Session", SegmentId::OutputStyle => "Output Style", SegmentId::Update => "Update", + SegmentId::Quota => "Quota", }; if is_selected { diff --git a/src/ui/components/settings.rs b/src/ui/components/settings.rs index aa65acb..2cc8994 100644 --- a/src/ui/components/settings.rs +++ b/src/ui/components/settings.rs @@ -36,6 +36,7 @@ impl SettingsComponent { SegmentId::Session => "Session", SegmentId::OutputStyle => "Output Style", SegmentId::Update => "Update", + SegmentId::Quota => "Quota", }; let current_icon = match config.style.mode { StyleMode::Plain => &segment.icon.plain, diff --git a/src/ui/themes/presets.rs b/src/ui/themes/presets.rs index 0a51dab..f4742a2 100644 --- a/src/ui/themes/presets.rs +++ b/src/ui/themes/presets.rs @@ -137,6 +137,7 @@ impl ThemePresets { theme_cometix::cost_segment(), theme_cometix::session_segment(), theme_cometix::output_style_segment(), + theme_cometix::quota_segment(), ], theme: "cometix".to_string(), } @@ -157,6 +158,7 @@ impl ThemePresets { theme_default::cost_segment(), theme_default::session_segment(), theme_default::output_style_segment(), + theme_default::quota_segment(), ], theme: "default".to_string(), } @@ -177,6 +179,7 @@ impl ThemePresets { theme_minimal::cost_segment(), theme_minimal::session_segment(), theme_minimal::output_style_segment(), + theme_minimal::quota_segment(), ], theme: "minimal".to_string(), } @@ -197,6 +200,7 @@ impl ThemePresets { theme_gruvbox::cost_segment(), theme_gruvbox::session_segment(), theme_gruvbox::output_style_segment(), + theme_gruvbox::quota_segment(), ], theme: "gruvbox".to_string(), } @@ -217,6 +221,7 @@ impl ThemePresets { theme_nord::cost_segment(), theme_nord::session_segment(), theme_nord::output_style_segment(), + theme_nord::quota_segment(), ], theme: "nord".to_string(), } @@ -237,6 +242,7 @@ impl ThemePresets { theme_powerline_dark::cost_segment(), theme_powerline_dark::session_segment(), theme_powerline_dark::output_style_segment(), + theme_powerline_dark::quota_segment(), ], theme: "powerline-dark".to_string(), } @@ -257,6 +263,7 @@ impl ThemePresets { theme_powerline_light::cost_segment(), theme_powerline_light::session_segment(), theme_powerline_light::output_style_segment(), + theme_powerline_light::quota_segment(), ], theme: "powerline-light".to_string(), } @@ -277,6 +284,7 @@ impl ThemePresets { theme_powerline_rose_pine::cost_segment(), theme_powerline_rose_pine::session_segment(), theme_powerline_rose_pine::output_style_segment(), + theme_powerline_rose_pine::quota_segment(), ], theme: "powerline-rose-pine".to_string(), } @@ -297,8 +305,126 @@ impl ThemePresets { theme_powerline_tokyo_night::cost_segment(), theme_powerline_tokyo_night::session_segment(), theme_powerline_tokyo_night::output_style_segment(), + theme_powerline_tokyo_night::quota_segment(), ], theme: "powerline-tokyo-night".to_string(), } } + + /// Create default theme configuration file with minimal template + pub fn create_default_theme_file(theme_name: &str) -> Result<(), Box> { + let themes_dir = Self::get_themes_path(); + let theme_path = themes_dir.join(format!("{}.toml", theme_name)); + + // Create themes directory if it doesn't exist + std::fs::create_dir_all(&themes_dir)?; + + // Create a minimal template config + let template_config = Self::get_default(); + let mut theme_config = template_config; + theme_config.theme = theme_name.to_string(); + + let toml_content = toml::to_string_pretty(&theme_config)?; + + // Add comments and examples to the template + let template_content = format!( + "# CCometixLine Theme Configuration: {}\n\ + # This file defines a custom theme for CCometixLine\n\ + # File location: ~/.claude/ccline/themes/{}.toml\n\ + # You can modify colors, icons, and styles below\n\ + \n\ + {}\n", + theme_name, + theme_name, + toml_content.trim() + ); + + std::fs::write(&theme_path, template_content)?; + Ok(()) + } + + /// Check if a theme exists (built-in or custom) + pub fn theme_exists(theme_name: &str) -> bool { + // Check built-in themes + let built_in_themes = [ + "cometix", + "default", + "minimal", + "gruvbox", + "nord", + "powerline-dark", + "powerline-light", + "powerline-rose-pine", + "powerline-tokyo-night", + ]; + + if built_in_themes.contains(&theme_name) { + return true; + } + + // Check custom themes + let themes_dir = Self::get_themes_path(); + let theme_path = themes_dir.join(format!("{}.toml", theme_name)); + theme_path.exists() + } + + /// Delete a custom theme file + pub fn delete_theme(theme_name: &str) -> Result<(), Box> { + // Don't allow deleting built-in themes + let built_in_themes = [ + "cometix", + "default", + "minimal", + "gruvbox", + "nord", + "powerline-dark", + "powerline-light", + "powerline-rose-pine", + "powerline-tokyo-night", + ]; + + if built_in_themes.contains(&theme_name) { + return Err(format!("Cannot delete built-in theme: {}", theme_name).into()); + } + + let themes_dir = Self::get_themes_path(); + let theme_path = themes_dir.join(format!("{}.toml", theme_name)); + + if theme_path.exists() { + std::fs::remove_file(theme_path)?; + } + + Ok(()) + } + + /// Copy an existing theme to create a new one + pub fn copy_theme( + source_theme: &str, + new_theme: &str, + ) -> Result<(), Box> { + let source_config = Self::get_theme(source_theme); + Self::save_theme(new_theme, &source_config)?; + Ok(()) + } + + /// Get theme type (built-in or custom) + pub fn get_theme_type(theme_name: &str) -> &'static str { + let built_in_themes = [ + "cometix", + "default", + "minimal", + "gruvbox", + "nord", + "powerline-dark", + "powerline-light", + "powerline-rose-pine", + "powerline-tokyo-night", + ]; + + if built_in_themes.contains(&theme_name) { + "built-in" + } else { + "custom" + } + } } diff --git a/src/ui/themes/theme_cometix.rs b/src/ui/themes/theme_cometix.rs index dfcd1e6..d3ab3b6 100644 --- a/src/ui/themes/theme_cometix.rs +++ b/src/ui/themes/theme_cometix.rs @@ -162,3 +162,21 @@ pub fn usage_segment() -> SegmentConfig { }, } } + +pub fn quota_segment() -> SegmentConfig { + SegmentConfig { + id: SegmentId::Quota, + enabled: true, + icon: IconConfig { + plain: "💰".to_string(), + nerd_font: "\u{f155}".to_string(), + }, + colors: ColorConfig { + icon: Some(AnsiColor::Color16 { c16: 11 }), // Yellow + text: Some(AnsiColor::Color16 { c16: 11 }), + background: None, + }, + styles: TextStyleConfig { text_bold: true }, + options: HashMap::new(), + } +} diff --git a/src/ui/themes/theme_default.rs b/src/ui/themes/theme_default.rs index 20b21ca..3957fb5 100644 --- a/src/ui/themes/theme_default.rs +++ b/src/ui/themes/theme_default.rs @@ -162,3 +162,21 @@ pub fn output_style_segment() -> SegmentConfig { options: HashMap::new(), } } + +pub fn quota_segment() -> SegmentConfig { + SegmentConfig { + id: SegmentId::Quota, + enabled: true, + icon: IconConfig { + plain: "💰".to_string(), + nerd_font: "\u{f155}".to_string(), + }, + colors: ColorConfig { + icon: Some(AnsiColor::Color16 { c16: 11 }), // Yellow + text: Some(AnsiColor::Color16 { c16: 11 }), + background: None, + }, + styles: TextStyleConfig::default(), + options: HashMap::new(), + } +} diff --git a/src/ui/themes/theme_gruvbox.rs b/src/ui/themes/theme_gruvbox.rs index 6b071e1..9f0762e 100644 --- a/src/ui/themes/theme_gruvbox.rs +++ b/src/ui/themes/theme_gruvbox.rs @@ -162,3 +162,21 @@ pub fn usage_segment() -> SegmentConfig { }, } } + +pub fn quota_segment() -> SegmentConfig { + SegmentConfig { + id: SegmentId::Quota, + enabled: true, + icon: IconConfig { + plain: "💰".to_string(), + nerd_font: "\u{f155}".to_string(), + }, + colors: ColorConfig { + icon: Some(AnsiColor::Color256 { c256: 214 }), // Gruvbox yellow + text: Some(AnsiColor::Color256 { c256: 214 }), + background: None, + }, + styles: TextStyleConfig { text_bold: true }, + options: HashMap::new(), + } +} diff --git a/src/ui/themes/theme_minimal.rs b/src/ui/themes/theme_minimal.rs index 0c1cdd6..300a9f2 100644 --- a/src/ui/themes/theme_minimal.rs +++ b/src/ui/themes/theme_minimal.rs @@ -162,3 +162,21 @@ pub fn usage_segment() -> SegmentConfig { }, } } + +pub fn quota_segment() -> SegmentConfig { + SegmentConfig { + id: SegmentId::Quota, + enabled: true, + icon: IconConfig { + plain: "$".to_string(), + nerd_font: "\u{f155}".to_string(), + }, + colors: ColorConfig { + icon: Some(AnsiColor::Color16 { c16: 8 }), + text: Some(AnsiColor::Color16 { c16: 8 }), + background: None, + }, + styles: TextStyleConfig::default(), + options: HashMap::new(), + } +} diff --git a/src/ui/themes/theme_nord.rs b/src/ui/themes/theme_nord.rs index 4811aab..c24a2ac 100644 --- a/src/ui/themes/theme_nord.rs +++ b/src/ui/themes/theme_nord.rs @@ -246,3 +246,33 @@ pub fn usage_segment() -> SegmentConfig { }, } } + +pub fn quota_segment() -> SegmentConfig { + SegmentConfig { + id: SegmentId::Quota, + enabled: true, + icon: IconConfig { + plain: "💰".to_string(), + nerd_font: "\u{f155}".to_string(), + }, + colors: ColorConfig { + icon: Some(AnsiColor::Rgb { + r: 208, + g: 135, + b: 112, + }), + text: Some(AnsiColor::Rgb { + r: 208, + g: 135, + b: 112, + }), + background: Some(AnsiColor::Rgb { + r: 76, + g: 86, + b: 106, + }), + }, + styles: TextStyleConfig::default(), + options: HashMap::new(), + } +} diff --git a/src/ui/themes/theme_powerline_dark.rs b/src/ui/themes/theme_powerline_dark.rs index d003e07..df70117 100644 --- a/src/ui/themes/theme_powerline_dark.rs +++ b/src/ui/themes/theme_powerline_dark.rs @@ -246,3 +246,33 @@ pub fn usage_segment() -> SegmentConfig { }, } } + +pub fn quota_segment() -> SegmentConfig { + SegmentConfig { + id: SegmentId::Quota, + enabled: true, + icon: IconConfig { + plain: "💰".to_string(), + nerd_font: "\u{f155}".to_string(), + }, + colors: ColorConfig { + icon: Some(AnsiColor::Rgb { + r: 255, + g: 255, + b: 255, + }), + text: Some(AnsiColor::Rgb { + r: 255, + g: 255, + b: 255, + }), + background: Some(AnsiColor::Rgb { + r: 85, + g: 85, + b: 85, + }), + }, + styles: TextStyleConfig::default(), + options: HashMap::new(), + } +} diff --git a/src/ui/themes/theme_powerline_light.rs b/src/ui/themes/theme_powerline_light.rs index c747340..2b8d4da 100644 --- a/src/ui/themes/theme_powerline_light.rs +++ b/src/ui/themes/theme_powerline_light.rs @@ -238,3 +238,33 @@ pub fn usage_segment() -> SegmentConfig { }, } } + +pub fn quota_segment() -> SegmentConfig { + SegmentConfig { + id: SegmentId::Quota, + enabled: true, + icon: IconConfig { + plain: "💰".to_string(), + nerd_font: "\u{f155}".to_string(), + }, + colors: ColorConfig { + icon: Some(AnsiColor::Rgb { + r: 255, + g: 255, + b: 255, + }), + text: Some(AnsiColor::Rgb { + r: 255, + g: 255, + b: 255, + }), + background: Some(AnsiColor::Rgb { + r: 76, + g: 175, + b: 80, + }), + }, + styles: TextStyleConfig::default(), + options: HashMap::new(), + } +} diff --git a/src/ui/themes/theme_powerline_rose_pine.rs b/src/ui/themes/theme_powerline_rose_pine.rs index f0519b2..3adf5bd 100644 --- a/src/ui/themes/theme_powerline_rose_pine.rs +++ b/src/ui/themes/theme_powerline_rose_pine.rs @@ -246,3 +246,33 @@ pub fn usage_segment() -> SegmentConfig { }, } } + +pub fn quota_segment() -> SegmentConfig { + SegmentConfig { + id: SegmentId::Quota, + enabled: true, + icon: IconConfig { + plain: "💰".to_string(), + nerd_font: "\u{f155}".to_string(), + }, + colors: ColorConfig { + icon: Some(AnsiColor::Rgb { + r: 235, + g: 188, + b: 186, + }), + text: Some(AnsiColor::Rgb { + r: 235, + g: 188, + b: 186, + }), + background: Some(AnsiColor::Rgb { + r: 49, + g: 46, + b: 65, + }), + }, + styles: TextStyleConfig::default(), + options: HashMap::new(), + } +} diff --git a/src/ui/themes/theme_powerline_tokyo_night.rs b/src/ui/themes/theme_powerline_tokyo_night.rs index c7e449b..5c5d6c4 100644 --- a/src/ui/themes/theme_powerline_tokyo_night.rs +++ b/src/ui/themes/theme_powerline_tokyo_night.rs @@ -246,3 +246,33 @@ pub fn usage_segment() -> SegmentConfig { }, } } + +pub fn quota_segment() -> SegmentConfig { + SegmentConfig { + id: SegmentId::Quota, + enabled: true, + icon: IconConfig { + plain: "💰".to_string(), + nerd_font: "\u{f155}".to_string(), + }, + colors: ColorConfig { + icon: Some(AnsiColor::Rgb { + r: 247, + g: 118, + b: 142, + }), + text: Some(AnsiColor::Rgb { + r: 247, + g: 118, + b: 142, + }), + background: Some(AnsiColor::Rgb { + r: 36, + g: 40, + b: 59, + }), + }, + styles: TextStyleConfig::default(), + options: HashMap::new(), + } +} From 50c5c6c278421445ed8598a92898f54cfe4b3d9d Mon Sep 17 00:00:00 2001 From: Hobee Date: Sun, 12 Oct 2025 13:16:43 +0800 Subject: [PATCH 06/10] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0assets?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E4=B8=8B=E7=9A=84img1.png=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/img1.png | Bin 57078 -> 66500 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/img1.png b/assets/img1.png index 28002c9dd18cab8dbb52a60577bc5c936f666d71..8ffa6d5e2f2822a3b162a59b0a57ee137f9862c1 100644 GIT binary patch literal 66500 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%0A=y8uR5 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 literal 57078 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 Date: Wed, 15 Oct 2025 00:43:13 +0800 Subject: [PATCH 07/10] chore: update version to 1.0.10 and enhance quota segment with subscription info retrieval --- Cargo.toml | 2 +- assets/img1.png | Bin 66500 -> 53519 bytes src/core/segments/quota.rs | 61 ++++++++++++++++++++++++++++++++++++- 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 90f6ab9..b2b35ed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ccometixline-88cc" -version = "1.0.9" +version = "1.0.10" edition = "2021" description = "CCometixLine (ccline) - High-performance Claude Code StatusLine tool written in Rust (88Code version)" authors = ["Hobee Liu"] diff --git a/assets/img1.png b/assets/img1.png index 8ffa6d5e2f2822a3b162a59b0a57ee137f9862c1..375e657a526a8db8f05f733a7f0abcf81d9af9fd 100644 GIT binary patch literal 53519 zcmeFZ2UL{nwk^n31XKh?1<8oysE8n0lq5Olpk$GpGYBdOk|bv&XC%i06%Z&SOHPt= z&iSpvz3;oD`;I%#yRZ9o_vrVJan9jLQT5mNeQT|`=A7&QAS*3;?F!KqG&Hnp&&7n~ z(aZO(;f12o z*!o8F{pVs&52@Z#rM`Un^fDg>g3e1^Hs&gmu;!@nXm699%3fEKXrtYzQelA|bLNX@ z!f9Au@|RvcMZfzV@2QyB)2DddFW9zDt?WB&#(5q+3}qWxn=5$e(2kfJsocY8UrR{l zBnse$yFo+qY>n4(Q91t+Es6O$`d{Zi#yq)>e*S~;1;Oj*KO|j77d-#Llji?#FY@|~ zU|jdWzb1xodJ#j+v&zEDLsj{j@mJ=(LRDL51o07~bZtNONT%fJyYm%Vf3W?pETe7G z2f4p+scC2u_}zw_j}&D1!lR;$Z6ZH?`gC?!aAtCn?bNo_AwW({%qTEs)kHei9{;+Z zXwYEIx`d4U&$Z*{cLBaeOZJN4qPL3LoG$I@#bhl=jA4 z*6jMVj1Z$Q?&}*G@*l6)7aMi3Ff*G4Wxu)+S+5}yNHUlrii_y|G~n*;{^rda6-_H) zb@idWagVcB);dSTJh4U1172QDHC?zhxJ*nIUDgnDJCj3cLhv!hBsN}OX_+<3ej0`n zuXwdi2#ch2abHNDo}1%z-CvK2y0aF+<929k!27i2#r>bLoE_DTr4pzcMB@|u?Q(k1 z;bFfvHo9{RALyZ|7$%mHp3b6K@ufFAU6>g`V%hcXDnTH*fVR52^XyN;c{S(7SX*1yxu3Kr3e*|2Mkr^-wEIWig99Uz$e$q{ zZ_*WQzfRu7_qs3FYJKI+MNAAF61wh$LHtfnzqMr+06dj=wpwY`VmmQTD9c7 zx0nxGTd z5=wivTV8kV>Q#kZ{H%h4v(@Ug1lP^yE;IJW`RB#?a%%*c5{k^%eq0g(ATy=8(})TFj`%{ycrxBIX4+1jCph7SC#@< zzhXwu!i5VLgpzA(wJWtSDq~_}5%RJ;=P`zbF8Esl4-YSlyfK^5?1ygQufDznZaW56 z)`IM8@tu|B!D56w5{}o%@B>axl}9`82TkF`m8`NR5fx5yl(RNPJR#` zUJ!5c$mBBtX*IQIu>p-%j(hi>QNic=`}=G0=3;xPGT~cX5^Rvn(Nzr|d2BxNxJw5T z=0bDGJ?rW_byGI~cFggVT)MgOy2K$TM=)z}xF7G2jEr2miVr*C5yfFPRADtmL`0-d z=KZa++Q9<%D$)HHo+imYF)=a2=GA5+6;{>uE7mn@la2o2lcUi48I^N%SXw=Tc%Btf2$mACtp~*%b`5Xix z<;2`vMjWZgCyB&3C^n6Hfp;D}#lhXsMVFNh>i+eM3h%*#2Q4ivlnARS5d)8FGhbQA z8Bhu3I+oYhNFfms27zq+aARsHC$SJf8WsqHlW-F)yvoIl;ryyah8a=+MmD>}Upnpw z!WliIa4d1uTSIB2Qv&O!2|4DBy0?NkT z+Bhrz{e(xaBZ?e6wF?qCEfU0z`hpZxRgF1fg@>GPPn@0{wHDsT#38Yq@%-@N!@|M> zr5Q&or|H0NCu$`Y?HW3~siq);4-iw~;onmS`LrscCDU1xy!hTsGVJ@wHh zIT^hvP_ch`{Lo6sR2W@w+u03*FwAHuO@bigvD0QMqfZQvLq5sVB9F6E<(O-<_wUPQ z^t2cRm75LI;33`F?d>0@B6&evigGa!kY3Ym#xmMpNR#qFkE5iu+2h>iNDJdz1s9H@q3e<{4 z3}r?3G!uW6J_|=xd#uQM%R9zCCQ_Zv&CS!(`btfIHBHAl3HIhI7itIZKn%(VoNRAQ zH8nPQ98Zy(OD1QLJWZC@(#kVs_VMw_VH=1gpMZ3Q?4qOzZTWU&voU#ce6YowTM^?D znF3!nA18-og)*zkues}b?ama|aGBZ79*_B*!{ueu2M4~`CL}!eKQ~q@D=V$lJN^9p z`l7IvcyCQ+gz_cqE)S;s{GIn)eyH%@3X}DG=iS~22;`k_nB=x6Sh^2xv~0xr!)aD< z&&|oHo(kj%)6mt^TUp6j3{NsGY<;AYr=+aR@C+^ckpt#6B7KV{2)3QYUJ3V+($^~f z?)ZBZ4qR8RTmg_rFTl|B0Sk37gA5D|C?{Zp6?Jr2ziUI-V&amK@VizFm=~%x#5~@W zOyE@uyq}$wb+DLIpvh|c<0Bz5sJFKl=K`ISloWD;_R*t9*&o!W^*MJBhf2<|oG0-e zoQpbeDBXMIiSCJflr62bf8=CX8=jt-Ve_*p$rlwb7~mt zF3aX(Rg?>-mWXJ+#FLvvWC36B`iBR4Kj<*MGc(g$*zaJU9nT2}J0ET@oE+{Hmrp@P z4*wRPl#~Q;4SI>}qEXu(sYH*{gHO~F`IWOoEWWen!CO9SryYe47Gz(udiLZ7T903F#=za%7c6)4QJ!xNFD_EVhy z5Pvd0!b7nSs9utqnz|=lYPe9(r_H{gMW5U9x2HG$+D#eWjo;q5WCHG*kKD3Gw9*Bj z$Mhk0uc)mZZht*tO0<(~O5J8L-81aL^SbUmX{x23h!Wht**kyr_{ZYDwlI>5Xk zReAZM7vC-@8TKC2ynFW!mdAZ2Tm^81@luVQZa_FRS^27k-?cF~E3CK}7#L=MMi-m( zGAz;GZIBItra|Kjt9E}13p(=9SH*+NFYdlvI{IuD78aJPRb7^q^}G~OS?RPkhJX&a z8e1HNoVNq#)-5FbF;d5P@3#ez>J07n_z$ntDxVzG#xA?{cIlstns@A;m-$p4M&+76 zjDn*wEBSrv>1Own!%OJsVUdxEyiV4T`L$V-A&nrMcl?5a3bL{WtL$=2va~Qig@*dz zkj4ZDTkfyFBydR*15mWqlhG0V&}bx<$Y#FtGwM(L{7g(unV6XY@{Cp5WDqyK%8Jkq zY-nhJxS*k?hAh82h8VVzA#4%#AW7_mV-*z@H8eEDu~gW-i-NdMVzInzDgLH|jQOyA z{!5&Z*Is0^olBZVd}DIY5<-LU*fG7x!!?YUr>Kkt77Xn-+cTMefqFubGw^Eeh^`b- zQ6Zsu+bTc{GjoX^Ws!M0b?$D5+l6E9>%YI%)bL_9Ik3KE=+qdXe0abQOvlK3eADZ@&a{-E`}kHnlT^zOPo8Z7I^ z+bYdTGQbo}{oG}N0uTLzukZTSR?mVhbPya5 zg@lD$YyhCsv$F2hbhc_sN`6ETQ}FWExa_UM!ZOp-tJS$92(IQ86mZ72ZKhP@=2hK; zdg23pMic7JxwzCS8+8lkZMjv(^j?cvT7EHBM90J|x9S48F{AD%0q>YS-1;}Mu>04= zix-;$h|A&afdz9)@mi;LMgUXg4iT%ptXb>;LFlrF45~ZbDY%9ad8#w98wjU`Z1Rj` zotmDWp6!Bep=uy0Pnp>;$AOuMh)5#8+sM4sHH((!X5Wt=O=FANfl-i`*WJp2SSpty zRo8$5XW~ynG&KO^%jVWr(_ zGV$Eh#iabM1I0I=5~HB4@b?$@-@boO6z~HYY^#fJ-@g4w%ClR&R%_$>_97;ZZ(SOa zI7x5wbM^%^&p=NKEZ67oMGTzb2nq`eBQ3VhFFjpdjB7-{$V$D<2fn>3$aww=Yn z1uk&0XstasIG6$tdK|o)bQJ@o8AU~#(A{JQY#LNUhXs@moT6zJfMa0`koJ)jVrpuG zz^u#%CTdXOQ`o|5a&i*FWH-Nk=1F^I zGRfo4IuDP%z+K>SkhYGF6-}i}*MSy*V&}ZOOh`a5cc|Uf)%EJtD?XQ9+mr_A#atAk zANL00S_2$VQVJJ)xGrQpg|50USKC|`i*-c=olCbb9sOp zd~nIj%5A>`pcd90EHZ#_f(GHr<;yp!gYG;?hFlGeEl2fBh$D8VP5qQEx(?_4^$Ek` zN?5g=f?8|YIP3SfJUl#R>|a98*Uf!P(Ab2!{2w`Um=3(KiN-5w4!-+L=(}zq5E@iG zJQ}tapG!&E6*!1kSrrbN;=f@ikWn4}A+MldV{HxGtm1HNZ0yQA!Kul~qM{<$3jFKW zDLA#AX2S9PXQ1r|a`9-whnytrF>nVB4MJST&ANq(Dk^~M<{%INBlRxWiUOZnY!uYy zrm;;?PG(@t#=wwWR3v|3rmH(SP^g!;hwSKZIBqTB+sj^@AlH{MhlT3=+<6naq@QmV z$JqRmzdZzI0ia=y;VK}@!NEbGu?oikM*dh6aNb#b~Bs)7zYo4Y}i` zr9CHGaycQ1P)_vtTYV(sbN(6ipzp@@4b{fR#+H|A;woBpO4imzY!@h@ulf4*t2V-U zW_EUn(F%xFVB(PEQU(2xf&B*>?g4cLhc)NlXQwO|Vn6hlK( zlPi1>}zb%l9V?{N#kQ;hLYVdvF{`;pO~{n152YHD@)R2 zNFs!6Y3W+p!S_!qEZq41?kXE)O3wmG$J6d^($G(zP)x_530rI%G$qgoY;N<|E!yt% zsxUf0y0eg#&F33@kycjLCulZ$A9%m6vfP4#j@H(#)o&{cy*d3*10X9s1nv|N1THBz zJ2!WgnV&hab)`ZfL*8;tO8-(p#pIQ}K>8^iWNc?S6)kNmy+p%`mh$-X3{?pb@4l_#v#1fIXK+czhQ1p<*F4oV7-Igg23;|ka00+g2-!z zeRyMiDGrL5fuW%vXG?Y^Gk~>c(PTXKrsCp$QL+k^i122PO6$H4eKdOLfBp3r=nlX~ zv>}n)z&-RBu)02lOzSGe{GHsWBO%;dt-Gh^>Xj?%&Od=yIbaxepfw9AzNf(yVNrV^ zBIKKzz~=((#V}8GdU`rQ7Ij?LSPruo;~5N0Oj;_c%s_hY*M`MTD?_D#JSV3B$^*r= zn3TQB*PH+?iZyRcVxkVT2Sw!K3JN{hN;$cE+<+a9*6LUVpafLc2S#t!WHTRnFYjK1 zW#guC24XB%qg?u+h!a==T3RE(34kNXIL+g{1JN#GU9d>z#Gz%tHwC-~j)1>T?RE4Ea7ZsvUJtl%vVf6dE0HQiN+qe`!m_a}XG7xt-2d!85=wD$HvLD{(OBTTWJNXmOF@o*>RaP*M_w z0s1sVJEL;$y0cYnny^RkXe~gzCqBa0(fJLb2DP=dWe0$M1B@Xg41hd=^M8G&|4>dt@-SI?SU0*P27 z>sGup0U;qh9@1DC*laP#MqCLJlu)^Td!WJ%I>0zyry^_VCO9SOI}GC-H9VKRqZ}I# zox(O~9;}L#MtWa<&ok>C7ZJf>K2lLepHmMoOTXL#l`3C8Ai?0D-CpQft36tU^#ypH zN8pT&g>?sZ0%Q&ji?Q4hmf;*=i@rDweEkB+9#5HH0iBU??<8tuYAG7fB-{1yIrnigI8ij~p{8b?>iV10yUK z33mf~c5#aub-CP+D|U8c&8wa>W!;2}fIvlEeX;SWo3D#Ui-z-g&G1hEan-0jE@W*R zmg_w>A?4XwOlW8dwpVkx)6UKg2X30?eQIv*A;aqp&KE8aRMw_w-tHC7F7Gp=2jD0D z9r^)Et#b2Gs3gMbIJ6tWMLM24A1^{alM)w~w`c#-qR-YMErUwvd3k&UwS>$6cmX_4 zU7_Gr%M49cLJ~<&O{LR&0s#j~8(aVoO^uBQYMhGOW>1t+j%%5rtWr=4Ifs9%gaS}h7xwZ zmjlCK=j`lkZ(nAI=?5Iv^H3VI!6M<_+mryI2>;5;&u3v_$x4PBJ;SQGhID~4_y?a<*twW3R{$3(nL0C+ygT#*xf`VEow5@D z*h&}B2Bnsc&RWIFFTwd8XH3?C@bNOi>q0oo7HKL=z+c0aXQfZi$k^H#2g|?fML`;e zP)(KMASgP3C4|0`plgnjo<2*X++6pA!b`x2*%ZFVO3e7JF^^v7x-_7qx2jt+7mY0% z{MyQ_eB6SGiHU{x>%Xn@iT%49^(%UleJqgEqK{XPsgHXp{L7d7(f0Sp^@)SybHW3v zS_dF^g^`0qixN0?yQY&KCcNe*M$`NN~KNLwOcuhe; zL6}kEXBXZ3`hlNWixF!rR~Mm`87xs~w_VcEw>beW8=A(__Tcz<=6>G=I6d0h+QZ77 zS5azB^6g!ga^g4MfPFzml!|*S=gLkLfTZxX-Cb5&3IJJu46O=ioQ>-(0yo4tBHeD( zY*M(yAHU4QBy@VW?AP0k6+g^V#_@NazJdOR6;ybAVd2J*d!ow*vh9*`ii%V{5NNk2 za1q+$kOY^~B=yU0xU@EvL?;~lJd|KIsbls>czt#>(3)4CG0xbUXb{F`zn?zQ}Do}foI)@qe4f# z%Z8JwYx847E=6RJXBH%cMy8C@(^CL!w9>~OuM>CXyXwaRwVi?yuOT~a;yz_;GgeSh zp-pzQ?wjr#D=e-216XrLX*|(KpozP0I`9Sb@qswbm))t)i&A_{*c(8QFu0fnSS{PZ z8LS-P3*_$mpY0Y`v%wtEygU5+oA=S)nngSK zmu@>LDJe!jqwXHbf};auqjJ$peBnTZ_Mn=jNGbcAR{_G7VTgz7S+pV6@p?A z;Q)WF?1myOmI~^|X4%>Ai3Wzf;vx^GNTlcbT)=KM*|5HD>7s-p91PaJ04c*5c{Q5f zt;#!40`;Y-AuA)p=#e%A53?QPHQff!OIYnSdsDMN0aBk#i{&cwX?Wxge}oRaJpz`sK@)-@jjQbvKON03K|b?K-d)SMiy^T=9vu*I{KSZJB0D zqsn%HGT+_C#^%{GZ|#CLV3bXm>VY8`D)1r;;rovoZ^R>G zK&NocG(q{{p7)ul0wM`E=7Ym2gdluCh2w^U796?8nMs1_~g=TTJ@JLb>E5dx})kdP3`Y<+DO%JayG=8TGt>&838y|eXtT=?Z= z4S0<3nN&MRMwq0(WM(#h`_-JkHlLSW)xJUu>C{#dboCq%1OX5quN8E|XZiX2D-nb8 z2N;Cx=FNM%D9c0}E@+(FEwqUx)_GdMQiebi079+*nLZ{4#*c;u-oFAfbErL$j4o`yVe?-6V!lR4^4Risyu%nIg2M7O=-WvUkg{K!iw+9R^Mm<(K1>a7=O{u8?wyNLsU;Hj@;CJJ`m`pQngmV9Y! z$lls3<8N%;zSK;oZIsJ-)ZMcOw-A;B7iqR#q^UtvP>_va+&*Al9m~1*d_olT)St zvu=RTjXG$>gRan%WoI)io$7EH=<5p!2|=cVJmh|C8~QA}FDj;Vgivhu^5Ss$T9TkQP!8^= z2SziKwJ5>1y&cHQQk_d(RTXd_6+cl1%da0`tpN4nkaB|=XKBZIW-}9j;t=>ns{3&A z0^vP9TQN}POwBZP+KQSQR}f=YR7gu6p=cggQq*sj!6pXTQR?~g2Sfo-gx~^B>zpJw zgzk!?f1`2c?fDyFqh3zJX zVC8O`LY7*lwL@F1oh1YPXb&%j_f}m={zwk2x%5^=kteXX?|OKF?U3GrM3~_uE-qdp zp9poWiBPlhvR36h@Jgr`ew1@_L!iE&tctQbA-IEjcp)voZ#G4H!wtMOozPyJn7|Fq zeD)0tw2v_YWDct%BEsEPk7R|7Bb&ecXG7TEP@wDy(9NQIQJnwqunvWKBh=(1U`qrTzgto9N;-CFa_&>dA=Xnme_~Mzqe(Dr9h#=CqpP)fu z?|}X+ZuXV2v1JS`@WQVWy1V6JgT>>grl#U&H}>`%VlrTpwYl1XSdW|i5D>5x-4)1axuS>}70h+n9{X%E4C&etuUnoS=rn!n{*i zt%r_01Ji0ow{kOBL|B-sO+ia*1$K;J8?dSL7BnpxPMVe9Ko4DGmjO-+wcP#?aj@lw z+pjX5l2cORVTE4`K%#=*9k&CEDZK?@w=4Xw2vh&sq5DtV)k)ydUeUt*`u^+JCryN~ z5<}T6p0nr2h6!IH_E+QUZJcmKJ$NiUH`|v;(zty?u-oQi3X94<+sdCL9SiV0(}myB$0pR z?0CiAOerG(a0n#X!j7|l<7Pi7SRh{{kgSx~otQxQI8Kh)9`(@cD0_V9vP91lJwUuwr;m zGy(AlMuAo&vPPXz&GW29%o16bnB3m{_ z4KgEO?!IB*o79Wb|J?J5laU?B*HO?x)qvjXv0qOPRiegPGQ+SVA+LXl8D9c$xq(62 zplO6oThxR4S(dquL<>dZSm*QH=o$F+B!R-?WJxDODz>lOLdSbz91|=WK=9tV|Kf>( z!3=CcU!KMs!g)wpL*r;ZB}f^Z-a+7Wlmr4)I%5eyl)e2fd<&%mTryr%BXF?MNT7p# z`SPn3@xMPKNdbxuaWzy2;Hgk-F4*D0#TgV30607Jo&qRFVEB1xfD8j^4IG}(61n75 z0XzY62p=2>HDIzlJaj%V0|0$oR#kNf%~N2I{Yq&+20A+IKX`?KTX)L&1nGE;`_}o= ztmCsXg;aweP0C{rFHtKt47l@vl8H&u6x1FC&_Ur7A!D9^K9{dvirgv+%he-+S3}{s zf{m>ogZpQJC*!#U-v;p?&gWOJI`2>TcpPtthPF_ZgQ;!Yvi=&1cO_`;Ua&=Vm1A^9 zhgi6{d*)W>fBQAV=`*db_{*0QHXVH6@)Zdn3XhF_%}&&4kI=SYCz?4XO#nZC$qvYd zA~#O2pZrN_Xy|L0f^R{Va|T?`cA=Xn3Psn!Rngum82t0+Pw?7;8VSA>`f^TA&a>?v z8SQ0^Kb5YNa_q7f)X6cpHP9!aTT^yZl9MY0g9V&Y$25xbH$vNUBtnk{jTEJMMe06? zmIUXiYNfTo^XDIY{v3BS$MzG7<~2Bg(D57{Wc5dKK~LNdgchuqvnC1&!c|};fYqI& z!fJrtpwG4fpnnD#E_r;8kkGg(Sbtsya=!?KHlV~@QuzP;P2Tqt3NZk+&!4v-!x=lE zI`uM?MgY_gBIQx8q<;KZl?rGRGPiBH85QsxuoXw2|D7cleAecGUXW8MO&-`2azGO2 zs6*MI7IQ$F{wMsUfAz%JTY|;VP`yZ%iSi{!tdh{E-FcU zeEYw>p*Q7@H*br1#Hf;Qy0(Z$2F_+=tsM!+Rd5a~?v6kQ7IX4E()QW~QgX8?k6x1@4q8GIXckZ!iz{)(UzSU~0u< zD|WoXjx5k|kEAPbI?Z+&=!X%6OZi+QBu~IVA8d_{jfdG+@NV9G_Vj6PIcR?+f(!G% z*&aS@TnUMe9vrhfC$jRY>F&^-+9DyR^n1fZI$EH}4?J(}9k`85_)|lh>~$BqRVM zY=A3kW*0_c<{^{1NJ|IqM}>xN!9gfdAcZC9T&%f{4u?vu(mKuLfOY>B{F;xb)C&VIz?8uBRR*Ne zYPm_EaFUag-JxVb+fbgpd~t-Q2_TKnyLa&FjJ7d9I6BkQ(~X^_`fQD5yJi78ggtP}9;&wFE#$1J7{z^bu~*y|W^=DRJy`&)x`@Jrtw2t6oD}UAj8^c1{^lHhAPB#+;)0#`L;WK zZ`{-WY*>5%5CW#2ip%|~=Mr3KWD=OnKY?O8)M^iN5a34?O(kGfhmp9{%)u zx8R6`lx+ZBDEkaXechShgV;961}Ja!7k^^hB9;6UDew`oxoywOWgNi1{I2GWzXPnD zj-3IYFD9Ae@57~ny)R51@JE*h@yN-?$CS2Wz(6_&!(O7}RkXwwU;9yWMHR(-#9_r=ot#q5?4mOa9`*Q+k zSwl1Me&ml#!m=k)dlrCRH8!3Hr3b8O9%=-)@bGl^gCH~UuYbK*SXhX}gSC!eQnLnm z)@i0@XcU03hI3&3`)fyVw-9tWA3c4qLPk5->DR#}VsF;y1*qv?LjuV2XNA>N*t^4n zgS6CCuxE%2vhOsYv|lyINDgC883;JILNPAb!6Q^LRH6$vE zt{Xybq|ye8RPr_qiJ*w9M-C@~yX&xM;OlOo>jm;ba}d@4)V7{X+=maa1LHk#reMsVpClV z)P#!Jsw%WIkcu-8=R`$C1-5=Z)U8YepX1$U@0YR157zU}BdSLeS=xF?mMPLll6L37YNv}k(XgPQA?KvW{!OP~4 z&-_VAtJc*Cv~r>88C0)}n)`LS0dWp~mzc*V-~k^|C<6 z+Iaa2uE6n^`7vONGe*pVT;`%aed>leYg=1s!sp*`1VE6B)FKND;JytUb^SF?x;bOn_FGfp8Bu`+!gCeIU6g#QS5N=( z0ytgF)vT0O6d8QHpG&a2Gdv|^+9o_?)nOL~T`Qp3Dbcz5Va3j%X+1(u`8pjD_sDx;^j zzu*4_IV=Z@#VV#C%ybNNYfWF}OzcAq2qN!dkiH?w2fHk6UG^adj97x#Fcs!Wg>(Ti zveiR9)j#xxnbk=!;=_Nz5LD#@lu@*%Tka_rmIsuR-6A!a@p;D&p+!Y(A(r<$zJqB? zQ3HpZpQ*`Blk8?g$vla{a6x+dED8be57pxeFli(p<>a)j7Jtz@^`=6n>MLYyoLT;z z1(XiTyBNRe0$^Ud-E12YD`TDYRN*FhT+y_N)M65zGNGi{qPsN zgZ&0rMY%Ugu1s)yJB_z)Vpvpe541%)<&U>g7t-)8f@Np_2x zjUOHSN0RQ; Ye}vJ7XhN1(xCL&eEGwjM!`?_I@{hh+V0H^0tq$z_5lG7TaNKz* zPkQMxfZkT`qqEnM68Fpe0Wrj$HJO>3nyygzE>Deu$2t2_={8B@WGRkzAp?QIazHOM2U@X)wl9@AYQS&K9X?BN30IM%6h#txp_?-YUIJ_nmYkldMSdueTM-D zc&=ox2w)NKPd%dg`Nwky~?W(hZm>uzIsn09!vmOvlY_X<^&Ce|%f)|{W z0PpJeWTpuQ( z7iE4aAF=kYAx2qSdRhLy*D!@-2GN2{I)W^@jcGyqDei1KpYF$GWl$tNTR$H02};L3 zzDxVT(v6_pf9WwQAksTv-1LP@eMDqle6$n0MN3kzTu5iTJQFtsJ9lz#al zyBiwGC#z{S6~O8DcF?pIJWcNK1O=t{Fxcs$%_k*?GY(>466r-(?#_1^Re?5;T%g6zVkKFvSb#fC+nB;?98uX20 zLGuMWMJ}sJA>i}C3U8f?BI8QFrp%}tw#66}loyvmVQ`ekkAt~5{L3ycFL4nhW%r<{ zDq%`KKCN6Q`q}JTtzke8YudCuqVy*4dD@Jn4o{ds>~%08FSBiJZo)u{fx(9bye>*` zx=~L2sOsOvnQ`WAoMoy*?ua99JKO};lNR&$Pap#z4N{sF)33JZr7e%?+Kel&T&7gn zw5KMT+2ukOQXvbOyK9`bOv&09ajhi^Qjk1rH4n`|m+wg*g*H5Y8v5<82K6Zv&Cu|# z)*hLwOj1C<0h4<>Y+vB%0UD?GsHxKsIa?mnB-DTW6tZryFy7EKkYo5Dtmg^nbbe(` zfN&ew(sZj$CmgMa!UBllyl5Akt(~1(xD19d%F;#NC_HE#hkkS{J0TrNRtc)7&z_+Q zXUpg5pD_TESXPslx9_4V3Ki@ol>5o&;koee6Dg{q;$nl3U&ns)!=@NCe|6p+gobPU zTM>OiD6T)^FM4tF#1!mpDk>^fA2#rfkoLFLV^#|H%Nam>G-z zcWJh)`7|Lg%glw&u)>&$7hg?7e&5T0$( zDr_cfI|W@!I61gEgl7VwpUx(z(Uo-rTGB+2JfqmKY8CL#r?o_|wyy&fkjX|xL&E}- zhVKZpWzB&kP8I|2yn^&!6uiLJAbp>U_Eg#!MXwt77_q1o37vjHjWFiLeuK&emH4io>yPg~!!U&n2l<+vmNe?Yht>;RBvbbzin#?oz==^O}^;ivD0&KWFMZa}+3Hwjz< zIE>8MiFTY3Ce*Vqq~hzo2K^Ok)gTjtunWyPSb}(dKe^))`cd0q)DAg829S3IX4A&r z?-WgdqY#zN8sdvBC%(f?5x^ZqMuOFenxCJahDKyW0IBrU)ETCA)1~7XoXJ1ld7ukf z5gz}LTs#1+)XJr2Kt%x7j!jG)2hJO`0O&#sM@>24xjny@Xkly#u4GNuh7H>IhVi#$pgMQc#Kd!_?=LB)Kn5N5mCdlE=Yb5Jbkd8-^5Wl9o)EU2VAo= zGc7t`gSCdSV;DREP8`OkI5Gr7z?oOR&5fehfm+9chbQR3qd&?6`-p(EON@vx+{%GY zr&k4htF?E~51?)dvv)@F5>mUstR zhmVhc5S$9IgAUI*!YlDG)B1$wR`bb7DwbgrF`ug_{Py=K#}tPg7i4D z8EQERDo7QOPOu7Q?Mw=airY}Qb2!cqo08TgaQA3x@_L*egTts&I9hObS0#t?*$_(5UB zMXoS4Z;d=B_qLk7sag@~w(G`Rz4}mBpst!WAJ0~-VU-Y8B|L3_2s0204G_mzWA9Gj zCR&E2_zYxDPt>0`3WDUsYjH!kFe&K;suL3s3)Z#dT^oNA-`d{3 z3i$(NM_KsU(E;;5S5493i7$>$-%OqCqTnpT#4(?Mz!`+S`K&1Ubs%_A)~vJ@r5xqw z!j|ga>vVDe4ZstN2K3oT;aO5!GK1?!c~jXr`QRr5|5Gm%Hue3RrcHh5`>yHUWi6fRyffA%4k?jrKMfEWC*AZVA%StHzASBq$7(q;ww-9c@ShWGtB7 zm=jO?77-aqOWHMK4PQ_n=m27VN@`df;>f4q)& z9mPDOt|wwo{`Re)q22xK?jLruJU@&8_p|B169xS&%E1N=|+{&>dVAo~8h6Sw{l zot};k%U0&k5rl^n_`)0@=_nxA^UE{o*-OR0f5y5D(fQ}1prZKuNq}gc!JdCVQV|X9 z>4m3Yw>!W7AAPY`Q3_9|JSg+K1uubVyf8}e_gz(NzM%SF99PGxb)jE3;D|kWJqSc8Je~~zh+@_@nY27O z0${!f7*>pAAM^jdJ_F~)1OBYy=>fS{GmTVC$%}7ZA3tLICG%R$Jzj-M0qPe__L~#q zqO#|oYlsf*uCHmM-)(px77UhhrJ5Wi?7ZmRF_5c<^;Y?ss_|J~FP~GLqEnyf*#yqzC`$N%~yV9wx zV;{hvE@)r(cK-fnPie}pcg29@0vYNMEFO++?X%vjFhl56mu(~W1nE$NZx{SuNU;wb@z=&VId|A8PhNK*j8#Gv)AeaUC{PTXs zJZH~>GZLIl8hmfCuV|^4W@gRV|e6mqXe3#=Y{|};bY4rqYK}QmcgG4^0 zaG>Xxr!*bfBSDz9?*}=y8&)o&4(Lh6clzG-c1|}v%nn?|Li@TF{WPP;&X)WF{g0$*&L2^{ z#=(`Z4fh<4l&Pj7QApoaSH8ggqE8T+j)vB&QdRCMQM69?d?yO)pMLu_ zZV^MS`6)*iI_a^+rcOE9s!mm;vToli{R_=&evbn$Rf3(|{EOW80?LjqA{L$mKBa*! zw+mQ=6Bv5d;wHNCCQs$9)g}(|VmX~xUikV+ONxJx5c?=2_AyXG@%7FvVGWa|WZg-> zD_6NQ`_Ve{b*mYS5Z8rY)oa##eS8qOit{8RIR0y1W!L5cf7`_5_;3ps+7qKK7nj65 zyY9(%SLC$?=|UBx_vZ0_>{BJ^<%Q3Xj^4n!+z&JpJiJE`3wp+A9tZRLI5*7i z|M<~BLzQ8_5J8w26&4&uLQLFL6j#5%YqPlD*G61_?fpPhMMcB(uWf9-u)!CB*RJ-! z^hZvwww94im{O%Ci%)%HMclV}?It8iVvoaa^N(`!1J|bL#K5w}&lpTZDVmiF1(vU*nR9oHi^{*{$ zfg-_*I|YgscPQ@eUfhan(Bclo9g0hEcZxeH65QP#0tCpL=UwanB`fQGy6c`Z=gi)- zXOGxK*x^`v#l0i(9Ch4@$o{eD4hkh+6CP{8lT?RWRaa=AD_U}MXA*o}48Vv3Y@Wwe z-T7mku%%giCnq+>-z={>TCRTKznGj}IdAGsUea$XXu36hR`-dt<@)-8vP#bsdtVxHOmX#CG)P4s6 zet-Q;+TTwhfGRCwL_;j!&k()hr?bWB<;=`q&}MOo0V4Mgemg7uW@uG@Ww(?fh%leQh1;J_a$vI#7JI;q$neXO3 z4lmQQ6OzJ}lAGl#V(keBz^s063h2nkEMePj zpttXFtomm<2|8@|`q=eQkP!(XCm_&tyCy$(uEU7x6YHX}I z@Bfa?Qs}|FrI&j5RJ=q3G%;Gf|0o{@Hoo5O1g%twg4%>kH})5D-bJWU7r z{e=^SsZ6CdP?T`JgPj{&{dDX^BKTpK#K2I}pHK=>F7M|Mqb}D|gi{{>r*UVJ;X0CW z_R46JY_$G%0=oWhLEFCm3A0D0IzxM=gsFR8asM>Z<*H_F)Ua_T_sg7exY-2_s{Ys% zBgC2#_6WF#pXYv?^eN^^PhjU~nQYN~nLwk!|41p=jizClBW0X-PjsNFJwZwdQt<|* zOlK6isG1S?CM&D`)qAfrqu@>l4F=7y!-sPD3qn4N>C7~;Mp%2qnWy-#@i8U9dROdt zHt*)c{A`UqjzBZVcnK5fnpMd2V+J5m+pYQ$u=^^>=u>LtvtFP=pEwaIyFWm=6rB42 z<*?xD6*`HVlU((h#BKwB@GAnZm7wQk=d4rDTeE=5c|Go16nz35`8FZJbWB~|qB|>i zsG*drye5Aar}?N~TON1vFfJ~aeD|IOVD2X;?uBysQEcgs8P2oWY#ez8FPI>q-%Tsa z@CbWOzk%cTR0WUZy8*BaL=7eEzJ@Ygj3FQqgthn|%I)q~DT_)=p3pZtgZPeI?Y zj_b)|#O1t_bqPyoLk<EzOCAG<0r)k@9JK+Y~dq8WMO;e1Zm@YE^KK1 ztptb_%vQo5uj`}_E7#!9;bvL?$xbjqTR3g~uMEPkNI+T8*wTNrOL`abdt+94cemt) zj^`|`$MAA!&2}wCXo~PpQ(vQ8-%(;a=%8Do#z;>Jx!f~CDSU*TMYNa~Y6hDO&T8Gn z08<3-=#)-Y%-ilIkcJ&D+Fd-Y99zK&%EJDa1`*2j3D7lM;A_G5IXW@k!gPF5D(J^3J<5<;Av(IZB##z5W*oeuWNRFGp>u#(#)#$aU=}1-7 zJ6|{3*Y&6jW{t8jJO70AH-#t&jZlbc z`RDvG6)x&~%5w$EJ^&t;#h6H%<5v*Ydp1D^?sB^dQAb=LaIB6VIY_FIBQvI>1+J!Q zK+;L(LC(iww@7cJ4+z;2aaekI`ZUv$P3>%o=>aS zQTkIH={->UwI+?wV%g@ZbJMAvfq`+H5p?F!fmlNJnAtrSKEuktv$$2WwgrW;svpF~ z)Wl4G#wdXh4(^1&1mWWrO?rHBIFfu?Y%~9-1yIG6j4H6s+y}0kw7B1LoWx*M zzpx2T$sm7yyfcu7zTag3!19em=Oh>2=ZcG!%#yn>Tz2rvaeR{kaX$cpVjYJ*ZB_Sdxbv8 zk#}BX`mDTj6#RV1(t$p4yg}XMa|07>G%wEn#Y<4CRYe(+-WQ9>(hYs(AwyRi=9iOo zKYC627%(ZIrKV1aUO1vOt|#bhBBzkp*x&W(+~{iiOJo&WA8+-BHDWzNx%5TW>fs-c zRw{R^8EZP^<(d$OMbZc3Cg29t{=ytaj`gRGksaxX%lg-}`Aj%*vK$^OYO)M6C6#0Z zg)OALl1%79L5Ze7Ex$-23Ykh$l}eI6Ap*Bph5in;nBr3C=@!ivnceBB>H0nm{JMAA z8`fr@dObs}&qK1*PFW{?F&&-yz6SGO%+>fsBDYSOJfazY&TQ{&r3s#;9PAx&Pj{K! zzg1RQ&BDxD18QjJl`7OY>35HGb{-v#ykgs@Pnx!lKvplOk1{13I&$I5Q9|6+x%j|9 z94|3s$+m-f6bW3UKof%|cLKHZ{>L>s{`OD*V}`iOX-rK-+$krg{un>;u$S2t_}{Y_>X9_zDJTk*=R4b2Xji}juzvA}i6s%yyg z=(D=<*~5MQAk?rKG9w$kdu9cP1z5=wu|F;Jc)@b*E)MfD#E~P}(i>*$l?+DE#fC?j zIo7PEUD~%S4B%`fPB@fBV`?vRAHfhkyI8Ctk&R0gH}m8rfKWC3kR0=cBqpw@rwZo3 z*nSZ{)RNcw8+PCczu&!#I%Wlij7j*U^cv(qw*FPHHK%yYcC((t`rT<%#9SPGAt zJp8;-mNMtG@f=w*-V8EYHtl{K}9_upGh$;})#;Q8xV+zxmI6K18EsI%UVgMVO}G3 z-v`swF-*8GeXhyM-oggBweA>|K*4zKec~%RC-~ zP^!0MM%7ADAkB@t+THX#d7M4pziPZ7KYri+!_2C@=FSl5m}w?^TrXPXqEc}bLKWAXV}AvrpTrchv*_HXP*po4TX18Fzc(^Rr&4rfP35yM35V;jhbI9J=Pd2cT^$t-bOu`W5Nx~!a+ zd_vagjq_e8#n2&rj#8;cg+$ap&f0X|-6gZsb!;qBY91@YYDf5^!uq=LTgboJzEZ70_sMGo9Ispuug`t}<_2V9 z3z?Gh%pc44_Q_|#|Dfpx^P6$)H^&OLFAN%Q2P7f)}TiZ`DN!{hyVNq|tvIqq_VdD#PB)*3?uX~nN z@DN)*uNmq+fIe=p6%S$Pe4F|W_~M!3{%ytRvGY_ylw+9G6k5tL-&-(;AG{fO*ZINsZZ`z9%R+1M7NIlwxON9+7 z8x7;BBnhSYz*${EoPcMq$qZ=Ll#4rX>BXcLm0r%hm*&3xcu1i2cuhAMmN=F1kMR`=4r#4W~=bHaFr*)!pa!r@dwn z`~}(_VD)X^Q9S%nhC|Vu1AeKZ2lcm&)#?u2Sqxe&%lywU9|85Q-%P-%+??GUwSs4LcnW9{N+LP8oEUO z0U%~BCU6CA1#c4HCh1AGTm|vE;bfRKxC5!qB*!I>JmqZ4`)i^~`CIi3Aus7{Hq)_~ z1oh&xhQWi^t1Wr^qtYe7*<-sJ!z#H>%+p8|Yn*%bOKx{J-IYp2h8RPNDIu34c@u8{NAoV;CE$Jrexx$n)@Tx;@soc%8n!{ekL z-=?&MeY!G88kEy=T>vQ*kO=6Uau?bSY=xz98em@^SDO%i}FlG;fNKlPb7_Acu5L2AWG04R7iFcBot%a|eeGY{08>fEURumxe=*qF$> zpVg?JvTpuuxK!s7m4zj;ybD{snSR>M_3Io`r^g+8m>`4tHVQXg{3^jHRjClf+y!>r z7RUa)Gc8EtdRZSXjy1FsL4F7h#}Ea)5A@{ENx*t~SX|6p*2|haM|dOT;ztPV10rOQ z5|D!^B7!JT@p&XvY5x1!WsO6sTRFSC-!vlTp^*anT{R2Oh8kF}K)$qNgYHy+DkGAod#A2qb`G1_cp zL5t8Qu4C|!Ddkew+Z@wE9oKPku*iRxYPr!U9~bEro^$!>sCT&cSpI3u`s-qZ60u=O z+UV5>ff}yxzDam>W)HJ0#k^S32&hihRtn$I>2od+ljL9tbar`{N;HPq5We2nptS9F zdB-ixE~}bEht|p*G~LSdnRb$d%rUN(|6%pTeXwJZ;;y3pHmKA7+TBJK-zJg!xPleM z^x1(vI!?L!ZnPy_Arln;jobT8$X-ml<)|MkrvsPiSiyU!pjkxRoo&IVcoGpP=EC|G z?1qfeeDsBNKc-#ktd74!EMMU`(eK81qac&{>G$Fn*!jVN`92y{;d_y!6T3G?C+v~y zs=RxH|JjU_uF~uH1%ZXxxSzDqXOE>7bX#2@R=O`zNS6^g65el{ylsGR(K?y~3o-Ac zii7z|&li{0VEiy+=xkb*;`f;y^}VxeqK!PK3j6Z|yy<}`W_xF7=Sop5W=o~LWs9vm zI%P=7p@eHcZ$k1SO^TQ#^4Id?PP5c^j2vyCPD3@#W1zMPuwM?#SygzRFm_H_hB&1= z=!Xc>QN+#AR3?u{vtGFtBjk?7iWmnV79mxYK&JR~t-vPenAY9r$IQlObsHm{y6(s= z;gdoVHy6g*{nQS_uli}9#sVX0NbKkaZj8Tcc=DOVQ2(mo*KzBA)1B5qW6pWQ=~Hs2 z!v~+DaV@Y4Z?c^fkG>#Ihiq7-r5gCH`F%RK$^IpS9&U+Aw(b*A<3V~c_6fnw9iU)E zl+kSWG7MX3o%4RlE_`Io>1%cgAGt{mDxgOsaQ~7Mu`xC0Ynoi>Y_srQBNJ^5ZY37Xr>{?vcVb8gM+W?=fcz7qib zxm~Ms%Efh!59Z3g^Im81gCwVL&gzROw7&@3d+|~ZXc;!aZny&dE=$m|g)in?gxg*3 z(iqouJ1)yLabBIY4bmzzH;A(nTTAY|&(e@BO zP1<7QO}+hxVKyAvtS22tpMj%}kDfbpQE;LnQIodE_OW69F^;~8&v%o)Hbsd+5s z$7`Wa8hUp{()e5shv5|s#rJy9zv1WFcQ`)6 zcHVl6 zn0_1HxV&VqQy|~BXZFnwGss^Pror&!Ro7X6`I{jKpqbja;(iBazC63T^rGMM zg?V6--S&>$DCIL+a!`9`8510BycL-;?9l6M5R4aF>~_*+z1QIK+}oO6{Ad+5mE*>@ z>L_d*>(M*b!vpDTs(*^rxnBf%2bX8~;iB%v>|rVyI7$D(SSBo@Q-SNML0U=!(cmHl ztzossNfpW%IYl_J8W$2Xj0v}LMc#(1hZz!3c}+CgJ&pna{}KhWD*nKduge5vBX)X- zcuO5hPu57|ZrTU!9xiPZ#ST{od`ER?|Kb5OFZW@1n&uc5^o;u_&C+fAng#6=49Jd8 zNY`%MQ+NE`62JR$3|u(hf$g4!;#7Avk`h9!T02e0$>N1ps0gGD-0q$UsaNssKui!u zW8j~&mqxxbJol7q{C+Nt>-$c_C)?}=1rkn^`Ld(y7LU@GpQE~9EZMHv2K|&^gL^&? zgukfz37(yvx%RLX=2bR1bNV7;d7W9kBYh* z5uW7Bsnd&TK6cg5RMD+nl>D!FUs9JIs?Z>VW$D%0cJ$uivrV&dgUhXC{JoSBhPZCL z`EkwXIi1C0;Qf+YkGu`#9%!A(O)AM+`_|?YSbxUj-^AnfeH`XSk_dV-7gw0hYKixUS)_`d){?Je!&u4=1yTb2npPuQPrF1Y!}h4$w{^f&%p!m_j;} zeZWhADByH7EjivJ+hh-xt(0DP-K=m6BBnH5U_$eFq5uUvk_3rn z$EaO3RQK64PHUSX!|eU`N4ED8o^Pp;`-ZF*G;+F&zIhyPp7Xg%w^w51k^UF^XS5dS zELQ%V#s8dr{oF08<-6CkCbW&5Ld#Khuzzy131&x4sHKvaBU27mywM0Gk&ouBMzUAPHeMkC6>^{Y(Wm(eOVQfA zs~fY{^g2Ap+kbH;D;Rt9JijfY=ZE*Yre$AvAlRPeSm7yYX=O(OlE%Fqp19X~-Q_sh zF&(!H5sl+-Uq7-9(n7opRJhW2)a##QR$|8Mo|aNlZJ`@i?>$9wvX?qC0`kgvo@Lk9 zJ05THdh7{k`FzLvu+%@xiHnsmcOX{U=;yw(9u@6Zv!Uyc`mL@ABF&aj{@xERNsRgb zkBAHAiqnj0ykQYVn^NpV=`o|v$F0L@+QL8~N~MI$5M<6l)B>3VZ@sEQj0I1;L3K z6$WgV$bT;XT1Nl0*CI6I0iVbwq^9$fbz&v*g8aG4d-ZzXbBy3tQ&2^bMDw&+Y9}p{0zt zm_wf5O_p)@%3L7BNk#7KCf{Sr-O@^~LPQi@h=jD1#TU;>=82nC;Pwxwg}*3n?#t%j z>|ole0I$zx_B036U5;Dd1>WbN81rm7y(`e#zEen^Yb^u506%|U83qnAq3A#oSE^ui zdciy|uPCmhefqUnPPB`&*#wrVZS40EdNHNBxm=KX5uk2;OQxhuSni2_xMg#ss`8d8NW!ceU5u-Z|}qDIoE}%F6nMO4vvJ5?*`&YbJsvgs#LtL7fS>D zer$2Tle@bt2lHNGe^K)=5#d8T&N`~q9~GRD651p@BS85k`&AGAq?y<3#pw ze`9~qv$f=OB2Z&Z9jo>?VY#&DD_e0%Ynv(3*^l!=uuOyF6gi)c@3qb+JtS2qmf5V! zhc1u)%Fm}OgeV1n>(O@H)IuT(MqIPK*p4@Wxt_!1*_GGhO8)}^|ToOvR2a~F#Ydu95;;ATz3~(J#DF**642OLd?-7g>Oead^GiI7Rh0j z+EdwBGvWQ~vtg&t3*I%PGvOBU#CTTnf+uaw#h?;5C}!QWTY~mmG33z=PlkYvuX$bQ z<=RT)<#%!^dI_sM1t$Pko9exR{fZj_1OuAVhGB*+iL-q4L&E5fkP@e9I|GKlHC@QA z-@-a5uo@1ImcaEvBVjJaH1tNlUe0eW@S0>G59L7c2~AJ{&_K#${i=!8hjj>e-||u; z+*+o;Ax|56N6eu}mQZ)n(d2@7k#c(e7E4G!k6@$RlgGAui{G_gKk%}Z552Sp?z833 z_l7d0((mpHPq}MjZX_C!frJvTxeoZh?g#j^`0fKQsxO4+!--v_lqo}Q3BDa4)Cku$ zwmOw4-)J?S-;Ac~^5lvDTMG`yj7U56>mR22j@MC$*smn9fjE?CSnmtK`5i@4GbR#6 z$Y8*_EE1k-ne35Ly+~Sw`CV@Wtmm*ZbcHZ3L3qR+%B49*V3Pd7PKGn{mr#PpRF60j zs0a429&}wWeh%-G2E8_JR^L9jfr-IsxdGcRR@Ao%9ASnW?Hlyqws)GT$G>W1>fL7g z*!ZZ6&-$YJdR`9N{t9=e1+3l|fmZ_f>vvwz;r6~TL`*V9nd^XiLw@_OJ>8$oFW7}6 zYBQzUAM3$y1h=Df0|@44{kDq!6dZytUYUQr+^!6W;_TuhtP#8KNNSRewJvWzg5maU zJ`S&UN%&ot(-r&VRbRl)+ka3>qU(07MEoAlSksbqpRW%bsofLQA~-mGF6l&k&-rL2 zhi*C-+NWy*UhijlIyM?RxKTxCcGmEEmGN`0FT#1gYkxXcDP z=d0+eTe^R{bJx;#Yb=b0PL%!c>3XTBmL+W=mOq%%Zn5md*lTABVvMK=RXc+!P0ouO zBt=)RSuZxC`jUo!;@6~R&CU=vc?bk7`jBQMuHszd;+bW~zg_m{oXFVi4m+yV>BI(% z^1z`yZQOEDlfq1XYZ!sBVC=CKjqj0n+g@BqB3J}wyr+VSZ}&TDoRvl(GrVdP&9D&@A1H+1)!4Pw$5 zr^Y=`aEzB-AA0qzBQrZKA+?Qx6k9kEMlP@R`uc5tyo*~Rhcqkji+rI{ksWrA?}3n2 zL&0IT;1hMeeDi@}x$e0#7T2C6SFA80+3Gnd*I1ar-qf~z69hpdn4grw69cMd8vK+^ z?DF62SaOSe8Y)eg{oJzmhm=Ji6#m1;-Z4i;N)b>vBWcnw;)pe9R&YdQYNSw5{YBL^ z;?W`Tl3Vua7eO_Z1)8eF^WH)06auJf#}voXxSD24M*>D;7Ywe|XG3gcDPqoe_?NQj zCBHfP-5JSe>Ks=ocfwCaM1X!Lf%d~wd5hjZRw|T@VYb6zJxo4_5RvY0HY1RkaLwEU z%w4jl6Bu|E`b3>|?|?4jXffmzY~az0yH&`dDWKD1R|rOuxSrR(a9F!A3pKQX?3QYa zEL?vP)1#-5?mSo)*mc|dIl82jh)|=1nRlE}q83~Zg4c^HZ^lvO>{j{QQ>EKJ=jlC= z&|&7#+s`f9{L#4{+9H8XI-TgdCI=9eR zr1HJcZ>i2G1D38~APpk9Ro7-2(OHI2Q+TN9{85x_O#R$kNm{Cn?!r;MOOCLZbYuq@ zmjMqoR?V5dC)t^Ik`0Tybau-P(oo6F+y9;B0OQOLc-2_$DKck&NZ&LMTQepm6W&pd zx56O2JF6&VZ4;Uy&DKtPifd86SegzPW3tJVRS%znL!>W zhcv3A#|^nj&DOqOkYDkcZ&K&+_kzcY6Z@i- zW_z8CW!tSbAa!7nWhSq697=q|l)no8dxKC)FcoTnitvzFv|fLU0gM2x(RiY~x%hm6 zJMTT0dySdMx7&nSz&EMw^LUnaDVI9X49~$OY&%^>j9t%u3=NlOu^r-*syo}9FhBv9 z5qpD_nTz&K0j}GHZhv{0t&U6i+XOS-ujvt!3j8;-s$w#T=d&L@9W`q(d^@Xl(-B5o z-D^pUjN+N?iQJ9Dp+e~8ir~?6AY)9@6;aNXvG$kLdLkR#NWD@*mz{wwP*>WXot#XU zi(Z`B`>-tyRQH@gC3;oRyp*T5f;Yd(&CZvQ--Q?}Az5@{H`c3!hy#6l;-d$7y}KA1Ga%PtIt$ zcFK2KSYK^>(|z$y_^I&SQjQ0ru&$S{%C&1f8>URQ5O8Y@e^Ia~+$-Bws0+}&uWh7| zHxp9pfZxP};U`&$mMG?LT%vE?2M{dSY0mjn&`s3Me=3nb?F$~N3Fn^I&+Hq~A?N(f zR#S%=GtbGEWTkuH=`v3QTWB*_sX8lIp~%&l#zDf^MZ=!d@yJx-`n(!B#G`jy)&4Cf zc@Lqv)iPv37nu${a>(v9zZ=5L0xhMHCh{GS#8k>>7dYgF|0EiQV6k4xf?B_Bq( zrp(u1=4q%j{;juROQ2CuH0CAOazyaQ$Di;kg}f~X2*Jto)go?*B{p$p>IHpxsAK0& zE1$uLiGHb+?`J(z`M4&?7$`JVY<6R3k8{Lru%iXxz=a1@HhvXRtcPv1zF-d zNO#&r6$?vp3r>B#yo+C_5#zNV8i_j}>5MdaO3A2T_a3^tRMN9VpBw+zG@CFsmT&U% z4_4>YV3~}Bs`jTebO(R_Rb9wR50DnE3a#}1Q26ZI1PL6~aQ=9Hs^D;c-r zr3wIw0(b)tfJV6_2$O&M%TD?T2>{};L@s9$IXX(j_)%Fkio%w29w*khwxhe~iPrIT zhsnnZMrhsq|4y9n%dhn`By$-mqvxP`t{GVRVKknBS*?{c>Mkc?8U)w{dw`--iNNu5 zmp!;-ux2MkZ{f zxt{P4pfsO%y^{6ow}~?4Qv#Hgk!U{ufHYeL8{KRUNgF4q2b=l$FT!6AG>bzMXkDRi z3Z<2d5n3pl%-rr%;W+0#(iP(0VVO=)x9KP<@_ci3PJCtaEIo&k_JXa>!R+5!x-NkL zY{Iom{O0noAPTQ4F6solN0GR2adN*5mOt?Q*XO6C73DVFh}o2mZB>?eLpvBeYa9ZWM9MJ zJYHjOqfE;JtqO7-FHG=F<=-()W?*jGMk6EBn+MV!$1R~5x*$j|f1 zOED4HFM*1Nnyt`yp*#F0jvGdx9V4L4rSW)_neP9>6o7)8J`6v|g`O9MHq73EdL@`zS>O8{}hSAiwNtUc>Vi zYWwt|lj;l1*Ewp4pU_WVINJ^^zPt{SJtpGEE&|;w?|(xsgsY>igRExXG7Eupj-HwV zr;iHg6D?N=Q zcufMX_chFstgQO-hA4lb^O^eNb$shb-P;^q`&0Cm(4$q8;Z|a8uP}kP$sB;KAq}2C>loTbE|o^wkm$U(DQt|=i!KH2ls}* zoU8^jPks%|F#b1%6j)2bc-hHfKxaS{blG{xh9&`!RGku!_-kDGVVes(q^3om*}b;{ zrGSgOQpuLtX0SYc16?2$R9$TK&UvW{CR3=w)iP!Y+I@8@0>_wy02+p)nuTaFe#3hM zR%(Y`;oKfv0UPBF9r2!o^WTs(9HT}EQghgtd=~3vn=Bv#8_&&8oluv^{Ch;ssE=ao zwrF`+qBb3}2aGebksIx3jZi4A166RxSFzH3%=5f!SFg>*#(t`ZjH{l+N%jA&kX(^y z`Vkz>1jb3&*VRfZP{;##yneh`DtyBUJQ8yGy`^hAr>5R^0b`wdZns)0tdSL|iTvaM zonU`T$-B0cs^tdbCOL(MQLqN&`?MYTkY|i3kyug%8`Dk+nXizKgO^_~ohQ!K z&kWgy9sf%L^BjF^?FxJZd&Kg8i$t=K-1JP6k4GnZeO9|u-l*<^nYV8IHSRGG(#QZ; zkRxbXVyMH5KfL)hgD;+`Ys0m5;C#nNpLcv;EU+T-9SeMeZg zvtYcu-u3JE*d9QvqN*GJZ}pXqB5g0p1qagA%!KQNlHFQC5<~Gtxrh5*6>)mo#X#Vi zuFu{Qe+WRm)kX(Q+3$^^%MG-#QC!kD?)K@P?1728goaX3QFcZ<*9rF5OXTk&gpUOa z74%WtlBS-{1A5w9ZgXXj0vY6Sz7wWOrJCLMRa(VZlBzTqshTsWxjP0VpdW<%-wJQ^ z4h~cAq+2R`b~aAjKD?upsDcpfVA~Scyk~qkCt>AO*itRaBo@chK(*+PKA2-&arJa` z^zc-}KOA(>ci2SpEY}tVe3&%&X1)Iw?9-HRKJH)}YdKX228a=4*}pJ?KXhov^iwLb zqsBX|?cFMg;Q~`lP_X*l`BNQHC>OxYV6KtQ z;o-H|eNdY9h{lL-l78_>ChyMzaUYVZxlRJ@+i|BLdTX=t<>Nme5rnFzQ1rdYy%f7M-*TGAT#D{Ri zZa*X){CU?y%#e(35=imDaiz8C*K+O4`D9x19mv$EpstwgbJK*I+h?XUnUL2b@Nz;% zE&!~BJOLvmQNx}ch#g|?JM2rjYNKD*LE|H3_$b<9&1$H>_5^pyNE(Ao340Eqa^Y@+Q!K`_GjTRLU?LQj9*kF8CrP z7BOi8e}I8M$K-KTfRWp_y464SthaTy)=TKMZ%-|?cneL{=8CJCCXxFLdzz>s1Y<`a zA-Yw@9Eh&K50Bj*o@Y;$_%|~}VOw3{z%YtnpH`4I0s-v`ifQQ?K8@E26+WTSg%I?` zmOFoaw6HhaqxdDg>gRj0dH$~W@T}ykyz3{Wv;~jq{4_Cn;mPSqLnGT!R}J9v;N#Y& zGD3mQvjNJaEg%%>yo31o#9icZ*;Z(unTW}Bem#%OBJ(*)(vIJEA9{0vxFZSxgRV?= zyE=5^SYKF?1tpPL6@3cuk||J^FQ3o-=&7*9A|*7+A&nHZh!~>4h6Z%XAf>w2XNTd_ zv(caIG!MjaT`22q<;rLLhNxqRdgUguq#PFd!bf=qzl^Qm;de4#HD{T|W6?KPM5zk| zoR;M_k|@p^e#EdpHi{}K@_8?69S#U_=Pw3G;I$?moyh_u!Yr&a=WX55c6NbUo5UZy zT9Yt(NduheFTJ4W2O8dmEP%(27 zhEizm&JyQ(vZi;2`H!2+^Hv`-4_>|YI4@2S4h0Gb5#|N1!Q0{5PPP2GqAPRle&MbI z0t|nZ(tp1*m%R;fDMRQZhxDvUQ6^DMV;kiHh~84rPb=BOqg2EZjAeU z>1iilo@HT;eXYxM`BnX63;7bERaB0Mf1F;q5<8s|8N2h&dg^?vZDeA_Ok%}2YcP?9 zl{|}#D`OuQKX_%2?GsQDt@-Kf+4*ZCMF>q6&I(x&(s4xIPnd82x#I8>Ne}Re{V4S6 zU!uqwv^~D5eVKf`L5-FGBJn_MVf~P-y?kp|7z&=g$txREW7a;fArDs~Pxx?ZUTSf7 zwp?m#X>6luIBL(4<}(F87ObuXNLWNDpv`Jsn-cU-GZ?u^k0T_sW+1$5j3|I!`L1LF zHgeUUY!W(bF-Ay*%sWK{OH9!@;?kM3XPv?zNR^FLrloF|;?0zRfUJovgyHJMWJ<`> z#C~}^#M{J5rKoZ5Egf>nnf8hcDC8KYjPlJ0^&}mmjBY2!$=t(aG);OBz=EgHceYfk zv+oIgk_M6aIYa@3VZ}Cjg{loq<8_r3YPm@Uf}ex7A`u02dQ8*=hN3ZD#Q(R$koOG? z43r`6twpG~36WJD1&5yfCI2dvZii0Fn#Rc?x6@n9)>twm2H>BVwZ}lio&h>mE;dNlr#mAb(jg$&etBmK$uvB z)fQxgej^~k?=w=JzU{6tNT%>&@yjorq2lY5L4#DQu^ZUs2u(gbrko}pQ@6(yygr7P zC;3_Hy{DiCtn7|p|66AZtX^Gn_HjX-2R?W+aV%!@DzMQ>{`VDE3-{$}4@SH|dzg{S z?1u}@hF_m7?aWBTu)Roq;6^$^Yp7Ou44RfCNOHY;&Qt8^9!08P3v?^9Ne&IKt5DG;_0-HzI z$|eX(0mX}XA+^A1`*`H1HaeEw>K7A3J%h2}=!+E8jbpB-*0RNV+9*x;KT2*a>)35f z_~qJqy4*24$(!&)T5*2bCk5xZj%#_QN!1Ae*1ncp(t_)I(oLHFCSxc)&sKEYiZPuGQz$OsA^M(Qk2kalq#-;wQ3VN+JjE}G8z9CsL$QG(<3sP7eLImew=2l0%F=qQ4uA1M9$$D728G~IRQ z_gpkJkf1NqYO45!3)o`Y^@;sd?vuEEXd2?I*V{}_hca+7N||h}@Tos^Av93%Dopg( z!uy{_(_4Z=qcYKLx7pmBkZ`Yd9`bgzZDds@Mw;`|CF4N;cXr`-vM&T_vL&pemmLdTVdA zzK1tvMM0Hglb0 z`#{-C{o^kAlr42~pRw5*0%oI-zO6q_T3COWWw5CSr)R4oE_iajn-dHDrqBItA8l>s z(pY0P>_G`)0I*(XZkS~Ue%E$Z`s3kVJ$PEpk>i*eh4Q7rMR@U6Ri2E)izOMaQV+Jg z!y`=Nmu0GS96~9BgCi}#CU1{^VahA&gc6j5e+=xMa*mnJSYxK<;`+kEZTT=_g6ImU z+b_$f4!0;O9vDdXfgZC&b*7k*1a0oVmjVzNA*hk4D0Cwcx{b&0J)@J5eNuK%KKtNO zaL3+RU-YNYf1EwsdY{OSE#+$)Be0Snm@obVJ2Nv7&Ye zzD_w=k&+DGFoESkyQnjUB*QL(h*q<4XQpv>7VWMzhX%bf4^UyZ5okL31F*crRe;F9 z;RCCUONLa}lFyrOJ;dI1#+6P9|Hj_t_0rZ%6!3(4l0rZ^@ww0jSdG`yA12^Z=0^A0 znd`w1cZiwbpTFLDac&Qcr8ffbFRq9YYKF0~h)cT6oG%cN$iXu<#5?7C7S~qT&e%}% z>7q#|O-MVBPu^+*StoQY)roJlI0%Qs`=L@{I^fnE2wQdhxV-)w;PSJ^C+L5QvpY3i z#pT^VmQ$+9ngniKRErJOq%IE(9*N=N)|x*WX`j8rNSqRq^ha_HRR`aW3TYoug+Md!D~JL&MkScI)@Z|T=2yuFo_*G zo|`=8C3&@_2Krcyyo;wnv(1DOP@wql_Op(L({;nK-7DVZRq`BH1#HIox|N%ae4ym~ zaePXLu$_H0{AhSqR8e+xKh=NXKQGLDhQt^kQhy7|BNci1{ZK^Le7eg;>)VSyG%M14 zk<;Q~T1QccHT(^&P%WmFYsRF{nVrIv9bu`^7yF@b`p36JbnikXtAEy<6=5G@_3Xb9 z5V*BVV2|uL&7t2NfU|$6wiNsd!gnC=no%)B7au@ZBD`vR`SOP6+mGu^X}WH1ur~2> zd8b8}sfi0hyBFu!uYXl1FA$#uas9}eo6cEMv%_B}u3pjuT@=^Xet162_;?EE)ne3$ z)6`pDpIgdGjnxJA(2S10Je$au{vO|(Y-m|W*&ylp^EDsWH`@HbsjAOfmC~Pvxr~S7 z<;FWiMMq@*cc}z*UJS;?V3ONTSW&&0HwTOf8_h3+Tp&NVA}nE6>Kj@XY(ijlel7p9vv zJnx*tw0?*Gt4-nOuKULZ@-vqv983!%UMaG1S1U}nYeU5iJ%OZLe&)}HkB+dZXFB)- z)_YWa#$PL(1_{RuU=}gteCKz=Oc~Ap93K4S6lR|2)~P^sB<(-)R3DU7R2+mLteJv& zzAkQX)d3&pq{6MZyXn~r2ZPu3qF$xf_H-`OCo}b|SBakVHKq!kMPB@Og+D+CJwISa z)FGc0{b_WpbAA_a95bHyI>DQS;?fx>;jke0zgWRTI$Rfz%`LNWl_f{4NqCq{o;}y+ z>OQfwCmGKP&X~(ujwqYg8%EDWk50o|#zH@T!JrQ}(;JPkqn@9YjW!8@qR8lHT!(9P z>+9`fR@(Ymxxj!uaWJhUEpKmz!Y|%9 zp}m9j$x+vG46%~M4Hg!f8bt3t{TOTFO`4MU+(1alQLh3R{Iz45grd4E#4@;lB_(oy z+ZCNVV>8D9Off3miyR301E5OzU;-b$ShP>^JJzXT!-?!^x2)Dv*H$&6V?0287i?-e z%7;64T=9H6#fs#9JX|x(>^INvu-7XMQ_9e!V^)V~aI^`E$`BY+Q4;;+v0cy-9RhYq zjqlcCiD8X?WqtP7S@<(&R~0~$^Kk!Z#f1G;5Q8QUwwOV4_IGb_Q6*zL zD~if$8ykxni^>d7`WBy{(SGXd2H%;6G2}3m{i;i3<|#mhbp(NIz0UxwFq30`x}^Nh z^?zFXfj34CCu z@+Tdn^I-db+DqKOOp@fRyn;tcOL1D5K8WylFWlxg4W?x3eF^SIMgD{v@_vTUEd=0j z`@*LVQW=kC{KBSaX6mZk4g=4el*}wmM65ewb?tDd4}WZt0@NYXcT^wOyL>7G<~3)gUjaAqE1DZJA!{2yeiqT5i5&M!#Gbd2q=HTC0m~D`Wa}k}Z z&;9djB5uYHO2^}kH-R--fML;n9{(K-Bu1ilP5b$o@#?spT>ORJ`>>^ME^I(Q7_p!T z>7TAydBNi2qOr9-RD(&NQkUapD99)&L`;Y{Ri`k#D8DSO$@ek)hV9|$a4k&@gOX5+ znd5f2@+0x_t zjCJ$YIgXc(mCIXCk_dARgF}jujZW1hZB1n=1QarHax_bPm<__!t$5eQ8B{->j$(Zy zLK1Rw6@}gmMHW{uv3!_H(sV9j^f?;gP86!Fdq?iL8N6tcPRFR^$?&x~ zo|Np(rYR@z?T}C-OB@OOoL4Xi!OUjUtmD~AHn23+<`J{<@qToaDjh~jpTT+2;Z=k_ zB4w56f``c?gNOD5i8NYT%zQa|Z1*<$WQnKByj@IFk1kP7T9w!wzMe{%P%b{iA_q}KRDPkF?W?pw}vyJ5ZLgV_@*2dp$8R#I?u;l;WhGYwtana zJeAHb%F_($>HsF#@br_lg)qw0DZ7@$gM>Pdxf2*~)bxF}MfOK8-r$}vMe;VGono&F z9l&tW`7>M5IU~-`mg((oe1XkD)6`yy$DiDD5M125$OlxnMh1TL9sS6BAG=~uL71U- zfbU^7z{u_?Jidckwa8T%vw@nCVXO9VrbcAhg6Xk9hZnVHy-y=XI+@^q>$uqx;LlZ? z$A5L4nFaTm4^_p|`jUd#k^+_1IlGLfgZaG~{-sz2&5YKI733cb8iEk0STe3AMnH-5 zE_}JSmxY)=p@)xImc3ylwCq&0>_e_W!7XJ19eNj_tt{X?y~Z6=oKj$yiJP=-S+Lop zC2CN&0XJcv56=!l#2Bv62b#4b_iswQ*!_+;y>jX?fqLVc0`aUHG9;(B)3{sG)|FCn ze1-&hpA$n;D}~NZ{1x|Sr0`#$@`}}ra;+>K%!T{qM2GU-`xgPf(}?+o2-#MC{nlMX z%*>%Y7Ui9E-^7ra7&8ph*0o!?fxJ4K5kTxL_g&h>Mw6FPZrMhQ--|L!63WJB>cnN1 zBCm;*bJz0Bw&#ndQRi${;9K-#*SIWhwrBF=jlpv@)q<1#uH>1xTVr2ir?30@dvTa4 zbs{xt=#ZvF?lwv*xOf-EM<@*3#R^^GqfcK*-^w0zsp7odbLHH(%eA(F+f!*gO!KbC zkWh6|-rSP(oB9fVip@(%rdI+a!aS{Fy^k4j{F&hS>yaZyBdB2KmS8xlss(VSJy4N} z`U)BF78A}$-A##!2X=5wwX)6&?8v4wvz~ZXuahH~nr)Q{R8!V!Grqgd*XH2yxl0C5 zTV76(<&?8Abw?hrYq%Or?^6S9Sx!4SVAkIchJS z;3|DYpCrMn&e9x=HRs0yvVAviRlB2hLR{PL{84~rwF+3Blqp~alYpRqE z(=2x1W|B6Bd++G2*M>%16}ooOajE>FSvHP77ipd+m!_hol{2z3Ka}sM5L&lEuG|mlJNn&F zQ0Upy^Q(-K3^c0LKJ7~7iYLxmERgvmB6G*Gpsb<=zJqJqAM_i7oxbK~dTetuX* zCkL&#-s0_fqAgEpo!J{XJKRENPfO2G-RY~mu<&-d4(RXqpp$J9<*fQ3$2aQzJCG#QIGYx3!fR%J@b0QriS%=X2zL7HT>9=kT2c$ zq*kl=hh2=cH8uPBa@)<~#dUu`~Cd=-NLoK z1tNEAm229@ZTv>(JF`+J4i(H`BY3#T7RqQTsc5L^sKk1$G(q20{zA#+Yls#w8i^i}wHZus@u zA8o-U+M7}b4U-U)0u>4;vcGJZ+OkrH+8(I2L&YR1*i97n)21=SI?)AVu2!e?hS{%U zE{UbN6H3tL=u0mQ@dL5AQ7?Ruks)>F1}wzp`An7HuH)Co5j}T04cffTmNYFSbPxM;nSudkkmrlhTGYm6DRTjAxb zJINP+6l&gsF9bO{@?}mv`!X zsNCyghI%%0mIPc!j-jui1T@b8j|wgTum&eL3^vi@UK;D1u|MToS*rZcv(Zfe>z`WI zIl@%bR%H?3#X~ygv8G80dPC(5<>#kj|Js56qW|nq^l7!B3hdARbZr`_0QP7%Z-V^w z<2vJ7*#2X7sS@4sc5oYO^3P`za1&IBT&p7Zt9Y`X7axa z_~iVhGaE@+w-^qs#?s+R|>hTY%i$6#0_na?MC(n9MqpbT~s66{^ z?t7RKLVi7HSvY??_zngqmMji}(bCx(9hoETMCG|BxzPUIxgj%cfkqAFYxn`G{zMPX z7GNP1Nd?*6tXBw(CxMn6o;L^g9tuT5x$xMdEUXL*sY#p6cCtos3fCi&Mse|*EW9}a zW7jRx-sc@3XuKB7VR8q4xTf|-~I}oOW!unnwC4QuRM??;&<<%E~5-tW~ib<{ae*R~tP|KNdp{ECxCRwF) z1!Op&&Dybo8*}UEoh3HlFLL^{gGPXb-D)<_pf8W{d=FYtL%>~Q7(JJS3c$e_eLD>M zO=EVKQFjko)fCwYQSAwNfUB{#G9nXT`Xk`t(CcGQNK-Xi-^j!ukRkZN7FbC`T{Hb0^0sw$aEteve2uhp76az>Lm@_5uI zIJe&2`tRfsPEUhZ!>|yJp9h|ir7*p!tBU6tj?HmDGhxYqP2aU5;wMC)99=62jzC)s zz{vWjUz=ieO14CV*PM~UCqHh(F&oR6ZU)F=g%#J|_B?4e!U1os4UAfWBSk(>r<1!9 z2XVE{q{e;-ppTwKz{BrUU;GC^hSUsR{C^Is;$P8->a=7 za)WLX|NW)<>{dfEm@TJhlD5`TB{c@L@KG}vAj^m;qKgaS9b8XT-nbo}kp26nU0Qz> z2?bMHUU+bft2uEXmWq@NB~U)&aJ@q|d3!}4R6L>lqI-7f6#Y5@Ftv+5JVvTq!1bii z81(eix^DOBCLzPyex`GKu}Pe#ET7AosCuRl_T<+-2dU=PZ*3OV#xKxB(5Uu4Ms!hi z*^i&BwKL^hp563#F}%!B&>>*d5a8g;)25Flx$pqr9LTcWIf)e8&Yldt>Aw;uU=8W> z=C0iLcLkc7pK9ZVoJyUh_#tlX@Qp7#nV ziV8p59_*yIou~#X$XUMG7e`d>jsW**P=w;AyB8P;h<2I4GAywtkGsKo^Y_{nGNn=9 zi>uGOJtJJ#nFH|SCTc^8&yNb{gX>_nnoN_HU~Iq=gCR|d+qveov%;#FArtiD#sl0R zwYdkZkrA4*pE*nob_cv_y?t}Wr~j`r0#^A1V^6n_J5UYH0{)C|P9LeLf~myWIcgOT zw)zT^gYUffM+ZAkm1_kRVt`AdI(HEnm;)f&PFU$XFVaqPDpmS}8PD4Nwr%rwahs7~ zJ$DnCZrmHCp*8{tg#6291peeWbaHoRq3zIvkED64A@xpyKM!wlyaT$rgH>tI{WWja z{kNeQ#DSbPS{o3=j*yFDU=yymk&U-_X|bOuLdgJYO#4^2hxGaS{D-38WhlYdc=g7gR_v#2ieIB z%hM{;SLGPswHhzgs%|jZ&e01$3N-6}&(5BN+FR5{`p-q%ExOf&8$qzl z5L3mfHewHQI@sDH+}h)AiM%Y&)5^SQ#5|majlnNjkpDD!b3~F5-$uo1FfGVu$og)T znY<=eziRf#u_?W!{(Yh7h&Z4%1f;v5{53vcaPIJPc)T^o7jjN>pGoOw0_531Mm;3a0qKa8%x8N73g^~M)UR}A`C~~laqp%kNWP> z4$UApD6B*Vel)eUd8oMl2vE^^U;iD{tEo)qJGevr7g(GdxeZCgX04GZ=P$wj_QVmz zquo*)#<9Y1mq1DGf;&`;$qUE>l#g*Zt&Lq@eutix7SQDn)sVYA=!M2jDnNy|qT|0g z%ZFrkIlo`R5+g2~APc_vxaio0{Yv6c*LUNCIi#}dl(5KA2#8`wEKxbcQ!i1+4Gn{m z5vy~+O(os&ZjApeQOm9ClF2U7D+Ysjfqg0|4OI*=5O^87H|CW&!E6zu*Pb!MYLcU_ zQ%BQ}QKvLWhF&FBFE=r zHbX)QH!>1sQ(et#!*OKfV9nUbnGZ4;!tpiNKWT%+20wje7+e=vgMJ*AYOttMdjld}fzdpAvm%2FlK zmiC53b6e?n#2MnsAFG4!)QK+KBrrm*L0&+<#dHk?>#IzPjD$|hV!cF|)Lkb*(KVDFUg=!CbAZ#K9+ z=vOC?Ydg;62Q9;XZ*(}s=niX;5Kflx=Pq=lbr|$u7YDelXDpa+_1ekB4DK)%A%zVm zvU}eb$1ibI@)@moVf=Gz|8_pQp^#B3R6BUu!&Y)C{1O$pQH8VBkRbw(C~*)Z)IAox z&4NOT=$TZT=BDU%ScS+jQSUnlG@ZRM_9kIZGS^UMrkU}-VSR~*_LEAHfe0IZ6@<;+ z)8g3l57`Xb{G>q|dT$CBrs)$)9o**b2%6=lACT!BMs|I~jFD)xCS2=zV8!Y2E z8c+KM(K9Z~rRo=F_)_%Q9ZMDJ!Xoo0uQyAoFu7AcLf>T%F~5!G8)4M2pkR2Eq%SvOuOmDSm0zE~m#I;e@{H*`v4@{ms@#2% zYn>Q?MmQ8p5_tci-eTf}cC|*Zz;Id;6Mj8kj#$WUOz00Gb4}eoYbYa7@5&Qu6WH@)J)+e}{9SdD7;o89)?p-pq4T*sWwYo}2@=Ky*bcfNk zotfJ7NUs$!KD2yEBc@cOm2#SU0~o&5n4QW2r>Q-96aKGAo-7GE>dJ@cN?Y% zlZZI83k#Wx_Jv%L<*mI?JJn9M4Rr~H4T=;(vn&pC+scYYiR$sYNZb}@qC!Z1IG2?t z-@mJ0p948~S0~cJdHO>hKbip|^afv;EJz{3xn-`e`6*Gxi#ap&z+fKD83ifmb2i90SYvD zaMbK_lQ-LCU%A=+9XBx{Rcgyf1g(cx6V(p)Pp8^+d*y^-b~1<={N(XzrFXyjY5NmW z038YxdV(?#Kj~aRNw0Vk(0tlu**2@fFE;Q+Fr!nLK&y$*Q#$pK;P`GTk;ED@TK<|rLwc)5VN-EFCO|Dy3(Mlml0^VO`l6%lf=>{ zSktKV!lALrCU4dp+Toy3nIT`8j@>+;41G~Ae=1NvtH_uMcs)Mn(>8jbF0NSuLyi`y z&}tJWr3;Ozwg>s98ge?Pjaf`OtPNZ6NZB=ke<^7U#pgw&G`jD2__7dPH^yg3@gwl& zEPM;O!>vrL^kK+R*V6a^#8J*+~o$bNwUwzNJxob zax4BkL(gZfevET&Z>5R9Fg#vvV7e`C!+LBz22TDwvG?w|;AnbvS-GE+e=w8&k|F{! zJdQ0v_G?u%`__B9#+iMt6unCSMJV#diF>x3PW;~~`5`yBkwgDnZliQ7dl6y;K%)PG7K@^4t>74S?xAsZA@O@!)~N+8R{+n z8ydcTORVnOX!3VF2BVQZ9HU-ABeG8Q`bk$C7@@;6@s}n3-4;auHr9nS#9o`mil?WR zbT*%ra&V}Z-!RXFE123YZ`7^T{=LeD`nfA=U)HN`++4jDt6uUe31(zd^Z{W8+O7xo zrmGcomrbKi8(pWOiaMn-(~*W#pn=W@BQrM!^RGta8qZ{M19)OKZn7092uU+ZA{S;Q`cLFT{&h>Cw6H zsrH^AYFqEkM_5Y!86-lwl6xV8K$|$Q%huJHa@cOE=;K0%OZ=QqgcIzzD679?I`fCH zg~P62dtjL##vlD#_tMS2Mjk|DeixPC0f)Sguk^G2_q4TiAM1fR{Bm)$kybszyWM?& zIdgevNH!mzyZ48~N+KPmo21BK>lieBLW{lCidP~!iHWT~m%lg2pogjzgM@tS_~P*P zu~$7NcFmVx+xJ$g51B#p;j(Mzt9ZNnWRGx@T7)clTQ#}Q2jt7k0nj%lD?Ro4l=eg< z>_xoq-JMpTZV_7j6x<<^tSeqf)ep&#*rYCwFk~Vzj^j}{-AqpHi*?`6m%G8iayb?q zHlL~P=yUoOY-bj&PA5p9hSyExbSy8Lz}uXHc9Q!$Ro$Wo>{k1Ml=^7nIHqHZkhT0^ z*B5IfMefAw(MWVDY|zS(3yo_A~m)Wc_m7skw=>V>=S~sgDtY&Mm#WM2j<33 zE_a9|Qc~#ANuV4pDhta^75V8f!yi4_tmO80*IQW&Z?^YrcCP^@eSK>|E%XofFxIYicp9k8Wn{5MhqSUoEB;Nl6@SNz^g3_%lv5MzTKcsPnCw zD=>~rp0i?Duj2QU_9YWOwz^i)j{cYHoOCfDr~pvFA!3S3(0bFy51BcFbikg#wCLRU z<@SG1s2kA3`;58}e%yRzA?;jBVK=o2{9HVhiVzv@=t0Xrf`x&(xO94BY7{h_24(NuS?yyVb9Ora)DPXcCZl&fu!B3ny-#JpSYl6i_;Lt>kiQ31 z=A3sl#k|eC8^`w)wO=_{N#lC#<`-I;KQ) z>98|^=yCkGqrJ1fbvWLD6bS`T)7W2-#Iy!_w! zWVDwB|J$%T+K`Z836`UMI-!*?cCtU7)KGrb+&PP4IXk5&M%MK$wFW z3xPUb(wLbRQ)p5#J@lh0SZK08^C-QXFoFaP@Wn|G(fb<63l%aV_9K4T>F zPNi`K1=+Ywg~?U_E5A5PfztN{I#<0XdSfLm2qqJs{^~hav4a z98A@9aMeWd*pNECk2Lsm<6z_~*LX(xa3MPdC(L+Y+V1v@JCcI|t=zW=xc&VP#(}vs zK=6QX%}3G%?k41F-vlBDo2;anx_8GshpYBbXK_4{zr z#Gzc|k2(xo%*%tcnizXtuWQelPd$x<|HZY4%LSs)U(y^~Vv)g9;DCiOb2!HL2O@?K z@8KqE+K*x0fy6;N}d_NT8IYZG5Q>0X#1_AEd$@K%OcRWV5lBJn!{w#MRfGD-Kz-eOGe{rY%S)R6>=h+bF z&fp#0O4g7?N^?gPNPjS|GhS(F39o-`djMiK7s&{*mLo))D=gj3lBSX0^Kyd2kvoW8X(tLdI2H}bZaaZzj^erM+wv||wv_yGzM zglN3cG()J19*Ldjlvk>D@cxoIwxz2dX=PcX-sx>NI7u+CleKVd{oR&#$2VlpDeC2~ zpo)TW2s#K0_twpkMkhue=>C`v( z>qqOeAX#MdT0_W--QPqt~$jobx?GqzbJ?^?_k_~ zWWs!8W5p%kJo0iNSqvrLK9E;T2L@Q}Ses%h71=^wWmbYpiV7DKUn|e!jOBUpY-F{;r@J6Z9YB)6kY= zS9gLx=$wvl^{x@ip{QKdG>- zNbqi5eKF*B^407yHMu1SC<r(0u%!-^{0d1)Gqb}JXR;CPjGfB>5-L?AM zUfsAjt{&rVT>Aq|DIeuG@zO?L)n|(EfK1&30p>=kp~J8fy3rmA5oo{yU9H|*8Ede> z2SDl3b$L?)b;Fb8wP(ZL6Qq6NnTR#|v1xHK8$3;YSFjN6?$qmZkf!wx4(`!3v6;r~ z+PpHS(&QTc=D4%-WUD0lb>AheW9>s*(IRYqdLcJ|4`-YkuY% z-wZ5LKp|n&3@!stup$+GG$0h*}g)n#AQmD9OhKB0L7Rc zs3z>MMHxIC_1rD~fm^7*;WBwVN?5yn!wu7VNU*P*?gF&bdgUTA^Z9rZum z=a<0sf;Jy-(UMVDf>eN-v4ImJXB7^Ij{CFswZ8aB19$$^FP!@RCXQ8JZ>fGmW$?mn zL#A7}Ouh2yg@t28&L6OsSAjQ3jR&3E&0t996*Dm|^E6A$GPn~TPvGW7T=Nt|J5ae? zoBN$H(rKeQJsHCbLmvRv05h~QNOf@`yFeaC(OC&X=#Nd2k zoSq7Uy60Q^$IZ~z@-&y;AwC5OX1J}@CoXQ6%5Cr@pcf@Fu3cDeqdI!<@jiQ1oj{Jf zqsD84Al_G7Pqp}nfLtd0x<0|_`3xs$_@}pj{!7r>I=ghyB-Pyf;xG>na7mWr<=kPt z)^bQh+O>`KRm@N~O9h+6sF*x_Xh@;ibQqo<4FuXc4tzbnFVChY6v1;G>+TpSrZC5( zDPY6lPtHQYL?JZG3=|bJm+)ry5wRK!osCWN)Rk*yZmQ^zvyFt^mz9F2NcZF#kmPCS z&s+FEhK&tIs4m4BN2k(kez?H~DN3lJpvYmvllZB4%{1AblGcnxOw=O?5w>O(+AJ^% zZ&-1D{>YiTP)QreYE^GWsETyNO8CZb^Nw26dv_ME{HHBc%AIj>bpUs{tYT(v_GB=^ z1T$VNx|j$!=a~Prv&PXx=*q9)k5!33;QFUnIG1@;(`yyFQY2J@*W5Lgeg zESOa?27XijkFV1q%)*Q3HO^k_0LzqA7C@~oM>Ic_Y0yr& zx*e0#7bx$YAF~3^gm#O zWyR+L>dZ!a8>UVNg=uY^#NS-ADDkegyR7NqY))<;w??K-voq_wd|$R!^WY9Nqa5;| zib*{h`y9{Q-9)r2&;El%A3|{wWSMJF3@-2o579ZjK{G|9skx_0s zCCQaCM@f9cy0yw2&r!vtDMU<6EIZ~lmTWE)DViuNYAKV323tN??ocviY|zMI;rFto z$t;l%V-Db)dVB0{CJ-47dJa#w+uAskdp4Yb6QmDe-=<3rJ%4Y@n5hon%>o>W+jc2C zQYMlvvC-lF%pKcdE_mo6W7LQ2O89CiDHwd(kp*`Io9q#N25tvdHPn;;JniLGFN}VcY))Z>1%RHQf ztPRwjpFgc#F87`@sldtC8b{`u*B$|n%CV_K7|(wbdEi4!yr+E&OiI>Cgqh z|KDT$yL0c>m)`wX&-3rgdboddga5y6lKkiYRSEv|N%zbD_tF2!1pi-kH(mwUhkvbc T(T_9z)9{j_aw1hi2LAsKc>yx( literal 66500 zcmZ^~by!qw_XdiI3J3#A3P_7|OA8L&-Jo=Lr-H!H(hUj@4MX<;(v9TMNO#9j!<_B= ze(!aD=Z~|mfjxU>v!7b)UiZ4!LzuFn6wWi!XBZe5I5N^;RSb;B`WP7ZeV^P1K6!za zt_GZ*I!f!fU|?Vo{QbFyk(NP>f$JVC&T&r{`2%4@!aRA zy4C$@r;O#2ZmX(sUIne$IX4f)VQn3}4(YyBt&q-ZXI^E(P+`L0{tD*#iOlvQ%lHY^ z*T;}0%9wYru<3{zutTO z=J9_QpD_P#6Du>UZMR9KYKv8!y-UuO6`MgJSu;!^&?u3tDh(KPsO~m#K5J1&`-?N# z=BKKJPU(XxgTGV!_c+20G>)IiB&cKg(E3Ib8Yctk<>hv*9KBshoC>#B!lUKUt>6-j zM&l!nj`kjRxjG-i<>Da)c|IS_#iiA6DKr{sag1lPzRemySZE4>8cz+nNyYxKi`P?S%^^w)ICo>Ee%&p^7oY}0uvgFaeT3``cVXPC@C#rK zrdF(BTyZ%nMR~cc6aac}&(ELA?9Ic?eYPChGqllCW1~e!M`vA=#*pQC#@FiQ9liEH zLn&u}{br*>H7LBx+uHjvh1V*69m>?@P|nP*OLC|r$-eB#TopGvyW^GfmCqsh!ETi! znNsHUn&8rvu6lxMt_lMkU2S#sRr-FO0-5#-EWocJFE0rqD+jwBX!ZR-A5TY5Z^>;P z0S#dN|F*bFXT^Ms!Yyvj+M#fT8;z4|*Y=TKg{T`yR*!v;n>C=(SeWY1`m!1YH*B&~ zoGgABTO%A~mbZJKu*qeGS^}gcaJ@75{O+Qrukod%onmBVrNtlDs)js^%G73e^DfqK z4YQquea)Up*4(yW#}E@du3)8mSBjtx3|t& zc+~jX2D4tP|B&F}t28XHzn}md%-B!Dy&{q#k~?i61+@sxB|hR3Tl6QpjnasfE4?Y` z4x}Jw;Claqme2l&`3o3qRXQX~WJ%q^euMXJ0B1%}(&Cy;c4ATO zqwjvvq2r)x&`!@BQANX1ssVq<2&>Z7#*c94_@#y5TVXjLB08Z4-XNcPfmBFANfkO9 z*Ju^tM`%-RJ?WguI=k(P`hzKY>}|b2JDJW~%8)ZV8zSTE*tC!v_9-C7P`MmJ_x5d3 zLlkncDOqlF!~BY@?U}@XZhGcKNYw ztVao2?<&e_DP=Dg%GOToUXfbh-Hb3Ryh8_jQ@V3DG&%Q!u3J4=vuJn(0$LIv zKUHNkHS-W^5)yJV*Kz0P@sGMVxyE&Ja@w1A=M$=RM=ZxfLL`%>t1R;MSt%(f+#5n5 z(m#|3gN6QwdxY3$FHVyRF0fg-aOwk7_IniIm__pWdS!aaM=j8>Y&IDL6VxUySBd8a zZn{i<^%Oi|O)`({m#AG|Kbcxu(tYO-8a%Y^HRdSnS!&i_urVPsVz#;Iup6MI9*wsd zL;KC+_4Zx4B~ch9c1PdM@UccmqiipKP0dGHU6-U3;OAc0+ANhIw&InB?dEF3+(=d* zli{n#%X3Gt8noz(^bN$v;d610K`cME5w`8b>y{?bJ%0Q+toP$@n4y6<81wn7#^sQj z(NW!0c>$u6hyNO#Hv4b2LA|)yam*s0Hj++T+$mQtiB8B?!$8)TFIN?B1Gt*`d)mY$ zl#Fawc&E;1aS^Uw`waq&0uoFNIYyafn=4Xa^+~Qa@8VLWh-2hd`-rN4$y+fxhMYPk zfy=5Ns1q@g+H3=rSR3nv0LpLF%}J3>JQ%E`-EL8 zblMCl;(DJX5$DBzPp19AVDze3M!C=Rnao2r^qayZhldf*K(UB~3#pw(k9FcpJ?C>3 zW|fTZGBFpCDFhODAV%6)FfAxdwdSN-r0FOZOH@uWDqm@4d3M)Wk3PNlmrx2}sr2aE z4e_XH`K!7`?|5xy!|FGivph;tRb~T8cq#z_0T!EIv6y`~xR788MxEzTQU3b2uUJKR zgoLWi6~YWDSKXV?7j;Ar(tj|6y+qU#UTMqxyAB_t$y{+fa0K+2qiqbPW>^OXpK2&G zOVFTCcB(aG8X*t}9=Z6t)QN$^=8!zOZX zh7mtZ6K2>KX#Di)G4rh3-7PfC&~1Q)Z+(3oPen~_K+gfbivaPXP+5`;B8%lV2zTo1 zt=xDx+z(8fJP>B-Ieo~k`TNwj{$1A+=f5LryB(Wy2!J;4ub*7Zu=dJ7kx{lS6g!V6 zk4PMoM)pcu=^16tn78-`|7s|KE)g7rX*_i4hGs8Sr$kZPvg2miZ|{>jHqO(4&n9_D z^w}6%!7_AUZq`6BZ?XrX)UsjI;BIoeG0eGm6G!}o_@$0&3e|Sc8xVZ$jt+Jd*Cth&=K5iTv6U>;ITkK zLSj{M){4FhwT)1JOPBM5sudj=n6;VB%Kda2>)&y0P$sHpl*F=zjnfvb8|h|N@aiDX zgS0G~l&Of~zE2}-*BGI(Q1YZhKjj%=;=%15i}y`k<8aHcUx!{T^p*S?Bh zAQNrnNQY@*aj@D&`EL1aSaqe7-=OPij=BP&j|@IY1@8eIaHku~OJ;-OfvPJsD0Py zIRs(^U$yWnA#8UpJ7$B zd?fnjqD#Zd8(Q6hxJZ0pCN|>x*mXKXnAajwRX6S@5UhfcPA=Fn1&}zN@M9$wPS1_D zlW@p-)NoXn1tlpxb?I%R&NOEZyvmLYhnKFvbpE3xwQNk1&%Tbs#n+rlxBi{a*Gf?g zx6CzBkGc{7qQaX_taUk43R2T_x3jdAW+sH`*38@T4w!QCmN?&LNk|M_?9Ir4-J4K| z*1LtZ8Gpdl%BhmTrd2q1TT-H@vp)*0N(iQcv66N5gb^~{-nyoywCS${9{&&UKC>e~ znRpE8J!oyR+n#-a%F^$cOU$e?$iaJdw-YZ|wF23)$ftjW;6SAZ(8Ti~x;!X!4oo(j$G=BFoK4DhzqqND{j#a!jL)b1eUS0) z?n3W$1%A;yy+I;LG|&IzVHPy);9k;n(`94eO9sno=cgcp-4k`wDVt7pO-%w7XXmjH zoZaap0)}DF{VGe9;Y^Q3aq#odRjt-*R9oA3SVs5J4JynxDslhdV1NIdS@C*QilJfO z29Z?WdA!O1H^dMBFIc59U!eI_q`=4*#1>7=KVGhVCysEf*4~5eC;izFihr)2I-Syz zIpef6m(kJXp-F3vcJ*22Ls(qk;)E+Dc9P|#vXl%d4M{UubY2<$S!ItpTi7Z<` zzJ;FO+*c&g-~sqWZo*7p=*rN&y|yh$7_46>o(x{m_QLN8aAFk zQqlPUcfNSsD$Ej~@exF9#^k^5>rHUJ_#ee;3-l<@E1uhsj?gsSO{g+R!h3dd)JGeY z0b#90KH{58MRuXI{QcFw7&0zofSUMerq=--($_ym4PA23{r4i9m&>Sx56T zNsHgIpy->QpWNaU=?R6kGn|b+#dYuul3xc8u+Yy^cbDp)K8YC{i@R1|>>8o*>lXIiTQ66N?=}b< z|7Sa|Uu8Jd?Da+u{ALUkv>VO9U&}J)c*Y2Fi_)`jT(qj3KJ+}EuL!YEo*Qacwe^V^ z^7?Mwo|+GW0@e)OWjgfCb3WCrbXsB}%4V|r zG*e`X&+6~m&~Y+b6AesBl7EjMEW=_l83Nw>&02TUL#ctju%!|0(1FD=gbu7Ta|j9f z9IKXp|Ya$Aiif8IlRcVug4hgy?*s`(#fmB0BM1nKtp zts_m19WwFS9OCpMj zxjYKPMsCGY4M+^1;=(qg4$VlorY7?F6Gp>k)ie@}rC-;AU`NUc2uWo?%Muz34FY1aJCF^xltTkuR1ZF2VYWaK9An2ba2cHLn6G~Ld zt5sOC_gCb9yc3Hr(&&_sff|EAsU^|L1E8U&owwdgpO)}*6&Zi=039iRP4!njU^fVu z(c@khff=Ru_yuOQR`tFk?fKMbH|+QXk642<$+AWuux7KJtH}-bd{ne*upmyReKQRc z1LFzPKP}5gD6%R>Xv#O}Rci9mbUkfhK>YNP=xpya8BjZ5lQ-XH+i&%47#BbZ6J^bm z`n=2b0(zYy@{fvPE>$;lu5X1UmuKAraUTKYTh zghK!PMIIC(a^|cAbO$7B;(vm7*f+*5jV-i{jipQeWnH&oA4V>X6NqbeRdWe)Us&sy!WPUb z`DOKPVtB8o)gXc=1lr<^gfUB&wN23zZl}l*h-Qgm^l*fRm1*3L{Vq@Zqy-g%eiwg| zlbX~$rdee)woIc$Hrnvh1fEK;)t}P-=kY^_B9^1h$7Or62cbAyYh_ib`O}Ts;jFuN2I9d&>W&(7ejX=UKqg z6+=Vi+|-n4J%>Uoy@ZWRgQyh;WdWx`{z1Ef7t57~2X+4#BOw$Q9XHcXq=x=uj1 zG#bDlw+%7a2doD1Tj9oU$V`qR(>YF))1-h<lOSVUB05p^jCNsW4(qV3QIVUv=Se;a0e2r& zRQ)s3pgx$HqSLhyA8Q3?dCADJVna3AsonsWQ~Xl>c8W5E(WRQ{Eeeuldhb=t5DFGW zukUYCeY6t_=yKR#{gmrcBUV%6i!!_>)f9^V;tdifmSyyqlO5JVOHy-20M_}l&Ebhco2!lOZDtpzDRGku*h136%`qpn#sxt+C6;>36 z1^7Q8w0Zv(A_og%$cBPg`9LJ(wDz{;cxGj2I{}xA{PMEW=l6NL*@)>8l2yU@Y0tOx-FM?=E|uUo-CDkYlF(tF z$-LovJwyDDc`MT7nXfk*BeSy#(zo8T)-{#nw$>udA#tUO$AZi?bS(5C2$QYE;!+R| z$b;G&Kv!0@rn>TRQo?)YntjC4z=RQeZZHt4StWa5X1mn&2Ej zeDqk{lgjpMD!v{GKk#278w_Gd_qHF3*?e4K-}hU~757rZqxDI1(ruBT;3nmid$tu1 zpWdq+2t-42C@A;Kgp}6Lt5;S7aK~F%vuyWcF2e3&Il*fk*Uwfp0?~XI z_$uj>D&{)@=hi-zk`&tf0X|b)B)5yV;8Y;rSm4F1i#`1~s!dsuKf;HCR;NM?86A9% z4_@wR_?+O=KMOyfF;LoT9TOt$eVy}CvUEh4q0&O-e)8RU>UDDeETq7t?dr0h8zxN2 zNHKRZzRGhr=?WU1OC%SaPHW;&Pyz#~M`wZX+$?fztMVx;@(Gcn*S75Ly5eD9>(@h) zX~1Z4o84m}(Y$AO?j!iM!SEaZNrQLGh&UrRG|P^`9tI5T;}`LNV4+M<-HvlERQr0ec;ARP%A2;p z6iSX-2r}Us-`vr-Ib`Bjwi8(V-O-MB`&s;rX?G+}jR}aOwr!4aemxubrNYc!BxvAdzGpSs7R5Xuk3@*0WZcqRAD`y9JGc|pQ6wJ{2{X*R?9Z@Vi z)gi(W+Oze%3P_x}D|hx$BNkDPO<{FzfSc-Bsn>CswN8oZTOz4S!>@ZfFi?c=c&qr= z)b2w8*DBNA9V$(n#iq$vpC0qXiAlKH*2* zKF=bfsgOXAMFn+4SzABKlHv@x>WlvHmq2Kzj_14-2{L9#8(ihP4or^)q}&e60v(sI@Zc1^(+C0 zL_6}h?jYm4k(`lH`oT+(3wDE#tzxoINk&fZH#SU;r!eFKkMF`$S8Rn{UqE8IbC^` z9EP-yZuR1P9OI+c_N=HXSiUUox9v?9h5+%|FJ)gb_Y0t}_zj62`tpC0deav}YE{OIL; z?d-bGu>RIBTnPV-9~n(V48HEc7EbT|J(mvxJM~V5jJAt?9%oGlbnOPCD;bgLyRh{4 z@SK5uw}IJ=vZYjVgoQ_9I&&1ERHS_6TQBA^mC=2ZmWz*G7penrIeZPyr&x<{^q(F7 z8)a;m%WpQtP{%wp(ZDQ)K~}$F1Q0|vqxcE-uUhkWJT^P4g!%HemjWE!a=jdTh2wrE z6`Ho>bt+nT4PD5D-D*c|_)7IFc_q+=_gAC$-tpo^x=jeE?+QD3JNlt5c@SjM z)c8P5vC#8gDt@{@+UmFUwv`P(U9x}2F=`1Q5k>XYVA}rhu>J@Qg%=>2oU!OTUBg4F z1L3h=YSaQ(InqzIefNNE`R_uZ*9!#>3W=d-KUNYxN_0MKk-EQxBv9C(Uwmf-)n*2T zu@8s-suyBOGC5Bbc|X9a6BQ$q!)#In3!!tHs@SFHDQ4S zJ!9N2_uYPR@5>=4oE?*YOqgE zk9C6j{<5u@BgJn%^NH`lw@~_Egh4$<8MJTLaCQ{EK=ab@M9Qn7r9S{3TX{wNHYmcpx*v>It`wPW^z`2#DGIkQo4; zzDlb!H@;Kx`B8dkEQPjBUKglaBWbA^<`SLoh*9_b{X17n`q|2aLedw3s*X*$vu85R zvJ|;^5i+KvuC;pm3qfLA+-u40o;8~Eg*zmcRoAR**u7(YXipywIX=C|qNx6^*`_leA5dXTO+Yd>CTIP7~4-aHgy&4hZr#fs>WMyS9n7bjL zMD%z8*43`?4(!RE|2ILo{VlvDFg49}^_+|H(W$DyYDL$f-LOoQW{ZDKDZu0{JW6Gw zTWpS}x0)rZ4*BnPZyxV@jjIf)eVH_XDC^6)nfHK?=SgVR{0?hy$sP7G3-N&l+HC)c z#~2%R@|h>QyS}i-%N{HRF2f9xm&0yA=)g#!A7uPnP{tZ}Nlq{Jer(?KqKYPC_c`#< zYrKD*UE=oYI+WuVveU42>XQo&o7`{kKqsfn&w+hj9fR|YFQP`ag*sa<;=wKpK#Lf8 zxPPTfQwGYTRe^p9Z{dzP@KUcd z9md>=1~0j@YtIU>EI0~hQfpxNX5J-^mv%Iz)_pFf?->}j?=Vmm{j0sV; zBnftCJ=WK=p+Of49{O|B^A1~A2%+ni@J7?z=8_1@OqFn&LIyXo6xD1jd~D3RpvRbS zi>1w)(Z;aw35x^2?W_EUNut{IF{+v5EaSIDNv-vsJ!OItITg#yDzb?qu<`ghDkrC> zh1>kMEFB#kRd>Pe&cCc*Cci9Al!eL$Q-j4Sl;=SY)7bXojMg){PD!ZS(cu=O2_9eh zr$ZiAKpz3h!$*;dnGzKh(xj=~RlmnwD+KXoocy3Zvwjk`*MoSOiX&wYgWHAY%Oh5BT_rCBxksQ+_7M$4dW%s4lpTm?)txM9rHl<8|unF+u#9(P94gYi3F` z5|hJvi|YnlzXGMkYzp5?nasua;OJk!B8ZfD`6l0Lq*YgENL&Sv_h}YJj#>A3+p_5B zuDpDK^?toZ4*Y_gfQ+1+DN%OPdf$TLwqFm1F3oEkv>91mUJfr7xxS~v>^IKb!7M8~ z{E_l>IOFZB}{BO&$QwN+IGfUP)qwxISegl zFx3We5L8#Ue#dz`RflEvYh@+Y3zfIj0zMnlv`zZ~r&r%81psl}Q$}vYY$@RS<|fO3 zN3>!8dqF5V0TR##TO-Wo1mayXFI?Xehjc0g{yhzdZzKQZlX4aDd&w0%A zioD@nbEWV_PHs~=DTa;qRDw029)5nho_4*yg`>WVo4ys_hVxqky11BKJszgC;=Ks+ z>YiQd2{g8@34y4;jiOrY6?n(ZH+hWQ+uz?93-L5@R}>Q$50`~*@AK5u)Fl}4TaayK zn}5QOveMzddV1VPs!;9reQDmN(Q|p?QY`cMX&-;Xqp+|-)zo%VYa5$VA0yeg`V&-kz#7v`I&%TVzHXLripwxWG<4O(YF^+%D%%Yze7dJC*bHY!q zn!~~4pz=eJC>Np{A+d6IXIRyc-@GR-)pQuUe}5z{`8IHUe&jGHsP<^j_c>OZ6eYY4 zc<3H(C{{R&POWMgWXIOQ-nL-lu-SOM`$=p;MN8bx14d@UV&yk;y6L1lOhiP?BmKjO z?UlyHS+)$(nWiF{xVV9i;uzcfH{PD4>OFio%SejR<4aWM5I16t{LvdqH z5M!csEghf7(*TUwbvcX2C3iKR_tr=(*f-YM+;uxaklij z{ZC#B+$w3vquiRV@TYVyvgpLKh1&#$_>?< z70Z;lC$!et46`id_bnX+yjJ|2ewv;)+8sYOk+K;0<#Bg#9@pF@p_3Y6Y(gNPSG!Ym zGBsu87HeYn1O&}9t74H$DkFY1Xt8}!yWzb!&Gcno6(i7@t_s)fC4$xImqIpXT-2Rg zXrl)93Y_MJ$3yC|uFldoGv6b^G~TKQxu@5(!ip**&oiFYABfK?EhCMG*GlVJ*Uxrk z37tisU8f==i~_p+7e1jH$rKsE9uL2Gum->cT6JgtEJk!Z3p8dQIXge6C02t-lR(X~ zg{ET)?CWlbL~oL(>mS;W9E(|6bGM&BNM%Aoq>Bz6o0AS1tRE8ZUE9F9akf9IwJ{nq*FNTD(% zefbh9VXnhu^eIfAo~j50>gr)|m~kg#3K3xyVesf%30z4wx)rYL0AjbZzCJaY4(J7U zPWws?j@wHZ{A9CjI4(JEGM#VUkp_7Lf54`cuZmFxv4P~|p3iqjr8^|aLV-ICDZ}ii zt0N$+l7$U1;9ZAl#zfh4(jq>G2A%vE6EYKHoQ8-bIC{}W?CEb>Itxp;3h-LhxpsAZ zx#_y(T~cf;_ z{u+Dvi=5SUWfdu!nAAnjhGn2^yMV(d3spS`jNzg+HC>mXrc-SQ^rMiLm%cmAzDu4% zM>kP?Qp>8~6J~2=|HC$hZS&z$?^y)GdAs}C`VL|B1qk_po^(~?1?rOIUg)8)i<#~DiZf`Z)Ko%lY7zU(X=J&qxOf^R2i@4-)wC`)>*9C<@|TO`7| zxT*FwF->mCcef>D9=eJQ3s+r2wk2o#@AUA_VbsNnsv0m8RzZlhW&`QyO2#!I)}2Qt zcJivS-AQ(JzK)kH7s~Xp3TLx`5yO@$9%Vs~&HhMrF7h9#N?b_L_Mf#eZao z&1f|PHswH8SMzpvcU1}T**EaN5vx#0_o(`QJBqtVfwt9?Q!~-$0fo`wo2cq4_cPLt z^!E=a=4S$%z4&jUN9X1y$0vX7f8@R4crWrNUE>nl}^;*&pT2a`{V8gb`3aSpdYkBqJBu zRL3iki|2T9b=;Gw^7|YdPKDbu_+e`of|S?ehXJ!ohpC3LW#6g{C-b7G4(tg)bPV}D zouu5O9JoTaHA{CVH}^8=mZgXkKk^5U$M|z$UlRq*H=FHs8)!H+z+gSg!lyyZ)S6RVrIwK)jLSF(3t;l z-VgUCYr}Ec#-@yM?PTIiKRes~D^sg;H0o(*cXt)LpNU`1!1~9LDTLOE$3?LLK6Sm8 zb3j10Zm9xyo>KLP>#h8Etde*+njBlm=50*?sVU}oCVYZ8SMLvB z-xv$HS4cY%uoWKikT+W;b^CzJ4QI zCps|^CUjA=7IfuhxEJDj}nv8sjF^91M@2>=G3I&YIq zr2xcRN(8AeC8X#=Tw~;AKV2Tdb3BV2m^kY z`-1Pt0GnsywWd~*!CPT9ClrqH>PC8Ua!GRE8W7HB;2p3kTA*(5lsVr~Aaj%HTi4jG z!zcQ>`tK=pZ<$yLR9sB#G>45ZG}!C)S@Y%TlOy%)Rq5kzZm~$0c9p+RC0!?Hp))yU zQ4MUjG$1$k>T*_MCI3}X$QwH0bd+Rboh1oq#_jJkrm}Je;<}i;0$I&|}&pW0mLLN}U#~8w>Ln5t~YtdR=`4hoUDl4i#kx5}k-< z=ewg`J->|u1wCZB5t(Ag;x)MT zuzra59Uh2EwXkO1`?b~p8!yk)UP_N;o z){%L?ZDT&r`Z|%MMB&UcquVQEUA-NjMgbu9hjmw!VG<2z6K9`R;3BJjyy^al9UxkH z$}F@bqsz8a*>Uq%^&BRU!3O-+gt)p_gJSKz zXP+yqvic_v(8Wq8IMeO2b+p7~3VD6?`Q)SLqV^$i#D34k=r?SwaW;HjVxZHQgYVb; zfiO}QI_6>#Q$;4GDk}gwKYzq8E4a8<+b14PLB5|VT$>9IL(eW!jMH*eUYX@wjI-UV zTO229Ls>>=T)m!xaH0MKsjqd_REWn7!og`E zBw}XBfjk-gZuf1jEQUw@>dJ=1#(UZzlydhIi2A^zbt|PJ*F`i7Tl;3$hG}}!e9Fhm z(=%lt%J0Gq*MOA)gfnZm_d}f?%OL9AP*lx48^gNRFhI383kNJ?ny(wfn{V4!R%%qN zOXc%EQiAH0c5atgA7;^sxW|}2Z#hNEw7572zjAN5U-I_7<<{9_^1~kk>)yyVIUbF1 z-Oqi-E%u8CtZHO(1?uCvZ?#INDzmNtj2us;jUdQz9u_i)WUvlcALGAsmoviEGgU4< zhuOfS=ui3Twce#Ds?o0C0 z@`|#<6WeF9(6`jawvmzg2MbtMviDvs#0&;$DQXf^lTuJT`%X*1K@Y8>+_Wwlm`Umn zmuqrpNQRu8Vg-@Ch#)5U^c2b&F1i~yzU_O;b66-8_T~@c=1eb}`zm1=APmI|zanuW zh>aX#lwFedMi;BzV6^DVCII>me6m=^q`9FyebJ|MggV z#+?Eg2g5tvN>_e4b$xO&?|H-=KzT^<U1+G^+V{W(P ztl(ozhMD+?XZ*0kp*7cNc>m^$29e_c$CQj#o|US(eSL3B%aUp5hCqltkTw{CDgec1 zd6}w0yIn)`1<5u-Cr#RWBWI#|FU5`16BBjTL=y6X2N`I*gTAm`Yg5--vU-T6jT7624rac3CEa$~u z7n`+TIjzf%K+d`HMS%4m-};l_gA^Y2*CZh>2h`sSoxy|UPxeqDm9I-xVpspJlncz_ z%{NJMX>?1Nskt{HY18`DO?}j!UXnCzfB!J7u;s07B)T`D2VV}#bsFqzx>NZLOihy$ z>(nIh>f)&(2O@Yy*51KEQDHSXWf2K4_yPt1#-v%B;{rP58|J`Z)lgt0Z`Th@_-jS5+ z0y~|DJSQh74ULS%szV{uv&;I*k-KUe?oGSaWmkhkHZnAZQY>*0zuPa4ncu>sdA4J) zZO!$m;|xXl%Vc>jiU7J#sEqYp65ux_ns2)AyZaGxf#~w1OSu+Cr*3bT{5!^wi^$-I zCeK7Emo35^JUuUSb1``x;K9Q4E(0w~w>y|3NN%@Uf7deu>YY7H!W90tK_5W5Z8=** zb{QW7!-C<4N0omWsnV`xnX~^?v4`9XjR7vX-wbS@Fr{o~ccht|@0j zD}0dt%G=~%-*_NgfyCLM(w6R~+5c{@r$?mufZT#|2B@TNwFl>92nZ#fdJYZu*psw zl#btP;HPRKn7ZLOuPKi*E%mJs?U~`LzX(XxNEv)Rs6_pT^buVzS-4olfigoA*1Z0sU1e-`!hUm)*AMPJz+JciH4` zG8FUG-$%i5mieQzV&h=f?0NTdG^M+nRC+yppYOmA{l`YcLj>8! zAFxK}BHBO|vVCM5ebwZ-#f=Jc5$ARpAhJYf#tfJ>P z>FYOg1`RHz#g~yy+vKCo?;yDO1H*0hjz$I+5MJhV0mnq{bj0`@6i2*_=voyO26jTUA9mf< zE{ZW*Kn|pQ#fN?IhTccfgO12Q#qoB+1e4o}6+Pw1!U>tNSqi#ev_GsHBN(4omjiF? zHtC-uk;kGg5O9vqgNcI2{AZvgF|GkM`HUR@$|6k5i<#}dn&U15f zY4DIQ(vp}~8!W6V0$ayG&b3PJdGpBLsgG_zvzsJx71=ky*1TFK1r(lQ(;XK0?sPsk ztj?$AvL;7Bri}=>-o1Md9z{sSMt`7ex)>S z&#eES4C#@wB9&tH8TQ*5w{e5jY@W`W`T==XHU~zz=Bw+f9+CMGG-6)6!yntk$XPx! zOO7rWF`1^o+175lYB9MyFr?Q%^@5a?^yIp6o#+l5JCMQTsI;Llgf0nIe*nuZusp9m z!Qn`+3Ggi*__`u{u+LGU#3?a=s7#b;Y7)#;l#(wIE1m?Y_+=i>PL>e0ph05VDRvit5dm`Mb=fQNGXiqS51Hp*Rv)gdu?Pe$`{s zOQqMJ4>e=v9(HS5KyRGR&qjCuJcIe7LSy{z=3;~{qS*Y;ePV>~GP@oP^dMzR%bMGv zHM$F#NTG{F82V_y=;jwu>$R}`jnCn2CKhgAq6$*!=&LFoc z%qqvE<>Z`F4sn&!oc_eHV6IJSi!E=HbPCxKoVOl~>_+?Y3GcL_{G&bmzniLZq z!gqg^&N(c>Hy6|0msYtbzgYA!_+$P7=!&R+=-OK3#MvJ3D%lIf*nP^b#+o5Ge1B%n z;q3M*U4Fl0vp0{$XFADD!sdjCXh=IYDS7@q_`w6zyhUL{B+vHMqk*7Hq=;9RpPz6k z%Q^T3fz6*JZjMeehsGcm)jj;AW7>W2rJ`AwrZN zwR~w3)@hs_JV+ij6D+Q9KKbh&(=I^|x#e8+oZoYrOu@7?Yi&W_C5x66faXtui+Qq0 zg2kQa2vn4`F!|tn0LunXOel8<>*)!W*7Ch5T`8$wEekz_A0E3dT6;4Vrg~ik?}bjY z8vTlW{nz&1eV!83{%d=0K66nrQx(NJ-kS%}JAAlpba~pm^Op)(|7ynxQEI;(pA(!4 zn-CEg@&4d9S(&4e73EG=*AXhUxVEAUKyg1mTVtbuZraZDi@W*aW_rKsv-2zgC(nft z@_E9Gfo{)3N?*541&^v%U}{jn8Q8*NH`s*|tL%(8z-Enz_t|8zfRxlt+$;XG?)}_S z;2(5X73-DSN5(uiNBpae*S)90(iCp_9~3WReC-We4b?1}Cnh0j@a%iW`|7f@Cv=*4 zdFACUpw5=Jn)Up79pE+dTSv1x1jUhcdx>JaVAhAb_1GDb@!7Xnt!}|$6>uhPCGkb0 z4+64)=XW;NE;!%hH$=fusMHXv!R&WtSyIp86^D0h5|WavEczPd)uuo;$U-ayUN<9R z_PfVgjhsp!S*SWZ#Sf!pVnFvf+=h;CM@B}PB9pxrVb9y)cRM5qR^|Wp0vJ&QtYokE z7gR?!GqfI4?j;kK6?)F0l^zFO5h~A!EhuiH>yM>PU0yT)AF4d=63Q;kW4`2o? z3vQ?R+OSYSZfD4OaAP#>gXky;%|qOBX701BZXV1uqBQS10G@0@N%02m=zLp2i{E#k z=Nk}ETvEU1;-l>AxK_GQw?~r${AvP1hXk;|k9&?EO|kwJx^Dwt;)iv9`{ueS98(d+ z)_UYq%PRXDW=dV;P+)8n)_}D)JE>ZGSwFD85+j#FQ@WBM?j-e1cKvDhi;J1D<#IV% z)dO9ikXbO2{IKG{e<1>82hV5DKRP7|zfr-k5P^uhhQ1tL5^P_ygBW?RF8@by>cx~e zQUa!xMa=iAtlUWIM*H6s;gZ69e0`Ps2u}D- zz-1?hDBH*S!j1+$21X zS3WdfNuy8wnN%UVwX$y%_aa@ON7A)%;lSgfRa*8@kA>!tEiASkr|DY_q)VU`>Zrd}4oM7pQ5W{}@(1Npi?g6~>5!_TnpLhtT+ zaAf8+TecL)dE*fUuurO=5u9AOU)Or;ZzCs+^ysM-%#3DA9**AUo6Mf*?UlAKvoQW` zqvh9XwkN1DvGsNk=UfBuDWxEUQv9KN6I*hY*8!|GYwJBwm>-T#I$_$(zFSc0mg=Ow zy`9@c<0xK?IZ^UUQa1iS?7e4HRO{9*=-vj{A_7|^2!enTBxlJ=RB{GMrGVs|Gb$h% zL~<+<$)SWIN0B6U-_d>l++Kqr%VJg4o7Q}v`OIg| z75YirQsj2 zu5wBBZQIL6>+Wc=H$p*B75_~+I?=r!N+&whqxS`74yWb*xHd&nBKU%e{i%aC0-4@)X*?_2Qgw1BG}$WS*#ttJ-rCnqqoUA zq%aQUK_d%v-6%;QW%b#ogp8~Rb-_WcF-f6fHi+Gn`eDobPW0`J1O5jD?Iy+U-uhX6 z**brck(=|iQl%>gcMe)@rrQ{^y!+ycIc_B-kx4>K+7?HOAN8XNKO8^IMbhlYz$K$N z3|6{2m)HgFA=8xQ>{ZNlbmV^RK|^G-!g(ncon&-$yydWx$7$45i61|H9GDt@5}V6C z_}=?b0I}NR3L{!r|C#}Zxk_TEY07F8`}tIOz?2sO`2@DV2zv5s@^uiw-2G;NS+@&& zVF?1jTLH>5oW%L3Po>GIZ+ z<+rHr%F@GYZH&M3i^>gJCK-#$_&B2d3>BPV)Cumx_{d_FvO>sqiK? z`ZQPuok;2%fW=jTsvW*|OP2*r=z=b1HIV$jlF{Io*>_K$|0CDzh+SzS{(j%|fXK=^ zg@b_pI>=|O#WRHKlt17qFlFnva_w<@$r#{-8|k-@->Ul(zG5DBJ;%v}{@`d170;6L z#r(ZUxMumPmyKuFSx_h2S@u~Xr@J1=ifhbF!!>?}^D#H6VrUK>)+w(7`# z=K??Ydf6WQ9QOi6kclhpQh@4VmrKey$nX?n(9<>^TwK+1R2%ppuCEonQ5@DAy4w?_ zR>ZgFw67*x(Ze@mvk7m~nHLIc@|=o+e*Zguva<5L85E@8XVFXT1_^8@Pvb+!ZU4^_ zxty;oGb!X6K<~wVO=x@k$T%i%at-9>MGd)+BsUZ?eBJbmhd)qGC#PDBztD<3uo`hS zp{UW&w69FJhadYC0VyFT-CF``xc61H{oW8 zSN!3>);|}A7xt+pSSD1D9H=)OMVa27??14P4o8euu+;jCsdv)&IlieiVmWx+X&c@i=9t~`_fysNCVKAUFl1P!{-h1+UK-tC`MiPiVDnPi+*((QQ}F3TZt`TkC_`u-y>Tf@n6{1A197U%63sQA9%fQ0JHU5?6grtdIzlugBjP z(k&wC=mJ*PTZe$lyQLXqcaNsE>{y+UYv(vo^;LS98TAcxg1Q;HV~cLI`5TRc{Y{Ug zAUwhroBC+@rpFGo0_;VUQN|OpzFMm_iGEYE@H{S~7UB2TKQciAJhx3X`if6>3gIs}ku1AGww1O#khIaHkd8VM|64T?^%oL8zUm*9fM*L-=9JU(d zS{G{vLp*PCF0(FfKn&u02kM*%{ToMn2B?r?BvKt8u@+hG?vj_c)RoI3R?YhobvNrP zb?=uzpq8&z<-(BF8xmqhEq`*@>$si1vfgax6C+uTAGoZys?m(+r>gNJe^O^oUB#fJ&iyg28}zIh(aOQKXoUut{74GS=TW?Uaoy`;lk(H;nGf zwFBJ_=F3jy>i5_vTDwIUf4VaK?lH1T&=kIp(Y!ALMF~HuviT8HTWV+g=N_q1FG!xM z{yYk*43LrPrxwMAh{{Rmn$TZ%=EiS3V&VU$W2=`xWg}xY7KJJ0j_;*AlI;tr$KRV7 zJ?_#het-R&de&W=aFERteUn5jIlrlAkoIXtnpwDc3C0Pj8z;}Zv)%rgd1D2VPU>rI zz$i|#Q8qVvoTWf@^B~@`L>f0>1?Xr^h6lP#M&L!M1wrS7;>*Fh;^&PdV z&^bCb$^qrqu3R|{3Oxis;QcBqUdbtX_GV#A8%=wm=@F;GE-PNVrld4WN-0-D8@DJz zy;Sssx&?_qLjEJaXdGcnA|rdPVe^mUZ+=CbqqU~@NftZuQBvoloy0=ZW~*@T66hq# z5oG1GD>ph8iwy!fH?ZZjD>&^sv7+x`CP*}t6l=;!%{MxeFip+UlRPhb9#BNkM=1Kt7N=@PG-j|gfMI5Dh~fl^~|IfZ`$2Y z92fhMo%I!o8U3sig~+<-Mw%c4-?TAzY_WaY%w%SA{?@*~vP(+;m@BV_a{s>6W_LRB zCg)AIWvUTj8XCj6*mOMl+R@<=Yuc2RN4N=@;k*R}6^igfC5$ZQ29DSdB0jU(9`(3! z{!R&MYWi17Pz}gPZ_jDJSdEft@6V*OLjvyYZK@Y0CTKijkK z&OJ}iO)Z*Fs9(6Fd!!l{d-7IL(aGG6T7kL{x=D)tvm0gY9tmOJuW*{4yn;iB54gbm zY+s=2;1qJZt-V|RQ>GuAQx%ueU&gxe$Qeii8ZjgI|WLOCnNdpDgFH50w8rU^vIJSrEm*-cwSe|$&mR@YQ+nsfG`wm&2 zMB6L58lq;L1&w;A8}4Iaw7uPTUEl^`(+#{Qv?b*~@<%#<`0wSa=u`D19PPzde%}Nv zD}`#&i0z>!^kQqz&~y8Fyw^OZpsWZQ%?@gP*GS-);GSY1NU-OF;nZa5H&^h~kkMc(S zx0=^2Lv>a9CSM8Nt<&Og)I|uuYn+vWht{1lj!U;Wm80?@)_i_7>BF3>CaLY{y}d}y z((@Ad0<=l!$wmz@NuMPGjjvp}wU&ok_riLLUYv3<*^l=uU7TjUplgK`F>8iv}U9kFK<7rR?ih;Ej%o$yKjv)##vFwEcgd^T@%qxe+kmO6z` z1npJU7ZX!gqYk{M%v26eMry^*`w1j*pq!3ZCd*lBVq$9&deRwyf{KsDwfuE;e#Ttl zWN;>>>b#TIg~R7u;)vIn zkfqm|UaEOHT@}3Ajdu@QCk{RG8&f&k!gEVdNCD2)FVoy;*W9il``f!WXpOgPAlw(z z{wKa|R(B=W7rQUEA)>V_bD&i_Jh%TMG6BHb;q@?2Hvi-U4RddrK8a{(lb*_WJ#pb` zmsRZmQtFoY5i7$&*;$r~*&BMsz~jWe!(MM(Au=ynoE36-d8*=Xy=o63Se0Wg9HjE! z-q;Kx0~H=;tc(?Lo$vlJZ$S%(NQD0h-t!?O0nFKzM43g8vH-oT(!|1ZXp<54M0V{9 z!FBLq{3M_~?J1q61Lt@g6Bnn6uvW+bAISKh@qIvgwU$>r_p2khNWZDhRkBVGc5ap5 zc1Qg+_@?i=)&i+x7vR&cwBu!hm3n!0dy)y*gsG~~(IR5{Smn6xw(fc*&??plkf-_f zok5*nhgHR2bYX3$!%OH&?`3kkvGm@h{(iL1w1Mg$j+9DDoHyyLD#nPf7OB~QZD-~t z1Mps7Jtz=-C6F3KY!@x)SFO)MKDJqbvLV;0C7KEdhW0WzH9y7(15ym848b#DL8D&WsJ1mU{P#U~Eg{u2I{sO4}emB=_1v|oqf z@{PZ21OkZ}V?F(5moQ@l3`C*Q=A>0t6}nxE#&l4n-1(~sbi@&QY{SOfI&2Gp#4#)7 zBjiu4_`*)so6ohEyTZQI8f;n>tFtZ41&f&52vMXtu+ZcxSPI-*bmC5);7qKI&~x1s zxY``jX3TnbFGzA2P2kz^N3I4-JVEENU;ciHZ|wNIYmKNRzL0Jz@eeeCKKqteCQZi6 zF}MtqS(KjU76sONv|GZ)?hE8uvB7&jExtlNv%zO4 z&-u(5>J3|rQ0`fQkkbWrn#waC?kmvuzmQS0t{6kYnk-mV9tw-`dK==aF`I^W_&$uZ zL3#)UH0OH2?5+SoSI;S#}huHt6Cr4-&EOp+Qu+r1=<<%_%L z|A6gIsTn**aeV~sIz+B%U>7}J=Y*Z@Hiz8Sy`^;^Vi*P*#ireLJ+)=l(L1Q~;g;6K zT4d_c;)dz&H-j#b^vzeyR;9Z3MHANHlJ7G|Pk#`4io`0DhI3(6Ev1g&sE&|1jppUM1;QnsZP|*0B{x{gT%< z7aGAs5!KoGD7;p!B?31rU_$E~KX;nm{$RY(sb{+Dk-ouO2-41H0-gbT^Zi#Vk^7IB zd~84w+FrD=T^DYm0ZzhELyxOrCR)qAgPg z&Zm}o4-4wWcLPERYkPV=g5z7D?E&GRR#T^fEHX`()UOvu(@tszTWxo%ayPtU-CZ@;Z1W9Fv$iV)_Ko1x4 zJ(8tsm9|ly8l8MewK{cYr=fC;STgVjcWftH;1kiW$zY{c3tIqC{GIF39lT~$zQ5DQ zro6^IVaVA}f&=$AT)Gy&AoHK3mHa`VTAWZ9)z1;=P&2Xnp<~|p$=z74zxvm7E&25q zr2nXm7b`o{nKKQ~d{)Wg8fCzU0tJyXEdA3sWYp?!2P3U2*1F9~8%0=njwj?E#*FS^ z-jjt7&F@&=r;?gY5`8Y);9g9=J-Gj)*NydUtV!t*y22-_zZHO&A+UH{j`SsLX=ji5 zB(R;i3>@8yZ|W1??vyqj(o=+`C@zgIoK9_ejW@W-6>@84ezdJC)GL0H-ZfL4UE52* zA{2eK=qZ=im~g>b-{Js|=--lqRzq<25u`x2e8q%oMeniAN`m%gJ`Lokfgsjxe8!nJ z#^v#pjljZpBR%FNhbKYAJ1vuYG-B6kd}I%fC1+o-lWLGgQ#-DUt%I!8nFic#|LP}C z^4C7{I3#K1=ubO$L&@3F1MUYc*WY@b%dESpYWucPKB43@f+u#G*(wP z4R44U#m-f4;<@3IL;G!PjHv{6sjuFMF{*7Nvn%0NB8%n!U?tW>0;iSi(ZTx0 zvl!wpdX@*&>(qWmQH(joTsPzAN%GT_k4{(2Z_K2 zLYFvly0^Droef1+WD0-b$v`dCAJUVBSx9L!K6sxnn;BadiRFIGjWy8U^bcyi38r&T@n`pf>H9n9A7NX@j%yYtrmS2)G&H)%DO04p z=m@TG2ZOBe9)~_=Sr_2h#*Jvh)yw-9V-j0T+PSJ(V%WrBZ*NymW7+)ojyA#Pnv*+@ z(S5W=jVCjh0YlptjOibd(jO#CQL*=L!8rZD`d9DR9%gD6{zdoY4sXF4t*J=1I(kvJ z+D~8q32)uP!F3TGf%A!ABjv~aafZfK+ z_av)#vCtkm?M=*+iip+NEA2#OWib@Z9C@5;j5zpcYeO%P-PjFu^nWy^&* zoaL;G6C#RPnab5JWT#FBTO_DL-DVu4@yEkC?=xGtj&~gz?yO)2_gro782hnhB);kT zwperbm6un)nftZV+3ziV1w&!fJVn}toxP#9x5VA&7x(dggpb%&iCOv0wx2qhl$-9p z@;wN0)5+J&(_*chcSO`4rmwrEiVZC{pCA61Lkv$%cNZlB+_Xi>-UbY3sEvRYOVtg0 zYXK@uU4|&eK%j*?xrc`Y{2y)2>0YUWH*K$x##=QH&utn5Mo*?p&sNVXzS~^5BNDUJ zNnS<^CH`Rs@6^mw=g3tL_O;oorcq{now&Hul3p=H-lm?}Z{gzooG8O@PoelARYr5G@x4 zcKd31#r~BEV!-u5Ca#Ix6dY_s7_wT-sBlQ2D8tcr+be)EHeZiDQ9j67=kP=-QkKEps2i41=}A{V^(qVX z^N1(?OY^c{yoct+Ze;YE#HnMtto5r`xZK+5W;3x5uUsL|84-Ugl}mVPAK1KIl51-e zA};Uou6a==IVmkR68juyO0{Hgxc{wtnzFl#aaSQGSY#2v@b7P=E?-W-Ba%Sc=@iCC z9_WzkQG*Lf=y8DN`(FoM>`(<*qpx58bpXjJ=zweVT{m{`C|x9+mWz?b_hc^|7x(z? zEy;Z2Rss4}gkkPiY6rw0hCk?WZv7PpwH|Uq@S8&&jvBlS6L5*+gK5ScTyFns&x$}x zW~?y9P(SW{ems}I!f_7KmG3f_E;8=4{Sxwn6Bn{P;eToY{_EBMug_i;B`Y#+_~TkK zAAqY!gF8%u!5P!0? z+%_ChVFu5~l~BC$$_M9;;Eq@8x}3G(kp<6ELJ&9Ucvhur3~cJUS6$>xkeEj(MV|C9 zce~c(l=dTB4T~#W?^SK^8FR@3GD9Xensa~y5i+o zVxyLwDbG@z30OJWkcSQ%tFT7TVQcxhqhQ7yvOr?AJtVIC`k5g?xS(NJt~yJD@0qR2 z`03lC2|tgyEwd~=mc;J1$@Bv_?Gye6=D@rmD?>@{L{`$U^ieA~N{p1ZK4+)layTL$ zkWvkH9Qj+6rsc_ox81{+{j>RJ7N@_TSU*(l)e%aIv;NZ2VNU+Q9JkLm9Oo;?mBOjp8aitiG>}Kzf*ckw24tUoU&IVy>H} zU?bz@>{R2o-6(THd-IU6k~!xuyyi%(9H$P`kCe_G`^5A7-Av&4{QcqKwF5o+#*s=c zXkS_xM&^@HIO(kq?v>+G+yDx%Zx(f03@tigPwD8u)eV&{a@K{e4&N4Wpqs3apE`q7 zGESjQk&$kToy=)#@h?OE8Xv|~#pW`G?IV1RVEYHltOnl>lUuDNqZUXEx;3tEzxd7IR++JSaiF z0s$QkH+x#?GtEC<9Oyk<Nt$lmPFh4qQDqFJP5=>|e@tMqN6^%kxz4%dmp z4pgkMS&xjpI$Qll_wf5&PN0KjkNJcu5$ zDo#N>totC>A4-|4QHr{ckj>KUA}8=HR@0|~3FdiS;aaAK21V82l)BMgP>f{Zb^h04^ zk8idMrP;=;_-Gb+s{H3JW@d+a<3B81Fx#)Z6-In4-RxMXlLuf7-T`C;HHn-w6=FVi zeve4)+QbS*BuG*x0eZQ^R+-H!8@15PvZ=jLJminIRPIsiOY_)djAco-*lH1>zi~8$ zWD3~9)l>xx*ay`j|1nYDJF(%*AB@kR>M|N5%ovhKVI$}Q&b;agnkx6j!dvl5uHOFeg)ID_y{n-E;>)qs zWjY7&x6tQ!#SW(vMVS#{%a60QWMuZ8`E=MRNv6cPmo*39%_?-j6Dzo(^7qS?20bYA zte!??WW4AIBCfCkq|&uNNdhvH1ni#{>rpzsAatym0N9Q1Ub0PDQlB21Ky(LM%~vvM z-@5DdLBWu`IJ7t}ToS)(ZLh!&wCwB{nG5mHEEeK#c;K9@SDYZf34#EsPjVJ{ylzA< zh$ks--Gq5v)$_YAF);+wW?QrAQ|GqNExbl4{H0$*hzV+`k^n=n@ajXk3Ec~c;fJMc16i2o@7({ zQvbQ{Q+Mx_qChWF5laWx;mKbOsMC{TCKZ~_mh2Zk6(dHRxGE|es6;GYT&NZW+#L~( zpBr}5K9C_6Gh`4Zcjzl3I$`_BSQ4L3ds;kJkeccl&xA*D3Jb{^DmND=ffh4Q(9+F&e{Zr!O+snRGeG z34#u}_9dTC7ta^4lc3X%dE!M^?j3YdjeYcKR#lYcvUR@h(#wj;h&Byx^YW}MI-H$Q zxiOEcZVb4(zuDVveCjiA^g9h7UGU)|9V&s|zr75s?KG|5*&0<%tEZ1nZPrkHT5$iY zP1B*ct;@qy#1uM(BT;{9+r#H}uJPZDbb;%vX8ihr#94NC%fNBy1el*x+~a z)i$(aUcYuHrqeV^Iv0?*nC+cEg$!wut=^~?->$4NU}f69PM==9U8Fre5E(sA2Ji;d zAB#RxpW2J>e&lI#(%z7sKGf?LZu@UcN;F@1#ldV=gX5SLL%MP~;R}HQ1|gDZG0{;= zfuJEP*C&Qfes5QkWeSHd?|RogH~-6WgaUAL=r(fXHu7d1`jl&JFUYiz%$Ca)>o}j% z+b%w2)wZfBJnpYmuvmg!t6!IJS6X(Ad$9a;U0&-~JqgNNBfocn7lFntaq=`dpMne45+i--W3-tW<*0GgOQMNM#dN>Ty-BpE z^;p#MDzfj^sF^g5F>|tdhOfqP7Z|6?U%nHrcJu=Ju#uZ5>#96O0cY%#VKt#`itN8QJD0>f4hPxCw%=N)&FO2P8 zKOzqKIj^lI3JO#LB5Q1X`K6(M=eThncWNP*++p~`fP^L zbG=e?VzixDY^w8Kw-{YG<`jxJS2jeO18r5|?gSc7X@C(lc0s>%oSyo|WptwH(2D_2S$N|wej zla+~2CQT2?qu0i^h_aDPDQQ3ZTg>W;#u5wye6KgP8<##2&3`H) zXu(GAMamXy4^4{*`ZJK)@v|cP!reJGj2oSV7_B0t^{?^*i13&RG6zCKLsoky45?Hw z&ODbbzI(-;^omP|I^ZE+_;hP>8<|O(9OQ29H|s>Ky9KwrCyac4?D{zY!4G1h~RU6!#jWZ{YQqy*RWq#&-0klVSe)EVU{8|7T5*@mHVht~NW zGnKJ94T%51VvUCQ@v~kw`k1LQH=zRUhJ8!X7Q1Gd@hc@O)Eh#p5>0 zm|Nnf+vE5$#O8M1vS1TWb5FL1ww*8i zc#lhe9daPQX#OJ`vNBm1Z4=&ZDC^-Oh^&O__j`G-GO)i-_isdn9X8gq+9o4%Df zoK^Z*>3P!kuU3|J%4chTEC;VtI+(e2j&nCWt6e z5{Mn7r30pPndtiIYayk~Av5G{>_)LWoG<4S9ugTYP{%Msgh%72U97$C7Tl9$iso$? zfi<50=J z>o3VWnem(6byOfgIb&5yxn z{c66>^RDB^M=DJx*~6RwMYpNXu8u&c?+=L(y#se@Oy|SJW^LGrdS}2vRq<_KIVL$i z^ucp+eYpO`gjWM_s{j#6>wn<+(*236vh=TZo3-;$3?i0uAYbaFRUa$1$S-Q5H1EB& z`Y$+o*Cb4K`9pQhbe+UrEFN6KxBLVfU3II-&z0G3$PP|>pWhTO4_<@g1rvmX=FYJT z2RD=$H7fKPAD*a9<3h({2u8JhpY6WI-R(TT@HX}QxUOvYhrg}w??uXP)*rq!vj5g^ zvoGA218|2?4O5`U`Fi&*3+HCM&?nBj4E+9W6aP*^ddLB@Fw=t56HGD%XX*Z=q-8t% z;r+ns>V^LbW`!xlnNkrJLA!T$-yZlGQ%@KYYk1^#vyHzl;kcEVo1d`{-x4gjcqZ73 z<6p}f`=t7W5pPR{@sP9JLWlYiW4%i2SHJcBI$XDhrfThFea$ye;n*SxQT*+EC9kpZ zaQBOXJ5U?qtW!H>CdFFU`i3z+H_(a_QK`5FOqin1$ACW;piwhFq4hoU~4bR?|n(-u;UlvG>AVNC`nhyYa z?EB)81t->m)4M+#H!vKDj?X=CQ9#`BKSL?=z56oRLIU4F{UP`TZ3V>iMWexWFE9UorCv~@KnlMUl4s!ZOxEIO=BRcFTVOTq9-%w@_XQsI z;>o)}kTH-Q&hZnUP>9sKED@o-hBR7kNOG^%|J~T{-rFK0Ezc5t#SAeVYSk-c5x=(a z#xCF^!IB~Vr>Wsm|9m`}tW`Vuv;%5HE_vDvo(06wZ9ynOiZ%C#CopT1{n;gf#kxy! zjQ^^-bPKM$RXZMc&b*kXop43mdYjN0IyiXS#-+|HUWRmBZ% z&l_ZOVzJ`=n{NC*BkG2Z81WOF(@GbhYXw5Gi!-QL-HK%7#B)h*)bM5#w)vDO=PF~Y zCFwZMp9fy5!^TqA#qP-ztzVsY|8-AV*}Gvc?u4Cb>qZv1wV6>)8vP!UUsdWG%ti&9 zrmTJQC!h~l-m!l&#MOZxBz}qizRaN$CrZH`uh##I1pWWd{@09#E}rN1+}y&pyc0`N z$)=GD$?r+waw`81rW*I^_fg6`?83_F40777ZU{vFryG0*kXQYW0TIWSY}DXGE%B8B z#CC8;ZQa+*(aE~$D%ASz;KE#0fZN0yk5VN=B*p&~0zm%q{YQCZljTp9q-d4=B>%mo zWa7D3{^&2i6Lf&83oRdHEEytk0hg#>q5u8iGi6kKq}aNqGpMNNz9)U7;MZN3Qm4IU zu>UtnP^eIgdSeP3CL=5FN@kAstn;6J0x`5?MJE>-5cL7acRbtAsy%4J3Ef6-lM_3R zL{AKY6DoS%wtbTkFtFi^?icV20aE;KiGb!%s&3k|MaX$)xH)81N8jk=`237^Es-zi z*lRTCA9qkZw<@!ni_0J`*bFbgh@Z`Foz4heoJB_JKzvVhTJ8;4n=JwOoBo1k-Tt~{ z>2v1Cfye#P=SKR>l}%MOr6;oZuPcOdjCrL{{J%R`!WBNgfyOr5Rh@N1E{Y6TJnNq& zYH%kj`uQIZZ>ZQ!`dO6fieQEA9d))ey(!fN96wY7gOoT~1_4!xi$k4vulOh;blDQl z&Wejl+)ah=`X5XJNQLz>ITJyd+Boka&Zo?1u}ZmnzKKBcf;(u#=x&u??4u##XP87I z`1i?7mF>h%BR{;SI=*2qZ?9}|i%FS+d9#0}ABTXE-MYHbh z@XM4W5Mbh7aAEm7z42m3E<9WiVFou)FVqqgXhhpv1AUhiJJ3Dgjt3vea2|7dw4VcZ z_^Ql~1p(1*H(CiyVU>Lb;T!Vb7k&SB>t0y#gpb3~RBnu_roMWywvnj+{&D|u8$GYk z?-ew|bB~#H&+DrH^47WB7*xbtU!@UKcub{8azo^W;j zj{97Rn0T70E0Btbl{i03->8_4&oy`7^t-V4JtP_n{bV@XZ zeEGe~WQ$u3_EIHJnlZfQNBa1_1^N6`oVT;@quocp4{cdbA4Wh#O( zFi)E`7;l{1ka{L8DaB~rpc=>t4ztoYqLHg{RU6797GWPUDL0pwgLfN*2Aqs4;h&Xt zb``;-FygmO6?W#gy<#@5s#4yJj#@)0K28^3=j?Q#B!)i^K)|I1I67Vi5kJ5XhI|XT3eomR9K5u1td~q zc66br%{ZQO_z_VXV4-VBtBB`Ls+xv5p~;53c=Wpiz(bCcZv&x`6Q3Msg7%TtA-Azo zK53pO7S49ehtFp2=i=J#jh!;6Ia9?akr-8OJ?b@LqMSzi7%{Lfzcqix;2P8i;=m^F zRg2QQ7c0lscPn2cDNmSt9hp}iZDFIgE>trZt=Pz{A5i>tjUl@6)RR_5DR+(vJ>5AD zv=JEIPe-fGEq#H+)`fi2^ z>t+vh@b)neGvS2rX%fQw$CdBFQL06THcq{?A!&7E?wmB_H($=D8rB?$C5PM% zuhHD)N>muPz1>zU`$fa{#Y>fPjVizy7rH8DCBu_@7=%1GU`s$%w-`Fl9JZfPV_@gG zVrSbZF8V428qO_L@xXq4v)mU&`r8@(4)&MG`_ zJ=cZyVk0y>^@#AP8n+fDty?f;^X!Nm1nYt=Q9+=t#m+sg^8IB0JuKjF-KMb`Z z!5YU!*<3f`2wMKB1wc~o9+Jw$3zkbOawd;%Ve+1G{aX}GJmRF%Ys`%6$*j7la^ipu zACUU;)WFhVbz(+|-3)=>^lY6%N60JnY{pFLdT*OKY#G_B9$*YPR7#Wj7S*p-5uV?a}f)G7pIvN})cw9s6H+yT~yF1W?A zR2O|ckK>dZl=;~Xrt(uC zgY8_5+tGxYj~5L%CM)FAm1PcY7;r>SZsuu*wHea^`r9^j_alKEV?(3r{0eiT(xbl( zYo#e+Cm9)P;?QAnc80C6xREN(L$82h>vc0;nrYhxk@`Pg9`}w6&Xk&dO%P7^W}}?& zRW=HC<$l5fq^y}%^v(2MmHf{ZUO$+b& zKuPY`Ja>1KD+5}8R=L50ZuAZHwmxAXrDV*T>xMbXNoF!(bp$`EI{86l-IE03V zAZ{J+nT$YOrgK+XBhm!rO?Z+&-5;_1_gHCOF&tbPEt{(|EoxmSFK7gfS?TFn4{acz z`_jMK60lL+=r^3OILMitV)V<7=?V>nGA4IVyYB@K!gCJ8B*U$9m+GUllg*dGd^G3gY`0d zKA^ZO$#*Xjx%@0}kF?Z)gRm@zMAnLhGz!tn-Z@Sd?&@Tv+<2{kc=jj2Z!dkZ zicN^l{Gic=w8PxTr;;JbC^XQP9n8j6B3#yfWnn6got4fAfA2IzRw9do zs3b!G2-=QS=jH@)I!)x_{G zL<*%zDy>IBz%e+Pm|c_1{EJSy@gwWP00^oXdH3~lqE%8NM{>It6U=*n4lY)SZ0}`w z+tQAQSb<82c(9&`=;){5cV9dvXkf(jB-8c+(F+YV21k3Z{s$F(MKbH@yKjoEDF|7f zQV48B3!>^+BWAbNwGqq-^+i=yC<8E`T3=jzPZ&^Zxv?7_kBNjxq|G@P($8)x^%*1z9;z7i;nRf$rOjzC zUe^~-WKSdj`b)j`^nTxKln`WfhSiG!h|-Jmr%wcgnySXFD!y(R=a>tmlEWsw_Atz; zmVJ#P)7F4tQxk2QC-ILM@uBU@)4@m=bvLv}Ws6(A5T4iNX*|jprcQT;95q_6-eU0T zFtkCSCGN756@IA~G2}}{i2FZJ7(QM$SNU+>U>QhedMV(6RlM8v&`UR3#J_dd&`oIH z>7E3^y|$yeDb)1XSvoF*MTjIUoq;+7ptB0SV%wTd(@I@7yXcWw&0fN`f&AlswMpaB z$6>oOv*supo>=8pqB{5CBq$_i^?SH^bUEL~%q#R#v5F$&-j51>YkTMsh7BYkoW>tt zYVu=0aV!IjHl|B;DZEc_2UyUt+Ieg}w*81EJt-l;UktdG^FwZSQ(oK8RJM}(viCZ8 zxy3v@&Z%!>y;JoBpPtM&4OuyR*9Z9&MuzTS;+7{QLj+;aC6(SA+0`m8@;u5^o5I8q zT^h5I2k;v+v1uIHMzDtSP3tp~yH6SeKk}jkQzOay8m$iIM~w{Y-NtG0SvjiK2v;~nFhlf@}R?MO-{_HqM zYfrFT=!KU3Q~$^m&V{noK$MNTsQA{7D&ms>zg2^gJ_O5=`U3E|#d-as>!?T3(oAo% zH#REqD96VOLEIz-VHVutitd#D)Zfwlf+M*%(oBqspK^}dS$=RBhNavXGVmQIL_zvcEmVAGf86${l$H z7}-0x+104C(5~CBA-RXBK1v{LZ5#V{Zwo=y1QHJm{4REa(j3KXd4coLcTp)gz1A0K zO3{xl@gDQ$B8|=U#Wd0^s?#Nl-ikyRT#J;IlHeL1Ua~&9Q#!fH7GeW~RUent~t~`_LiKSXQ;ufD)jWpvJlSZ|2Esc)O*Wai|RE7@|6?ZG-2sGwMT{u=2UGWo5t4X z9@eQtRx(k7I>p*^!FAe&hKCH5dhB4TqXuiHQ`QfHyMRJj{XYa0(p2Un^E*OmVK0)( zKlWNxmLFJf<>lIT&F-ZlWJj7qv9El#l+Dq%V8v}Oz0xF0k-cv!IJm?bQpWK4y9GBl z){74JQ%@YU3Kx6txOaM}}#dDp?T%m}v1S#_(VrrfE|c=I`x5|cQELeNAz z#$9aa)49>c;cRoIKv?ADEa^#vUlh=t&mIJs3Lbi$8D2HYZHd3b^ghC=hRvQdd}~TW z+d2_e54Ub?G9N7LJ&AJe*dh<;Q1`EJ*(^0ZeZD!LL>mN$xX)LZo+iLGopT*0WQK;lSQw8{wqbf>Q`M)=4ZSuLNv<|6zioGZL-%z_WhXlbWVRY$H^bE7%F zSQQR+Mq;pM5%#tqB2OV%dSqqqZs>-8^BTjuSA)w0os|+XEBm1J#6LWJx;TQxHi6Eg z#;8{lm~fjQ%|b12PrVjY-Q=bfm7i|G(BoXu&6@?9-G+%x;kUg#`HB9UrsK*RduHC` z!-a@KeA`dh-f$4E0#Rh!V()u$#SGF$@JDUHTOHSAIT;!@lwP|;=4_#_^wn?nBU9?Ure#I8uLLa-iiutpw zbHAq15z;Gfk3v<8QkRnb*OC-{qs&tNp;&>`?vxVK|7{s$TsbcU?@glomMaZ1xVz%f z9TK;RdXJ~xP(jV)Y^y4!n&yO|7cUxU=pYj3Z4*D_9}vgraE8sPEhXgSkPlCZ_Z^PP zSP%~(W0hUSzDS0Y1r;?eo z{sC1lfyNxi zv!MaCv&jafNdm|A(*7K0M2GtGx2ic<}#1p z;EOE34#R;IiIZnOfQktr;4Oy*In~VEp$nc|b;AY{2N}p#Ca9A}x2&$G=n|HuHDp|m z-2bxSSE8VTWOk>N-z8L|=ps$&cO3{D++CsUo|7(xI`*|g*Z>ZGVtFMKx*&&kF- z8O7r0Okfe>Q6D2K5~-{?0hE0}5py+ApKUnEx(cWFiXqd2p`IKleT7anMy5^3Ps1%; z*oN;Y^$17*AMCwnR8w0QHmb*CI~GJhnt-D8Cer&+LT}PLQF@Q`PE@2f={0cZ(xnCn zMWlD>kVry@5JIGdp4_eHeZTMCUw7O)#w|a-JpyA7#wL5Owbz<+u4g^-nO**swslgg zpXE7jom7Qu7U?(!B##7>-pK-Gz-A3|l{jqmz^@K{y(+I|=l!&14Yn*S`TH5`t+&X) zKdM&fX|hJbTDMXYBQJoZ1t}AAoQc)@F;TR#6d6CLBPjPbUmIdJ|5m!=bQI|i#JqF& z%9%NF;Y{mlVnQZ?K=06zW^d(1v9oPe8vlDpwjasPJd|$R3fVPz9y}bs%v2(FkjWD2 zAtxtCU8JKO%<89CEox>6z$4;j0GhomP|lF<_koHY#mkc;26M{3ZuabIUl_)%sv?_wN=wO-2+?_0?Q^EB{%yQy=|gP@PeL!k?>Z#$#Ny^%9!IDB^IUV*Mm@WKV@ zl_cythE0j8Jjea@?NIfiwXZtJm-=EUS;c1jUU!sQTaKz9@NbHu&~NaW@)7TSEBlyX+tI= zu7@J$f+ZtdO{zR2DEPw#DEm3I!)t8tRpBT4qZF){z0)d@4L53?}- z*;~K{0&zim6qwfG`DWbxo;tEm=5?Rvs!2WMhdz3~r5PHOdlhy8ND&B@A9mkxg275J zU!pT**{b#{NK$?Ha2sMX8EM9zG4wR_-ialDTI@#cu9;}Y5WC0xF$t|$9Wv{$nL)o$ zaC%_(5_t};!Jbs%aur=)kQ(QUOI#e~z_<-Fp>Npj;14!|gwPd1`vzti9nR-|gHLYn zp1vggJ;!n*{F|UlURM#os6Byvip@3OFZg~$na{O)`jEl~R6m~lEy3Z!9iSl%ymU*J zr%v%&&{>Whlz+`@#(D5j)$uYgfqPpnO;P>Bk#knoMV7j{q-M z-C(_H1iTW!j1)rLghV{>7xg!oduoL9eST~@TEyX4{?h1&-c=$mMF9SdB9tUD!S3>% zqcKQJ#-V%B?uB^=hG$w8mHqf-#4DiQH;_NDf~~E8&@BBN>&wnGON!A{@1yX(mi?g* zz>vW}JVitFnW=Al#@{0(29+oMQv#6$@^-_%C0&L#2}0#Zo!L&#m+YMzwX56wF6upK zo6Ud>IbbDoScE_za4ty?=`ptKFwO_=08SffIihIgvC`1Eceob+Ywj*3o>z)X3MP#e zAxKEbTf&K1iy6NZY!qM#y_9_-CL$q1px?H{A`eYr1$h4-7Gn(tF*X?QErGBAFYl4~ z54(mQ!Ebu3YaZ@E9QJjZsedJ!Z+_+M0+M`BuTTOgjK=6t1|ayohCGzov$%L6?g`A4 zGI)yX$8Slbzq_49eVB4iUPGN&MR`0V<4xPh1MyA`ne7EN!O3u7dk$Dky7n!-l>rFP zZ5Bcq>U$SC5gl2`X_kmT<*9&`o>7155I_*EGJouI?St-QWw8vRL<}FvvNJl`z^{6x z)BX{i3nND9EKmrr`M|_Oe_O6>KB2ilH^3(Vm4mmwI_NbD&<^xIcS=~r)7;Tw|iR1-Db)6AWP=4*Q(~9m)?2Y%A3PxsE?C6-}i;}9S6R@wQ;qJ&S7wP z&=6hyXSvQpwD;!Q3{NN#*E6stvNe zq0tw4V=9+deZ1059uvuaCYAi?)Q1o??`AU~{PBwyUqsXSIrkWLJOiGYiw^wRiUq9XZrw_~dp(BSOR+N3l zF*4S$*luFWlY}!i_bSu+W@m(5`oJ|=;n*O_<)?0`lL>%%@v@An7W6Sh;yOCVmHhYp zwdXm!L!3M^=_#;kGx-!%ru3M4I9yna=_aq4vG&6`rIji9L@!Bm^$HQiiuY17%sz|5 zZVA1dMPeEd2%*&KG;>P_n)w|P#sEjrG}T-FWD61dTweIf;{KWW{#U`EHJj@fHvB)aUwtkt`UdVA7uhEI^rAjDOHdzAByK zp02sO?bxtxosbXh&@5p2@|7#5yG{5dd0BC1kRt6xTkti=QiXxY#U9DKY-R&A@0~FgR%W50C3a7a1KxKTn1mFge2J zrn6Ip9M%#Q-~(}Vak%jiMm<;mg2{uhqcNg!IM}FJqKjUX^basKVbH9A*W?vf9K80? zGVC}kc`05H7dMmtZDEkhUf3i>6~EgQ{g)4m42&{^=(QOx(~}~HKP}uU5bGMR_STw7 zUm;%ilL6%2VM?>_X0dk$V>fo2czB}1t=Pg}n2BMqe-Y5l7TBx;ozfI7PuW~}YsF9M zI;O*+(iA7=Z;-mhuZ?jla_7m^_`|UsmgAHFrGTL-CL970kKN(l z`ll!JMWU9m`I}WF{W;>F7Z*W54bHzE02zLR(y2C?h06r#>#oxdWXIf7?4?WD@_OC@ zr}pqSZ>yR~PON)dLr`XX*vEeRs2SV=^O#$-7VN|P!xEj+>`}C?`q^`%5J_A0ifP=T z_iaBvLgx%K6(h^H&B|xg!-v}lT-f1}_)B$d+e(93@AH^5yD*8~Ezg5%5;nvCAn6?d zl?_&Nemlbr6%J1!hJpskHWN0@G>@+@nkH>|4P@a2%$d!z6z=>2t7(SH$#D-Pbh|U{ zHkzv{QABne11~!GdD-UlOZuFz62#{OlT2Iu=usz z|I&MBgllGI#!*Wd_S_3y8jZ&wWWL~}E@dO)ru2nHry}}a&$eAXUHX0X`Dhy;k@(Jo zN#-}fFGlj0I%>AV`?`Sm?+gsTw$R@?9{h(|^Y>iduiEIpj&J`>!mLkSm01Wvs{JaXpm0XqK}(wT z^}ROt9T4G8aXcE0^=iGu^1+u9DN^5(X9TpKvpr2+zSFK||N?J)6-@~UPb zesplH62||c`CjelfbItN(BH~>^;wvusHvsDqUIuVe4jk0_j3Tx0%c}yDQzAXf8M-# zG6^aqDIY3_TN;!HEiFguPCP&K52-DwD+pRBAv|D0O64E^=AVQu%+p2n^vnYZp%I&L z!P^JXa5hegI}K6Ce*(G-ly4X&UMRN1me~1aJFTN+=L-@NdWBHgN!$Vg7UUiVn*h>> zTT_lY_+zjt{~Fo1*iAU9JO5}RYHIN=i!Q7)`{t9Z3~mn(#VMkapaxt z$r)rlerPNiFX54PKPogbBH{+6nK?vSb9n_GBD)&E|-?%l5lUCB`}xrl(tdJu zvcGW(ox&Y*aSh0kPqcQLH>$9c8+X)bO720_7?Kibno0_r{%I(3D8$`)KawNO4{_JA z%+#!g0POHmZWR1z4y5O?kt@I&di|(gSS)+{24Lu((Xj%>&3Fc*2=Pnl3g*A=E zwXNIVKb~Wa=lvc;SJu?HZp3Lch^#%X$KSqD3j=PXtf>h%p^}s|adavdg_tqA#|qi< zO<`|O>le9H@|`5vT7O;y7yp+FV7=NRQ#BaX6>#K?-P*pf^ltFZ_Zg)0BDKRHpB}XE z^zFb4@~AGxD=IR{P63p;g)2K3&AG6JI$ zzeMcjxu-5gv%;=E!XPCpD_a9Jq-pbS4UPGCJs+Bru6xNiISp#H+Nnm}<n3B^D`!0Nh+T7-4yk@WHN&X>I2Xp3H+tALG8(Ms zZ5U#EJ2(U-T)uTU#I~pgj7tNXK1bS`X}E9yFMEpqMDK8(~(@-382pk~B;9X&I9wTze~e z2(5>K_FSvyp|lRdnWrs|(bGF}&Z>^Q6DmWaK1NI`{RU`qnh)-zJ_tBCK{=j8Vn1$QjQA(e?(g1Mq98zxAfy zGE)X$Y%y`DbyHKZuU?RjI_}^X6|M9-$n{&7by|^IgHg51z$bHS9QzNox)g^-Mp58b zqJNuB_^n%aw}Fyav@{#N2vp{cB`~Ec;nhIm9r(d~0yRTuM|wnI<{{0DaEOPz426 zFRK=E((@;=CMFC=_<0jU-O`8qnYa$-Z+VR_7cW6mj)yTTA+L)JGiz%cy7~qcpZP4@ zknpsJsEm^m^Dk1?*amY_Qx$FE_rOlL8v5lAkPQW%D*gL{;RW!;uT`~O*V`;0nmdJ5 zjQ3W7_#Nk$kAs{m7ILYA{<^#U*P+gDR-R(ttAMDW4XLBt#$g&mGjB}Ll~t}1uaQIW ztzsjUT~gxmg{rvMtPDl?tMPkRCr3kX2^h%kcbqR%ku=3-(QggiRTVuw)q&gO%Lh1> z4;A!jHFo#pZa)IXS90tVQrp8w2%(Ni5M6cuZY@+MCXu zuN(XpweF|GSFg!;AGdN{kB2IQ?rx*jbBRuCHe#!*niIG~;OmBl?%rukc(PTGZ?*3c z86<2@r;)c=*wV5S-SBsON~gD?4K2=q!0>J}F){xN;e6#P;3vMV)ot)k+Y9eMFnb&I z)#mTe>)z&H&i{gGiurA2<4xr#0yzb_G%`X*Iyll1{HsEe4ZxeJC9L=mc0kF(a= z?3cXXSDe;MgZ`|;k<{i_3Y^5S~hORkiWku^rk&Lr3`1Nz}{ z5l;7~&%)w5A1FHn?}W7*0Xbyu0U56oPbK9kl=6nA*ERA{r@|{MPrN z(~#fd67^WWouW#kKG53QdWTVzf_Tgl^i$Ck<+i^D2I85)mk{|W6pHc5vKJyO`15O| zLu4Hf;~CMJf_DZz^J97%h=2>MEENhDziJlMO{5S1kU@y{q3(OcYZ~eqyBUFaA7n-7 z8N%vug9CGT6;-Wl7jV_B;y_CsN7XHWd*vvsc$F0Ogq8I)#Tnvq_q=9zv%mW@XI-|2 zCTg_1TiE6aUr>bznm_+OWrJ!_ck!jn8TH+4@bPTqd0~1($;rvZ(ZQkKXxYP^gX?h|+vo!-E6RkB>v4RQ zbm!(`Egv9u&K3Ft-e)vUQja|zPQf0o9^PJM>2KYsI|`B2{$;zr&f6&G&2@$-$mR;9 zk6Jp-2D>Al+v#X%gifad-oVYaELt4-xF5U8qSl7z z^(%Tuem>Z;$2f9iA zW@5_V()iToTlE{crg6Gyh!zM`SWEemwRreX`0qHuws-idLO5|fCaXgI2tAJ85}-Oa z=U`=(rPPMq^Ut~539l=!o3_=G795gtd-J^${i{_g4=>mkyIq}rH_4;tmE0AK*K82~ ztb^@(%LNe;W;E1XwYJ$89Pm=LBm7sqe!x8P$KAApJF#Z1)9uC;Vd83srkA3;KePo&V3Mv zEQ3=GSM>Y4?L|QV-Vv>A>F$sI=-}UG0cwPpvKT!&MreXsUEvW2(Hd0ub>&@iaD{R~CaG|vp)W&&qho^uz(-DKdRqS|b~0Nw=*1$bX5MeGj}TU{ z-wuFooG%8Zu=}9GpNl!g#r`Fel(Y~-b_s4CzPovsNfr1Hw*=%A1Y=vODKuO81mBYV z)C@kp!ZsJJZU$~`@HJb%(%RnHzLzl9^nRmChmQ40%Hx{93dXJLIPQvHhW=~}oQJC$3_$nAn6QRlfpTqW4Saf`g$jzFCCG7^rDpyZS9 z<#ZO~WkhuMpvJ&xTD5tqL;+*Jwpu1}b03ct zN;35}5Z^>8+xSJ2$GgI>TihZ{5ecZ`RiIRlM7aTG8N=dKgZ9M*rGfp*_pHoaifY|D z_l7Ql1`RB{Lu6{8v^kWCsj{LzKUROZCDp~Rr_`kS+Gy=G4LmXNk`L0DUkXtL=kZjv z@cqm?j}#)DZymX|o}e%18W|hspSS-y2i)cO`rPLG2g+@GWvCIsptOTi#*RGa3NZOi z{~cH7&rTF{KT143{}TR;sLIRJ%m~m+{}xFF>xtxf60~_kpyS6wRL2vG8$Npu)pq|3Os;bZ{0d`2ntt`^rFV7XuQsT4 zD~#*BzkPJr$n9|6UA}77XUi;YbUd!a0-3K3GP)b=m{c-s+!*N90gFyEt39@d<__*H z&w?+8= z8%mUllj*~57!q0_*{zcV)+MN18~n8z@jDUnl!VC$u9Z1;lx+tduE_z0`Pzd?B@p_g z;W|vSWa3OEqju}98z*H6rV7vaK)}4z8G@4hn*6g9C$`7HM!0$m|IYy zl#$^S;q828xpTfR!Z1=c1lc150>!FQ(wG>WrQ|MFVKn8g_Y#0#O+OQzfbjPnk8hYa zM=sI-H)cRexxLYf1pLR|W`SJWTB;P3v=6?k#_GNNbcQ2tQqM`#<1Ypm^5Pgy%6l#; z{_Nq$*U0%f-_`k!^Ww@%g-FKav2%;+qi8Qer5}0vYhsa7xa0$x9Xv|B-muh?lZsAc zYW94|C;n6l27n!GlsN3xj}F4z@r)rjxD0QR8g*gRH0Z?SoOo$?`7N&cU${mB zv2r<&TFOw>b}1*1{|+QR)Kju=dk#HYSXC8w`re@THmS3ST zGV~Lk!r0~l-X)lXMVOo8na935y}O1Pl@ATT`0pF9xlTDY013-$?rj(A9!e;`?OKX; z%^eRU4!c3V2=mwa-HnR5gRWXEc+rnAU>yt$409I+-O0_0A%{9P6jdTjQ%PQ4!%1y2 z@@j$P5`(->bX3P0uh)35i>`B7g}OG`@=;I>vP3A%u4 z+OM?BTjWo1*{Z!Wc}u^C)!#rS{*_TdpP-d+l1s_t?s%q{QiH^XbQQ<1NBYR|QtGZG8du*q{wKfgExUdAp0$U%+0OAm^9lzX4&OmHyPeG(cFjKf-3gao7vAQg z-uE@Ls0K)lStB*kqoy^l$9sS|-u~lU#oT53XT!aJucWhONaA8&>+nZ_Wwg@z@h726xYMJoQbaM@ZjdE#^UFL z)J!gM`sLGtH8Vh9F}$9hxcuQ!{Qt<|O%N@V=((n6;r$r^Dgi8Q3>@5C+xPm}odCXn z+wgaPm;|+&vN}v6V0^CPCg6DIS3D)vC|Dk%P5!;&T^?P|t6}??Oi3$JVWiL#4Q&$a z&}-Th9%$idPxzwupW${pEicUSgvw46COBrRwnuQ2WI6-1mRfAgeGL0PW&H;50a&*K z7?kVjO>4AZEV-t*B@mVB6|P3d``bhUQ3&$c?OabHaeKbb=3;~8u2R5%o`F)V@Kr@y z<;kI8PF01tbRhmecU8>xj~L^i{5N^?tAyR>Us;a7j<=)#*9VUFJRV!H@UIlWrNx;1 z|Bp6*;=DPvG}YAT+f)B-$|bx0PcLhxrdF4n{_UnqZ^MAWQ(ji~zq=&jU%&U?|DdMA z|Jx^z{zuOK|2t>)>c#2fu3e9w_9^hf>=|;MH#haY4w{q@62PXLzIwj(aHKQ$n%2$H zPirgw)7%gbxNSWnFzw&TBFA07F7jr7rWX=X0kP&gl1Rn`d$H^HC?n%U`g*(dQVnyC zKgkGk$;zSuWbjjZQ_xD-^0#l}_K)6?CW;*&{Ggd0-zl9h*%4o6!mlraF+pm`ifaU= z(A06)8}I52En6iX%S!S*;gal~LQWx33ldI>JJ~0b1q)ZLM=_~%Hj2jAmKJj)-WMm2kY#%l4jEIR4AngKV)!~s}6-UnQbL+y^5o9ssSk~ z%;SmOg@scwF{@L_g{!M+q|;e*DIXABjN6QOxlE^{Rz#i2ll**;UL_OLs71+Vy)O3$ zH_NMMKuSKe+fEDZUPgC)?@kAMtF~Z8Q&boBdP-#0Y?chp-qKe=vtFpeK3g2{6>#z8 zFXu9C7_f>$4&(K>CF&0=d$%qM7E(RX8Lc?xrq36t#xfZHC9njgkkUL#id=-|h262U z7Bxm8GBtnXCdpoWm=}xcPpS@r2qS4KJc?j>^pUflhN;gQhCFnW4%`Nc*RKU(^U#7B zRozX+IfFCJCvGdXNob?G>c%%sj#n=AH`7L?%-Z=%`6~p{nENNRP*yr&Lpqp*j{cBO zHa;0&dn-)6!%aG<{BT5qfN)IOse%%$6FL^c_mwP8qG|OVQzBZu34`A)yVuCXzV4es z*8=Tvw>o5wcV1No>gf2ZI@-3nCi1qz{!^w!K91A9elHsM36Vbm5z4|r!by%<8?=vkJI zS6=WI#zsbFi5PUlY0@o z>U{iTj6`IkI?SMY8|&qXmp(Z0AfLw*tJWW9k9?+|qR%MU1|!Z(sOr|aW+!onqVU;{ zV-nPLp4|Bg`C7Cm$mUS1ZnC&r5tS@c$#jPR2_)u%&*#DH0#@taO3Oj3uraccK3F<= zOEcMV>_GzX+!2i)Q?cDn{lyDCHw_j}s6aR%!BQ5iRZy+8V(;w(7pWJP=n(&22S4tA zX28Lk#;1JIyY)kty6H^JbPy*Ak(OIYjRuJ8{y`HHOP^ggkzcBJ@ptqua`q17J#?32 zIiy~DSsfWd8~nboU4FfqjnA8#+nr~xGcLNHdn|3<-Ye=-u128A9oiVqO)eBI>*jDw zh$9lau7~3xF3u)1(^|ow$FYC-Y~2o99q>rx7?bdkui5-K<&=AB1ezf)ahzdDxS!1D z`AWH>Jsg}U26>SE^%~navEKRXf&JN^WIxW_DFKjk$A}1L!sh34sfkGxYJOn>wJM@q?`tVkeh=o`7ge8na~`KMf%&2IO|^(4t8$T_qqof8++TBLRUdZi26l;7|q zSqn)!f@r|x+z4?%7pmE68IcM&sy<7*E6-=7emcW5GHb<*y-IBAIA7sF{WbIP)dKy! zRr*Nfe35;_BeHIR1X0nX(x9)8Js1~;32MPlmtg##)?X{+SeH3%pnYYn*9}(Ari>t=|?d80WO8 z9^3E`H!G#LB04Xik;1pTwgoP#(~?0I1yyC9lbKN?Ec7c$_c=xxd^)Eu5}$Jxn_V=d zC&w&FW)3ZJ8XtLgz^0|bN}Rra7ZDLT1L@Ds%^_!y)4;o*Tybv>lFc&l}8PvKO&9~cy;xBU>`n0<4I;OnkVsvURj`Se2^z8`Qj z`g5+Y;}{WNj#PX~c{Zv6%}#&|rzakn?K`nio>^|l$^JOVRxD@^9B7;Dh0#*k1RWDQ zqz{e@zl^S*ygR%{Gz(5EV&b%SVe^Ax(K6phxw}( zwvR|CF?Ke&D|MQAt`@3sn2`Uc)9DWto&wgfBCncfAjDu>O<9g}+6(;nK_eowjj3T8 zcE+P5`WUG@q2pG#(S6aN(dQLWJ{zHcWgz56vgn&rF@LnXtE zIRnq+_wI=1nU%DxbWwQ|&v#EN4Ai{cEd$NW0<+mf*^zW_ zzS|4S=8oaL5oY}1T}uE!q?v}o6OUUha~{1Omg+}uSxx;Eb% zp~)zsD03niw8p>DZYaYBIdw#g$vu8`JAK#|j z^=o58pj}F3gq_xWln@Fb`1mHw8b64Pov#4)5)GeB>{Xz*dY-s9<66W`@gY@m9<&5t~v+TNOdJ8(`{}oZkCva(ee` zM6$rX#9X;U0@UXM92RIRp61NsT#sW#1Te%Tgdux@9@U@w2N^IYk)I;lvHr8gyd?L0 zwTFU&z$q)5?2Cs8M2K!J4~Oy4mUQg;DZC!2vLHaE5mM=8Ap$oqJz3(t)01yC()ee& zV$sZJwr}NoC$0Gg5^WYKpP#VC44%oQ%sT0n2Fg}PAS)llt1?008GP%+RAQbU?30|@ z{M^YP6^CrgS;OViD$_a+TRwBxCn*Jput*wH*#dlR@l4>5CkZ;w6h@~e-x)XPlDlT% ztI_-8mZeTzrYgk_^bDdzgxsnu#1!&$BtCl+#wG)=%WG+Wy+Nd9z7;4OM65k_(^crE zL!}wTntMh*UZ3;qxQ+>^L2w<=|CK7YSEyRNpW#+&g=^tjCeiP zmEy;aPNf%m6!@}4n=<1M%i-B@bw+xuy`wYcbS-kM!Ms%m=9V855W^0q3%fM=^ji0g_hp!pIL2P{o(gMVDPBY1+q;>WjrIN zMsTVHom7>58}qOQXC%O%B2yQ1OnqN>?JEt29Z1zaUDGu4&0-T&qNQ9IH`8`oObW>& z$tGVprMJ4TE*N=-<_h$|mSbfp&qB*m1532>=rB)MQLoTCf)@V68}+fjl)^hrc0YWU zQK>4ww-Fh#hRQkVi%(g_S@-l7tLur9YId5AL;6vFG}O)pF9GsN6~K_CQ78h z2obCjE0CHKQ;WQ?y5AewFNMp|DNgoZZV1mg@4Oc6w^(|ARP$m~8C0uN!by>$$8==q zj89EVdBrQ^7I=dOCUc%PdBli+2ug~aB-LdS%l{Tx@>TpCxNR$!U zmbY)xDk$}y-l|wQRqYULq*poFX9s7dNODcQu8`I-Git|Ax>Vn8gQX33@JR)kWb&2N zRJMF}9Lvf*Z^w8DWc#RjT06U~?JOwd3gq~&)!$Upt*{!3e|YMpCDSqaH<*pkVo*?R0!N=ZP8N2E2$HWASi?~tAW{{iaTH)db_x6nQ z#>MT2i&0!G76(#h2#Yp?f$}69QFX%9fJU$*Otah|+Rz&=wFS$uZey2Ht)7nPTcM<^ zG+Ep4Cuu6h0@Z7s_C_fE8%zo&?*zS`v=e;R>2xKjSi&b5OiORv;L+8JfI6!T>3H|X4h$IAIxbkr-MBseL4b?ZK`4!v zysIl2(h24bT2JJfMc1v5OO<;QgD&L+PS5HTk5UAtK9|TO_w{}=rvdPgjA#S)wXp-g zHm6{>v27H~U-(BG58_b(!lHBE#iLkjX3KNIT*fuNZ_ORhtM*}uCy1ll$@{?mAjH&Z z=!>vCByxzf)ZugxwBo0cF~2*+&r4oeF;@tJ@UN^7M=NU{`nPfP>a45i;%UL$tcOnM z{XQM-m3>{pc?`@ ztbH_CGjQ33wpuT9$}qsOWjK?u!`W}109|pFsacp_FLsVd6sNUD!CD~%nR zVovF{iS8^Luqc{j)MtmGONiUPbq%HV%KOnHX1h$V$L^=0N8EBINqt2du##~FI@S@^ z`)SEcxuPeB?eSB>5?Hm`Ts*$TJ9XAF)ubyrk4@U;8lF@K3&KYJtc%G&c>!H2{p>yi(R zXM5x9k4|hZ53VO2LV3`n_;|P(%w)m}0 z2TICtgdvDmP-SrRW0Pl5$n;x%pKAwFPbeMi@r+wEj6r5CY0kK;$kyhd??ZRiY(@>( zx1l~k5q0h8x8p|w=AI=HQ(}hgq=A(X|DC9-KC5;kGVL;Td(Z7opuD9>1kWRCgyXze zwVAiGxPqcPDc_;okneO0DjhWBuu&pqELF0~OCrX081jFJD12(IH6TN%Rq(ku4MiNK zIUmp>c0Ldk=~$0aoLg*qD3anVekOn1K1ni^zL@DaytRJr#gzzhw?Uo{@QC7r$VX5) zMk(~V4co}@_y)VUC2L!$!vJ>*ytox0R8&ql^|Ea9mWvU1y!7#Vd6aG^tyf{_mnBk)Jd6Pg8Wz*rMzGHcpjKJJjHqGWq>a#LqWD6b zreV7_D3BfYM){%}#GraA**n&RMcHJ@$sTe?tr(&|Ked#thFhXGMn`8>2lmx>ZwhkJ z8=ezT0%+k9@X3_JEl^=)V}ASVa5gKm^EqkC4Dz9p*0%8j^#LHBG&nyuwn5mA0Tl+W z3OdX?Owt1DPMQv164}-CyD|6)Yfo+mZrhQTvTdNE(8^`HXvC(kJ@EESVQbiR(mJ2<&=N$DLg4cTPLGE{|7z=p6}J39uZRtkaU<}z)X zC1WeQzGmnGX@GO=u?=mrsP=7J2Bx(|NddgF!OAF;G9itjg@dIC9T;v>*~o8-J{WML{oZo$hfTp!n@@7=XE#5qot*$5l)2fIxvtF@ z4#oJf$xSb;543KxB)-YiWHbjEVr||iy<5wZg3qa)$l2m{N#=4_FXo@IjF2JX;Wng~ zY;t@4Z41{anpzMA9_|f-HP^C&wy$914wAwz*peXa@&kp^Z8G>X;#N#T@9xPu*Q8d3 z|I<;{P$|S=5LgJe7H<5y_Z+ zHyk;>B+9;dpB)<|=jkoxI~-Y-Ze8gX1L7zPvT(3>OTMT(Tjc2yT?r04*_r#u8w5%o zccx7!&U{%g&rEMq^E4(lCXRr$r=|=MR0NsDRrQu#;ZsrtJ$2izXzJ#z6FJ-pM+fXA ztSm=9v5_kKt1mLbfF&bc0zcJIvN}waKr9|S-7}x*eyFzROPPV#TDtdA(8(QbbJUS9 z(Q*y^s1p5UH4MyVJ^HG}E%a+{L}dS5Y1(mMyB0X`QN29Og;~5~ZO3WZl9rSPD)t>> zd389278ZCZU=bfN2&8TZ`&ah@@h#XhUrJQbF&tS^rdRSG7;8?iPa^@+79Brafvi>Q+ziDRM=M6Uet!R zY(%Z-Ox${rj3n_ti|F#NgB(IJPQ zi1n%PKlmUa#_f?E`b_>u+L_#@dwq1oz-xnvnwH+$s8g$3x28mxaIh9$FSoB1MsKqf@eO2yW$vQwO_R~?DcmR9#^Q$?;lEbQMd-I zqsVm?rT8X^5_a1WUCRb}8pH&ZM{<>)7TaTzhUA;ZIu!SddnB(ZZ=;dNbD!gKnrh3I zzzfq4s1m4Y=OK13`C-d=m*mTz z@I1=d@W4;@w?9^g1^!&1eGt6D!2lbj&V7qhGi6jIrn#Jc_FOsRW4q$H^J;x!&#w)F zh8oLjgLBiSJA!1~z72mq?jBa)QR~>0Guc|qG`yg)H9zi80^)>C)+dv;{G~sL^RLzT zgEj?=h|s{J%qQ1R6%E)mv)fLg7W$>rL(HcOC=5bTq9BCO{!fLh---t#K$A2byF0X% zG!%RsU~XMlUgFe66@T}_KA5{wR8mkMbkO@bz3?E$k5-R>J{SwHV(H}$`-b%-dV7_E z0M#R4eGACC#Sh_$Ez-;Y*UTFs!wgT1@M~k%0+XK=)uqD`B_(wpbEj=S%yWjMDVAjX z@ht%rBR8Oyj%NGmY38iOgM>yG)5NMaV&EZE5Ip3TFm`?Oo<&G zyYc-(wzhV`I0TRvc(^V#$V?tF)(?1g-=OLNWi?8l)YpfIjy^x*+o#=H#$WE?CzM~n zJGM)=hrET_56yLL8~JDM%hw$rp_pme!*uHrl4Mq+68Tyw8xDB7b_njZ4P+ZXAh$6j2cWgIkmiWk~Y6 z6+mV;gqm}*a!Kq*`?T`0t_93I{BfW&FbcgU>oZ!$qAp3e8wApuInZa5Lhlj;F!16) z3_}rSMkC%;+=cP3OVG-G2l>@}`{GRBb9QjP5U4oL)J$KzX-(Atz5nf9WI7oA1IJK) z>o2iGvd%`mGgjAN;S9R<&gQJPxbog^@aeLIsMB0zJ5(EGC=e@@dvq(Z-OP+ork}%8 z#o{r)mhUdvy+Q?7baWKakRh-Rj?;i}E;(*SZAFj%>tN}_!O%$q zr7TNbeDfer;^f-#eijAXMfu021CIzP+~(u z7$;lf4fV8ZY)`nLisTx{dTtQf|@zSP0Fa#SO? zc-+3tf`Gu~&V$`gp=B3yyj+95Wj$cs-q%se$%5>HvR1^8(H5sa(+DodsDYe-BmE9D zVZ1w~gjpK_lhexmQP%>o#h_ChUQ@1TS^ni2B^$9{^P1W!}UIBYcEtv#(!3= z89TXRc^?2O0&6=XOYApf49Thz>p&=^J3g-c$liyU_jEOVi zrXTsnEo*wcT1FrhrBXU82#Ep9__|_;+vYB9CK|X8=S_`w4b@OT0|&N_zQ>+$>;%5i zz>?d8CwA~y?@2L(BaN=3o#M>k_)OM%0{Q5KLl!qO#zWrk3Cc?WpwsW<$*K8A29<&w zYz;o%4Gr~*Gqb(TGVBfP16bji>3UCZ$w8igAs$mHM2wPS5|d_<3DpLXE`F-Mp|Re_ zQ;~zC$1%J`d`L;|tfg;SY_2mkMGm(P0iSh;!`o|}dNnYA@uoia3I=(`L?pW$|Mqc6 z@L|w`%-R;>lxcp$`?}`ij>DpM%@x7Yj1azzHqVCVfz2KKq>c+y)&QFD((%a67bXX%mYb zcbsBf28uzuragC_K#4`BCx&y8{eqa|q1%OH8@Qb<$2+Bylkdtb{5v}qn%0A=y8uR5 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 diff --git a/src/core/segments/quota.rs b/src/core/segments/quota.rs index 8bbd86a..42cb702 100644 --- a/src/core/segments/quota.rs +++ b/src/core/segments/quota.rs @@ -17,6 +17,18 @@ struct C88ApiResponse { current_credits: f64, #[serde(rename = "subscriptionName")] subscription_name: Option, + #[serde(rename = "subscriptionId")] + subscription_id: Option, +} + +// 订阅 API 响应结构 +#[derive(Debug, Deserialize)] +struct SubscriptionResponse { + id: u32, + #[serde(rename = "resetTimes")] + reset_times: u32, + #[serde(rename = "autoResetWhenZero")] + auto_reset_when_zero: bool, } // 端点配置 @@ -210,6 +222,42 @@ impl QuotaSegment { fn calculate_used(&self, response: &C88ApiResponse) -> f64 { response.credit_limit - response.current_credits } + + fn fetch_subscription_info(&self, api_key: &str, subscription_id: u32) -> Option { + let url = "https://www.88code.org/api/subscription"; + let bearer_token = format!("Bearer {}", api_key); + + let result = ureq::post(url) + .set("accept", "*/*") + .set("content-type", "application/json") + .set("Authorization", &bearer_token) + .timeout(Duration::from_secs(5)) + .call(); + + match result { + Ok(response) if response.status() == 200 => { + if let Ok(subscriptions) = response.into_json::>() { + // 查找匹配的订阅ID + subscriptions.into_iter().find(|sub| sub.id == subscription_id) + } else { + None + } + } + _ => None, + } + } + + fn format_reset_info(&self, reset_times: u32, auto_reset: bool) -> String { + if reset_times > 0 { + if auto_reset { + format!("↻ {} AutoReset", reset_times) + } else { + format!("↻ {}", reset_times) + } + } else { + String::new() + } + } } impl Segment for QuotaSegment { @@ -231,6 +279,17 @@ impl Segment for QuotaSegment { let total = response.credit_limit; let quota_display = self.format_quota(response.subscription_name.as_deref(), used, total); + // 获取重置次数信息 + let reset_info = if let Some(sub_id) = response.subscription_id { + if let Some(sub_info) = self.fetch_subscription_info(&api_key, sub_id) { + self.format_reset_info(sub_info.reset_times, sub_info.auto_reset_when_zero) + } else { + String::new() + } + } else { + String::new() + }; + let mut metadata = HashMap::new(); metadata.insert("used".to_string(), used.to_string()); metadata.insert("total".to_string(), total.to_string()); @@ -242,7 +301,7 @@ impl Segment for QuotaSegment { Some(SegmentData { primary: quota_display, - secondary: String::new(), + secondary: reset_info, metadata, }) } else { From 93d2133500ccc239b34270fefa84c8db3c7ce261 Mon Sep 17 00:00:00 2001 From: Hobee Date: Thu, 16 Oct 2025 19:01:40 +0800 Subject: [PATCH 08/10] chore: update version to 1.0.11 and implement auto-reset feature for quota segment --- Cargo.toml | 4 +- src/core/segments/quota.rs | 132 +++++++++++++++++-- src/ui/app.rs | 33 ++++- src/ui/components/settings.rs | 23 +++- src/ui/themes/theme_cometix.rs | 6 +- src/ui/themes/theme_default.rs | 6 +- src/ui/themes/theme_gruvbox.rs | 6 +- src/ui/themes/theme_minimal.rs | 6 +- src/ui/themes/theme_nord.rs | 6 +- src/ui/themes/theme_powerline_dark.rs | 6 +- src/ui/themes/theme_powerline_light.rs | 6 +- src/ui/themes/theme_powerline_rose_pine.rs | 6 +- src/ui/themes/theme_powerline_tokyo_night.rs | 6 +- 13 files changed, 219 insertions(+), 27 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b2b35ed..47f56d1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ccometixline-88cc" -version = "1.0.10" +version = "1.0.11" edition = "2021" description = "CCometixLine (ccline) - High-performance Claude Code StatusLine tool written in Rust (88Code version)" authors = ["Hobee Liu"] @@ -36,4 +36,4 @@ path = "src/main.rs" default = ["tui", "self-update", "dirs", "quota"] tui = ["ratatui", "crossterm", "ansi_term", "ansi-to-tui", "chrono"] self-update = ["ureq", "semver", "chrono", "dirs"] -quota = ["ureq", "dirs"] \ No newline at end of file +quota = ["ureq", "dirs", "chrono"] \ No newline at end of file diff --git a/src/core/segments/quota.rs b/src/core/segments/quota.rs index 42cb702..4a43a4f 100644 --- a/src/core/segments/quota.rs +++ b/src/core/segments/quota.rs @@ -247,16 +247,105 @@ impl QuotaSegment { } } - fn format_reset_info(&self, reset_times: u32, auto_reset: bool) -> String { - if reset_times > 0 { - if auto_reset { - format!("↻ {} AutoReset", reset_times) - } else { - format!("↻ {}", reset_times) - } + fn format_reset_info(&self, reset_times: u32, auto_reset_when_zero: bool, user_auto_reset_enabled: bool) -> String { + let status = if user_auto_reset_enabled { + // 用户在TUI中启用了Auto Reset + "[reset on auto]" + } else if auto_reset_when_zero { + // API返回的auto_reset_when_zero为true + "[reset on zero]" } else { - String::new() + "[reset off]" + }; + format!("↻ {} {}", reset_times, status) + } + + /// 检查当前是否在重置时间窗口内 + /// - 18:55-18:59:必须剩余2次或更多重置机会才进行重置 + /// - 23:55-23:59:只要有重置次数(>=1)就进行重置 + fn is_in_reset_window(&self, reset_times: u32) -> bool { + use chrono::{Local, Timelike}; + + let now = Local::now(); + let hour = now.hour(); + let minute = now.minute(); + + // 18:55 - 18:59:需要2次或更多重置机会 + if hour == 18 && minute >= 55 && minute <= 59 { + return reset_times >= 2; + } + + // 23:55 - 23:59:只要有重置次数就可以 + if hour == 23 && minute >= 55 && minute <= 59 { + return reset_times >= 1; } + + false + } + + /// 执行重置操作(调用API) + /// 返回重置是否成功 + fn perform_reset(&self, api_key: &str, subscription_id: u32) -> bool { + let url = format!("https://www.88code.org/api/reset-credits/{}", subscription_id); + let bearer_token = format!("Bearer {}", api_key); + let debug = env::var("C88_DEBUG").is_ok(); + + if debug { + eprintln!("[DEBUG] Attempting to reset credits for subscription {}", subscription_id); + } + + let result = ureq::post(&url) + .set("accept", "*/*") + .set("content-type", "application/json") + .set("Authorization", &bearer_token) + .timeout(Duration::from_secs(5)) + .call(); + + match result { + Ok(response) => { + if response.status() == 200 { + if debug { + eprintln!("[DEBUG] Reset successful for subscription {}", subscription_id); + } + true + } else { + if debug { + eprintln!("[DEBUG] Reset failed with status {}", response.status()); + } + false + } + } + Err(e) => { + if debug { + eprintln!("[DEBUG] Reset error: {}", e); + } + false + } + } + } + + /// 检查并执行自动重置(如果需要) + fn check_and_auto_reset( + &self, + api_key: &str, + subscription_id: u32, + reset_times: u32, + auto_reset_enabled: bool, + ) -> bool { + if !auto_reset_enabled { + return false; + } + + if reset_times == 0 { + return false; + } + + if !self.is_in_reset_window(reset_times) { + return false; + } + + // 在重置窗口内,执行重置 + self.perform_reset(api_key, subscription_id) } } @@ -271,6 +360,19 @@ impl Segment for QuotaSegment { { let api_key = self.load_api_key()?; + // 加载配置获取auto_reset_enabled选项 + let auto_reset_enabled = if let Ok(config) = crate::config::Config::load() { + config + .segments + .iter() + .find(|s| s.id == SegmentId::Quota) + .and_then(|sc| sc.options.get("auto_reset_enabled")) + .and_then(|v| v.as_bool()) + .unwrap_or(false) + } else { + false + }; + // 使用静态方法进行端点检测 if let Some((endpoint_url, response)) = SmartEndpointDetector::detect_endpoint_static(&api_key) @@ -282,7 +384,19 @@ impl Segment for QuotaSegment { // 获取重置次数信息 let reset_info = if let Some(sub_id) = response.subscription_id { if let Some(sub_info) = self.fetch_subscription_info(&api_key, sub_id) { - self.format_reset_info(sub_info.reset_times, sub_info.auto_reset_when_zero) + // 检查并执行自动重置(内部会进行所有必要的检查) + let _ = self.check_and_auto_reset( + &api_key, + sub_id, + sub_info.reset_times, + auto_reset_enabled, + ); + + self.format_reset_info( + sub_info.reset_times, + sub_info.auto_reset_when_zero, + auto_reset_enabled + ) } else { String::new() } diff --git a/src/ui/app.rs b/src/ui/app.rs index 2d048ae..78ba40b 100644 --- a/src/ui/app.rs +++ b/src/ui/app.rs @@ -562,9 +562,36 @@ impl App { } } FieldSelection::Options => { - // TODO: Implement options editor - self.status_message = - Some("Options editor not implemented yet".to_string()); + // Handle segment-specific options + if let Some(segment) = self.config.segments.get_mut(self.selected_segment) { + match segment.id { + SegmentId::Quota => { + // Toggle auto_reset_enabled for Quota segment + let current_value = segment + .options + .get("auto_reset_enabled") + .and_then(|v| v.as_bool()) + .unwrap_or(false); + segment.options.insert( + "auto_reset_enabled".to_string(), + serde_json::Value::Bool(!current_value), + ); + self.status_message = Some(format!( + "Auto Reset {}", + if !current_value { + "enabled" + } else { + "disabled" + } + )); + self.preview.update_preview(&self.config); + } + _ => { + self.status_message = + Some("No options available for this segment".to_string()); + } + } + } } } } diff --git a/src/ui/components/settings.rs b/src/ui/components/settings.rs index 2cc8994..96fb841 100644 --- a/src/ui/components/settings.rs +++ b/src/ui/components/settings.rs @@ -269,10 +269,25 @@ impl SettingsComponent { ), create_field_line( FieldSelection::Options, - vec![Span::raw(format!( - "└─ Options: {} items", - segment.options.len() - ))], + { + // Show auto_reset_enabled status for Quota segment + if segment.id == SegmentId::Quota { + let auto_reset_enabled = segment + .options + .get("auto_reset_enabled") + .and_then(|v| v.as_bool()) + .unwrap_or(false); + vec![Span::raw(format!( + "└─ Auto Reset: {}", + if auto_reset_enabled { "[✓]" } else { "[ ]" } + ))] + } else { + vec![Span::raw(format!( + "└─ Options: {} items", + segment.options.len() + ))] + } + }, ), ]; let text = Text::from(lines); diff --git a/src/ui/themes/theme_cometix.rs b/src/ui/themes/theme_cometix.rs index d3ab3b6..e8c6cc8 100644 --- a/src/ui/themes/theme_cometix.rs +++ b/src/ui/themes/theme_cometix.rs @@ -177,6 +177,10 @@ pub fn quota_segment() -> SegmentConfig { background: None, }, styles: TextStyleConfig { text_bold: true }, - options: HashMap::new(), + options: { + let mut opts = HashMap::new(); + opts.insert("auto_reset_enabled".to_string(), serde_json::Value::Bool(false)); + opts + }, } } diff --git a/src/ui/themes/theme_default.rs b/src/ui/themes/theme_default.rs index 3957fb5..027923f 100644 --- a/src/ui/themes/theme_default.rs +++ b/src/ui/themes/theme_default.rs @@ -177,6 +177,10 @@ pub fn quota_segment() -> SegmentConfig { background: None, }, styles: TextStyleConfig::default(), - options: HashMap::new(), + options: { + let mut opts = HashMap::new(); + opts.insert("auto_reset_enabled".to_string(), serde_json::Value::Bool(false)); + opts + }, } } diff --git a/src/ui/themes/theme_gruvbox.rs b/src/ui/themes/theme_gruvbox.rs index 9f0762e..461e7c2 100644 --- a/src/ui/themes/theme_gruvbox.rs +++ b/src/ui/themes/theme_gruvbox.rs @@ -177,6 +177,10 @@ pub fn quota_segment() -> SegmentConfig { background: None, }, styles: TextStyleConfig { text_bold: true }, - options: HashMap::new(), + options: { + let mut opts = HashMap::new(); + opts.insert("auto_reset_enabled".to_string(), serde_json::Value::Bool(false)); + opts + }, } } diff --git a/src/ui/themes/theme_minimal.rs b/src/ui/themes/theme_minimal.rs index 300a9f2..5306a00 100644 --- a/src/ui/themes/theme_minimal.rs +++ b/src/ui/themes/theme_minimal.rs @@ -177,6 +177,10 @@ pub fn quota_segment() -> SegmentConfig { background: None, }, styles: TextStyleConfig::default(), - options: HashMap::new(), + options: { + let mut opts = HashMap::new(); + opts.insert("auto_reset_enabled".to_string(), serde_json::Value::Bool(false)); + opts + }, } } diff --git a/src/ui/themes/theme_nord.rs b/src/ui/themes/theme_nord.rs index c24a2ac..1bc2f6a 100644 --- a/src/ui/themes/theme_nord.rs +++ b/src/ui/themes/theme_nord.rs @@ -273,6 +273,10 @@ pub fn quota_segment() -> SegmentConfig { }), }, styles: TextStyleConfig::default(), - options: HashMap::new(), + options: { + let mut opts = HashMap::new(); + opts.insert("auto_reset_enabled".to_string(), serde_json::Value::Bool(false)); + opts + }, } } diff --git a/src/ui/themes/theme_powerline_dark.rs b/src/ui/themes/theme_powerline_dark.rs index df70117..04e7e08 100644 --- a/src/ui/themes/theme_powerline_dark.rs +++ b/src/ui/themes/theme_powerline_dark.rs @@ -273,6 +273,10 @@ pub fn quota_segment() -> SegmentConfig { }), }, styles: TextStyleConfig::default(), - options: HashMap::new(), + options: { + let mut opts = HashMap::new(); + opts.insert("auto_reset_enabled".to_string(), serde_json::Value::Bool(false)); + opts + }, } } diff --git a/src/ui/themes/theme_powerline_light.rs b/src/ui/themes/theme_powerline_light.rs index 2b8d4da..2776a4a 100644 --- a/src/ui/themes/theme_powerline_light.rs +++ b/src/ui/themes/theme_powerline_light.rs @@ -265,6 +265,10 @@ pub fn quota_segment() -> SegmentConfig { }), }, styles: TextStyleConfig::default(), - options: HashMap::new(), + options: { + let mut opts = HashMap::new(); + opts.insert("auto_reset_enabled".to_string(), serde_json::Value::Bool(false)); + opts + }, } } diff --git a/src/ui/themes/theme_powerline_rose_pine.rs b/src/ui/themes/theme_powerline_rose_pine.rs index 3adf5bd..70890a8 100644 --- a/src/ui/themes/theme_powerline_rose_pine.rs +++ b/src/ui/themes/theme_powerline_rose_pine.rs @@ -273,6 +273,10 @@ pub fn quota_segment() -> SegmentConfig { }), }, styles: TextStyleConfig::default(), - options: HashMap::new(), + options: { + let mut opts = HashMap::new(); + opts.insert("auto_reset_enabled".to_string(), serde_json::Value::Bool(false)); + opts + }, } } diff --git a/src/ui/themes/theme_powerline_tokyo_night.rs b/src/ui/themes/theme_powerline_tokyo_night.rs index 5c5d6c4..21419e6 100644 --- a/src/ui/themes/theme_powerline_tokyo_night.rs +++ b/src/ui/themes/theme_powerline_tokyo_night.rs @@ -273,6 +273,10 @@ pub fn quota_segment() -> SegmentConfig { }), }, styles: TextStyleConfig::default(), - options: HashMap::new(), + options: { + let mut opts = HashMap::new(); + opts.insert("auto_reset_enabled".to_string(), serde_json::Value::Bool(false)); + opts + }, } } From 0781c2c2a2cd94bafa35cd2cd3141ead4fb04689 Mon Sep 17 00:00:00 2001 From: Hobee Date: Thu, 20 Nov 2025 20:38:21 +0800 Subject: [PATCH 09/10] git add Cargo.toml Cargo.lock src/core/segments/quota.rs && git commit -m "chore: update version to 1.0.12 and adapt to new API wrapper response format - Update version from 1.0.11 to 1.0.12 - Add ApiWrapper struct to handle wrapped API responses - Adapt usage API response parsing to new format - Adapt subscription API response parsing to new format - Maintain backward compatibility with existing functionality --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/core/segments/quota.rs | 25 +++++++++++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bfa409f..9183a74 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -160,7 +160,7 @@ dependencies = [ [[package]] name = "ccometixline-88cc" -version = "1.0.8" +version = "1.0.12" dependencies = [ "ansi-to-tui", "ansi_term", diff --git a/Cargo.toml b/Cargo.toml index 47f56d1..e9ef9a8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ccometixline-88cc" -version = "1.0.11" +version = "1.0.12" edition = "2021" description = "CCometixLine (ccline) - High-performance Claude Code StatusLine tool written in Rust (88Code version)" authors = ["Hobee Liu"] diff --git a/src/core/segments/quota.rs b/src/core/segments/quota.rs index 4a43a4f..6951c6b 100644 --- a/src/core/segments/quota.rs +++ b/src/core/segments/quota.rs @@ -8,7 +8,16 @@ use std::hash::{Hash, Hasher}; use std::path::PathBuf; use std::time::{Duration, SystemTime}; -// API 响应结构 +// API 通用包装响应结构 +#[derive(Debug, Deserialize)] +struct ApiWrapper { + code: i32, + msg: String, + ok: bool, + data: T, +} + +// Usage API 响应数据结构 #[derive(Debug, Deserialize)] struct C88ApiResponse { #[serde(rename = "creditLimit")] @@ -21,7 +30,7 @@ struct C88ApiResponse { subscription_id: Option, } -// 订阅 API 响应结构 +// 订阅信息结构 #[derive(Debug, Deserialize)] struct SubscriptionResponse { id: u32, @@ -109,7 +118,11 @@ impl SmartEndpointDetector { ); } - response.into_json::().ok() + // 解析包装后的响应 + response + .into_json::>() + .ok() + .map(|wrapper| wrapper.data) } else { if debug { eprintln!( @@ -236,9 +249,9 @@ impl QuotaSegment { match result { Ok(response) if response.status() == 200 => { - if let Ok(subscriptions) = response.into_json::>() { - // 查找匹配的订阅ID - subscriptions.into_iter().find(|sub| sub.id == subscription_id) + if let Ok(wrapper) = response.into_json::>>() { + // 从包装结构中提取数据并查找匹配的订阅ID + wrapper.data.into_iter().find(|sub| sub.id == subscription_id) } else { None } From cf104b2a48c9858a3e960428c173efe56c201ce2 Mon Sep 17 00:00:00 2001 From: Hobee Date: Sun, 7 Dec 2025 22:17:06 +0800 Subject: [PATCH 10/10] chore: update version to 1.0.13 and add model parameter support - Update version from 1.0.12 to 1.0.13 in Cargo.toml and Cargo.lock - Add model parameter to endpoint detection and API requests - Implement load_model() function with priority: environment variable > settings.json > default - Support ANTHROPIC_MODEL environment variable for model configuration - Read model from ~/.claude/settings.json if environment variable not set - Use claude-sonnet-4-5-20251022 as default model fallback - Pass model parameter to try_endpoint() and detect_endpoint() methods - Include model in URL query parameters for API calls - Update fetch_subscription_info() to accept and use model parameter - Clean up whitespace formatting in quota segment code --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/core/segments/quota.rs | 60 ++++++++++++++++++++++++++++---------- 3 files changed, 47 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9183a74..f681f13 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -160,7 +160,7 @@ dependencies = [ [[package]] name = "ccometixline-88cc" -version = "1.0.12" +version = "1.0.13" dependencies = [ "ansi-to-tui", "ansi_term", diff --git a/Cargo.toml b/Cargo.toml index e9ef9a8..bf4c8dd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ccometixline-88cc" -version = "1.0.12" +version = "1.0.13" edition = "2021" description = "CCometixLine (ccline) - High-performance Claude Code StatusLine tool written in Rust (88Code version)" authors = ["Hobee Liu"] diff --git a/src/core/segments/quota.rs b/src/core/segments/quota.rs index 6951c6b..2e87923 100644 --- a/src/core/segments/quota.rs +++ b/src/core/segments/quota.rs @@ -90,16 +90,19 @@ impl SmartEndpointDetector { hasher.finish() } - fn try_endpoint(&self, endpoint: &EndpointConfig, api_key: &str) -> Option { + fn try_endpoint(&self, endpoint: &EndpointConfig, api_key: &str, model: &str) -> Option { let debug = env::var("C88_DEBUG").is_ok(); + // 构建带 model 参数的 URL + let url_with_model = format!("{}?model={}", endpoint.url, model); + if debug { - eprintln!("[DEBUG] Trying endpoint: {}", endpoint.url); + eprintln!("[DEBUG] Trying endpoint: {}", url_with_model); } let start_time = SystemTime::now(); let bearer_token = format!("Bearer {}", api_key); - let result = ureq::post(&endpoint.url) + let result = ureq::post(&url_with_model) .set("accept", "*/*") .set("content-type", "application/json") .set("Authorization", &bearer_token) @@ -143,11 +146,11 @@ impl SmartEndpointDetector { } } - fn detect_endpoint(&mut self, api_key: &str) -> Option<(String, C88ApiResponse)> { + fn detect_endpoint(&mut self, api_key: &str, model: &str) -> Option<(String, C88ApiResponse)> { // 尝试所有端点 let endpoints_clone = self.endpoints.clone(); for endpoint in &endpoints_clone { - if let Some(response) = self.try_endpoint(endpoint, api_key) { + if let Some(response) = self.try_endpoint(endpoint, api_key, model) { return Some((endpoint.url.clone(), response)); } } @@ -155,9 +158,9 @@ impl SmartEndpointDetector { None } - fn detect_endpoint_static(api_key: &str) -> Option<(String, C88ApiResponse)> { + fn detect_endpoint_static(api_key: &str, model: &str) -> Option<(String, C88ApiResponse)> { let mut detector = SmartEndpointDetector::new(); - detector.detect_endpoint(api_key) + detector.detect_endpoint(api_key, model) } } @@ -224,6 +227,32 @@ impl QuotaSegment { None } + fn load_model(&self) -> String { + // 优先级:环境变量 > settings.json > 默认值 + + // 1. 环境变量 ANTHROPIC_MODEL + if let Ok(model) = env::var("ANTHROPIC_MODEL") { + return model; + } + + // 2. settings.json(顶层 model 字段) + if let Some(home) = dirs::home_dir() { + let settings_path = home.join(".claude").join("settings.json"); + if let Ok(content) = fs::read_to_string(settings_path) { + if let Ok(settings) = serde_json::from_str::(&content) { + if let Some(model) = settings.get("model") { + if let Some(model_str) = model.as_str() { + return model_str.to_string(); + } + } + } + } + } + + // 3. 默认值:使用 claude-sonnet-4-5-20251022 + "claude-sonnet-4-5-20251022".to_string() + } + fn format_quota(&self, subscription_name: Option<&str>, used: f64, total: f64) -> String { if let Some(name) = subscription_name { format!("{} ${:.2}/${:.2}", name, used, total) @@ -236,11 +265,11 @@ impl QuotaSegment { response.credit_limit - response.current_credits } - fn fetch_subscription_info(&self, api_key: &str, subscription_id: u32) -> Option { - let url = "https://www.88code.org/api/subscription"; + fn fetch_subscription_info(&self, api_key: &str, subscription_id: u32, model: &str) -> Option { + let url = format!("https://www.88code.org/api/subscription?model={}", model); let bearer_token = format!("Bearer {}", api_key); - let result = ureq::post(url) + let result = ureq::post(&url) .set("accept", "*/*") .set("content-type", "application/json") .set("Authorization", &bearer_token) @@ -372,6 +401,7 @@ impl Segment for QuotaSegment { #[cfg(feature = "quota")] { let api_key = self.load_api_key()?; + let model = self.load_model(); // 加载配置获取auto_reset_enabled选项 let auto_reset_enabled = if let Ok(config) = crate::config::Config::load() { @@ -386,9 +416,9 @@ impl Segment for QuotaSegment { false }; - // 使用静态方法进行端点检测 + // 使用静态方法进行端点检测,传递 model 参数 if let Some((endpoint_url, response)) = - SmartEndpointDetector::detect_endpoint_static(&api_key) + SmartEndpointDetector::detect_endpoint_static(&api_key, &model) { let used = self.calculate_used(&response); let total = response.credit_limit; @@ -396,7 +426,7 @@ impl Segment for QuotaSegment { // 获取重置次数信息 let reset_info = if let Some(sub_id) = response.subscription_id { - if let Some(sub_info) = self.fetch_subscription_info(&api_key, sub_id) { + if let Some(sub_info) = self.fetch_subscription_info(&api_key, sub_id, &model) { // 检查并执行自动重置(内部会进行所有必要的检查) let _ = self.check_and_auto_reset( &api_key, @@ -404,9 +434,9 @@ impl Segment for QuotaSegment { sub_info.reset_times, auto_reset_enabled, ); - + self.format_reset_info( - sub_info.reset_times, + sub_info.reset_times, sub_info.auto_reset_when_zero, auto_reset_enabled )