From b35e2356826c55ed0cd6963185f5c7c690d2a243 Mon Sep 17 00:00:00 2001 From: xiaji Date: Fri, 27 Feb 2026 17:03:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9ERust=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=9F=BA=E7=A1=80=E6=A1=86=E6=9E=B6=E5=92=8C=E6=A0=B8?= =?UTF-8?q?=E5=BF=83=E5=8A=9F=E8=83=BD=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加Cargo.toml配置文件,定义项目元信息和依赖项 - 实现配置管理模块(ConfigManager),支持JSON配置读写 - 添加爬虫模块(SpiderManager),支持网页内容抓取和解析 - 实现数据库模块(DatabaseManager),使用SQLite存储评论数据 - 添加LLM分析模块(LLMAnalyzer),支持调用AI接口进行情绪分析 - 实现UI界面模块,包含指标显示和波形图绘制功能 - 添加项目文档和截图资源 --- rust/.cargo/config.toml | 8 + rust/Cargo.lock | 5346 +++++++++++++++++ rust/Cargo.toml | 42 + rust/src/analyzer.rs | 182 + rust/src/config.rs | 207 + rust/src/database.rs | 223 + rust/src/lib.rs | 9 + rust/src/main.rs | 276 + rust/src/spider.rs | 120 + rust/src/ui.rs | 125 + rust/target/.rustc_info.json | 1 + rust/target/CACHEDIR.TAG | 3 + rust/target/release/.cargo-lock | 0 .../cfg-if-d2d7e488c9dc3d69/dep-lib-cfg_if | Bin 0 -> 14 bytes .../cfg-if-d2d7e488c9dc3d69/invoked.timestamp | 1 + .../cfg-if-d2d7e488c9dc3d69/lib-cfg_if | 1 + .../cfg-if-d2d7e488c9dc3d69/lib-cfg_if.json | 1 + .../invoked.timestamp | 1 + .../output-build-script-build-script-build | 5 + .../quote-848bfe90599d73ba/invoked.timestamp | 1 + .../output-build-script-build-script-build | 5 + .../invoked.timestamp | 1 + .../output-build-script-build-script-build | 5 + .../dep-lib-unicode_ident | Bin 0 -> 14 bytes .../invoked.timestamp | 1 + .../lib-unicode_ident | 1 + .../lib-unicode_ident.json | 1 + .../dep-lib-windows_link | Bin 0 -> 14 bytes .../invoked.timestamp | 1 + .../lib-windows_link | 1 + .../lib-windows_link.json | 1 + .../release/deps/cfg_if-d2d7e488c9dc3d69.d | 7 + .../deps/libcfg_if-d2d7e488c9dc3d69.rlib | Bin 0 -> 7782 bytes .../deps/libcfg_if-d2d7e488c9dc3d69.rmeta | Bin 0 -> 5309 bytes .../libunicode_ident-0082d2f4b99fbc4a.rlib | Bin 0 -> 49354 bytes .../libunicode_ident-0082d2f4b99fbc4a.rmeta | Bin 0 -> 32551 bytes .../libwindows_link-6e2139e2f73745b5.rlib | Bin 0 -> 7320 bytes .../libwindows_link-6e2139e2f73745b5.rmeta | Bin 0 -> 4827 bytes .../deps/unicode_ident-0082d2f4b99fbc4a.d | 8 + .../deps/windows_link-6e2139e2f73745b5.d | 8 + sse_screenshot.png | Bin 66626 -> 40211 bytes 41 files changed, 6592 insertions(+) create mode 100644 rust/.cargo/config.toml create mode 100644 rust/Cargo.lock create mode 100644 rust/Cargo.toml create mode 100644 rust/src/analyzer.rs create mode 100644 rust/src/config.rs create mode 100644 rust/src/database.rs create mode 100644 rust/src/lib.rs create mode 100644 rust/src/main.rs create mode 100644 rust/src/spider.rs create mode 100644 rust/src/ui.rs create mode 100644 rust/target/.rustc_info.json create mode 100644 rust/target/CACHEDIR.TAG create mode 100644 rust/target/release/.cargo-lock create mode 100644 rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/dep-lib-cfg_if create mode 100644 rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/invoked.timestamp create mode 100644 rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/lib-cfg_if create mode 100644 rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/lib-cfg_if.json create mode 100644 rust/target/release/.fingerprint/proc-macro2-b2a65311b39f6ce5/invoked.timestamp create mode 100644 rust/target/release/.fingerprint/proc-macro2-b2a65311b39f6ce5/output-build-script-build-script-build create mode 100644 rust/target/release/.fingerprint/quote-848bfe90599d73ba/invoked.timestamp create mode 100644 rust/target/release/.fingerprint/quote-848bfe90599d73ba/output-build-script-build-script-build create mode 100644 rust/target/release/.fingerprint/serde_core-7fe007e4c02f146f/invoked.timestamp create mode 100644 rust/target/release/.fingerprint/serde_core-7fe007e4c02f146f/output-build-script-build-script-build create mode 100644 rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/dep-lib-unicode_ident create mode 100644 rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/invoked.timestamp create mode 100644 rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/lib-unicode_ident create mode 100644 rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/lib-unicode_ident.json create mode 100644 rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/dep-lib-windows_link create mode 100644 rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/invoked.timestamp create mode 100644 rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/lib-windows_link create mode 100644 rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/lib-windows_link.json create mode 100644 rust/target/release/deps/cfg_if-d2d7e488c9dc3d69.d create mode 100644 rust/target/release/deps/libcfg_if-d2d7e488c9dc3d69.rlib create mode 100644 rust/target/release/deps/libcfg_if-d2d7e488c9dc3d69.rmeta create mode 100644 rust/target/release/deps/libunicode_ident-0082d2f4b99fbc4a.rlib create mode 100644 rust/target/release/deps/libunicode_ident-0082d2f4b99fbc4a.rmeta create mode 100644 rust/target/release/deps/libwindows_link-6e2139e2f73745b5.rlib create mode 100644 rust/target/release/deps/libwindows_link-6e2139e2f73745b5.rmeta create mode 100644 rust/target/release/deps/unicode_ident-0082d2f4b99fbc4a.d create mode 100644 rust/target/release/deps/windows_link-6e2139e2f73745b5.d diff --git a/rust/.cargo/config.toml b/rust/.cargo/config.toml new file mode 100644 index 0000000..c404827 --- /dev/null +++ b/rust/.cargo/config.toml @@ -0,0 +1,8 @@ +[source.crates-io] +replace-with = "ustc" + +[source.ustc] +registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/" + +[http] +check-revoke = false diff --git a/rust/Cargo.lock b/rust/Cargo.lock new file mode 100644 index 0000000..8c1c27c --- /dev/null +++ b/rust/Cargo.lock @@ -0,0 +1,5346 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + +[[package]] +name = "accesskit" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99b76d84ee70e30a4a7e39ab9018e2b17a6a09e31084176cc7c0b2dec036ba45" +dependencies = [ + "enumn", + "serde", +] + +[[package]] +name = "accesskit_atspi_common" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5393c75d4666f580f4cac0a968bc97c36076bb536a129f28210dac54ee127ed" +dependencies = [ + "accesskit", + "accesskit_consumer", + "atspi-common", + "serde", + "thiserror 1.0.69", + "zvariant", +] + +[[package]] +name = "accesskit_consumer" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a12dc159d52233c43d9fe5415969433cbdd52c3d6e0df51bda7d447427b9986" +dependencies = [ + "accesskit", + "immutable-chunkmap", +] + +[[package]] +name = "accesskit_macos" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfc6c1ecd82053d127961ad80a8beaa6004fb851a3a5b96506d7a6bd462403f6" +dependencies = [ + "accesskit", + "accesskit_consumer", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "once_cell", +] + +[[package]] +name = "accesskit_unix" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be7f5cf6165be10a54b2655fa2e0e12b2509f38ed6fc43e11c31fdb7ee6230bb" +dependencies = [ + "accesskit", + "accesskit_atspi_common", + "async-channel", + "async-executor", + "async-task", + "atspi", + "futures-lite", + "futures-util", + "serde", + "zbus", +] + +[[package]] +name = "accesskit_windows" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "974e96c347384d9133427167fb8a58c340cb0496988dacceebdc1ed27071023b" +dependencies = [ + "accesskit", + "accesskit_consumer", + "paste", + "static_assertions", + "windows 0.58.0", + "windows-core 0.58.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aea3522719f1c44564d03e9469a8e2f3a98b3a8a880bd66d0789c6b9c4a669dd" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "raw-window-handle", + "winit", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "serde", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-activity" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +dependencies = [ + "android-properties", + "bitflags 2.11.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys 0.6.0+11769913", + "num_enum", + "thiserror 1.0.69", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "arboard" +version = "3.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" +dependencies = [ + "clipboard-win", + "log", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", + "parking_lot", + "percent-encoding", + "windows-sys 0.60.2", + "x11rb", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.1.4", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 1.1.4", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "async-signal" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 1.1.4", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atspi" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be534b16650e35237bb1ed189ba2aab86ce65e88cc84c66f4935ba38575cecbf" +dependencies = [ + "atspi-common", + "atspi-connection", + "atspi-proxies", +] + +[[package]] +name = "atspi-common" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1909ed2dc01d0a17505d89311d192518507e8a056a48148e3598fef5e7bb6ba7" +dependencies = [ + "enumflags2", + "serde", + "static_assertions", + "zbus", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "atspi-connection" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "430c5960624a4baaa511c9c0fcc2218e3b58f5dbcc47e6190cafee344b873333" +dependencies = [ + "atspi-common", + "atspi-proxies", + "futures-lite", + "zbus", +] + +[[package]] +name = "atspi-proxies" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e6c5de3e524cf967569722446bcd458d5032348554d9a17d7d72b041ab7496" +dependencies = [ + "atspi-common", + "serde", + "zbus", + "zvariant", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0481a0e032742109b1133a095184ee93d88f3dc9e0d28a5d033dc77a073f44f" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.11.0", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", +] + +[[package]] +name = "calloop" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" +dependencies = [ + "bitflags 2.11.0", + "polling", + "rustix 1.1.4", + "slab", + "tracing", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop 0.13.0", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" +dependencies = [ + "calloop 0.14.4", + "rustix 1.1.4", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.2.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "clipboard-win" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" +dependencies = [ + "error-code", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cursor-icon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.2", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.11.0", + "objc2 0.6.4", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dlib" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" +dependencies = [ + "libloading", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + +[[package]] +name = "ecolor" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775cfde491852059e386c4e1deb4aef381c617dc364184c6f6afee99b87c402b" +dependencies = [ + "bytemuck", + "emath", + "serde", +] + +[[package]] +name = "eframe" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ac2645a9bf4826eb4e91488b1f17b8eaddeef09396706b2f14066461338e24f" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "egui-wgpu", + "egui-winit", + "egui_glow", + "glow 0.14.2", + "glutin", + "glutin-winit", + "image", + "js-sys", + "log", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "parking_lot", + "percent-encoding", + "raw-window-handle", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "winapi", + "windows-sys 0.52.0", + "winit", +] + +[[package]] +name = "egui" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53eafabcce0cb2325a59a98736efe0bf060585b437763f8c476957fb274bb974" +dependencies = [ + "accesskit", + "ahash", + "emath", + "epaint", + "log", + "nohash-hasher", + "ron", + "serde", +] + +[[package]] +name = "egui-wgpu" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d00fd5d06d8405397e64a928fa0ef3934b3c30273ea7603e3dc4627b1f7a1a82" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "epaint", + "log", + "thiserror 1.0.69", + "type-map", + "web-time", + "wgpu", + "winit", +] + +[[package]] +name = "egui-winit" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a9c430f4f816340e8e8c1b20eec274186b1be6bc4c7dfc467ed50d57abc36c6" +dependencies = [ + "accesskit_winit", + "ahash", + "arboard", + "egui", + "log", + "raw-window-handle", + "smithay-clipboard", + "web-time", + "webbrowser", + "winit", +] + +[[package]] +name = "egui_glow" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e39bccc683cd43adab530d8f21a13eb91e80de10bcc38c3f1c16601b6f62b26" +dependencies = [ + "ahash", + "bytemuck", + "egui", + "glow 0.14.2", + "log", + "memoffset", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "emath" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1fe0049ce51d0fb414d029e668dd72eb30bc2b739bf34296ed97bd33df544f3" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "endi" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "env_filter" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "jiff", + "log", +] + +[[package]] +name = "epaint" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a32af8da821bd4f43f2c137e295459ee2e1661d87ca8779dfa0eaf45d870e20f" +dependencies = [ + "ab_glyph", + "ahash", + "bytemuck", + "ecolor", + "emath", + "epaint_default_fonts", + "log", + "nohash-hasher", + "parking_lot", + "serde", +] + +[[package]] +name = "epaint_default_fonts" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "483440db0b7993cf77a20314f08311dbe95675092405518c0677aa08c151a3ea" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "error-code" +version = "3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix 1.1.4", + "windows-link", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", + "wasip3", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glow" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glow" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51fa363f025f5c111e03f13eda21162faeacb6911fe8caa0c0349f9cf0c4483" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" +dependencies = [ + "bitflags 2.11.0", + "cfg_aliases 0.2.1", + "cgl", + "dispatch2", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "once_cell", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" +dependencies = [ + "cfg_aliases 0.2.1", + "glutin", + "raw-window-handle", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" +dependencies = [ + "gl_generator", + "windows-sys 0.52.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.11.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "gpu-allocator" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd4240fc91d3433d5e5b0fc5b67672d771850dc19bbee03c1381e19322803d7" +dependencies = [ + "log", + "presser", + "thiserror 1.0.69", + "winapi", + "windows 0.52.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" +dependencies = [ + "bitflags 2.11.0", + "gpu-descriptor-types", + "hashbrown 0.15.5", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "guba" +version = "0.1.0" +dependencies = [ + "chrono", + "dirs", + "eframe", + "egui", + "env_logger", + "hex", + "log", + "once_cell", + "parking_lot", + "regex", + "reqwest", + "rusqlite", + "serde", + "serde_json", + "sha2", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "h2" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "hashlink" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +dependencies = [ + "hashbrown 0.14.5", +] + +[[package]] +name = "hassle-rs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" +dependencies = [ + "bitflags 2.11.0", + "com", + "libc", + "libloading", + "thiserror 1.0.69", + "widestring", + "winapi", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.25.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" +dependencies = [ + "bytemuck", + "byteorder-lite", + "moxcms", + "num-traits", + "png", +] + +[[package]] +name = "immutable-chunkmap" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3e98b1520e49e252237edc238a39869da9f3241f2ec19dc788c1d24694d1e4" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "jiff" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3e3d65f018c6ae946ab16e80944b97096ed73c35b221d1c478a6c81d8f57940" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17c2b211d863c7fde02cbea8a3c1a439b98e109286554f2860bdded7ff83818" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libc" +version = "0.2.182" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "libredox" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +dependencies = [ + "bitflags 2.11.0", + "libc", + "redox_syscall 0.7.2", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "memmap2" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +dependencies = [ + "bitflags 2.11.0", + "block", + "core-graphics-types", + "foreign-types 0.5.0", + "log", + "objc", + "paste", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "moxcms" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "naga" +version = "22.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bd5a652b6faf21496f2cfd88fc49989c8db0825d1f6746b1a71a6ede24a63ad" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.11.0", + "cfg_aliases 0.1.1", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "rustc-hash 1.1.0", + "spirv", + "termcolor", + "thiserror 1.0.69", + "unicode-xid", +] + +[[package]] +name = "native-tls" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.11.0", + "jni-sys", + "log", + "ndk-sys 0.6.0+11769913", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.11.0", + "cfg-if", + "cfg_aliases 0.2.1", + "libc", + "memoffset", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.11.0", + "block2", + "libc", + "objc2 0.5.2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation 0.2.2", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.11.0", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.11.0", + "dispatch2", + "objc2 0.6.4", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.11.0", + "dispatch2", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.11.0", + "block2", + "dispatch", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.11.0", + "objc2 0.6.4", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.11.0", + "objc2 0.6.4", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "openssl" +version = "0.10.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +dependencies = [ + "bitflags 2.11.0", + "cfg-if", + "foreign-types 0.3.2", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "orbclient" +version = "0.3.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ad2c6bae700b7aa5d1cc30c59bdd3a1c180b09dbaea51e2ae2b8e1cf211fdd" +dependencies = [ + "libc", + "libredox", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.18", + "smallvec", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.11.0", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.1.4", + "windows-sys 0.61.2", +] + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "portable-atomic-util" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" + +[[package]] +name = "pxfm" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" +dependencies = [ + "num-traits", +] + +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "redox_syscall" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d94dd2f7cd932d4dc02cc8b2b50dfd38bd079a4e5d79198b99743d7fcf9a4b4" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64 0.21.7", + "bitflags 2.11.0", + "serde", + "serde_derive", +] + +[[package]] +name = "rusqlite" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" +dependencies = [ + "bitflags 2.11.0", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.11.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.11.0", + "errno", + "libc", + "linux-raw-sys 0.12.1", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit 0.19.2", + "tiny-skia", +] + +[[package]] +name = "security-framework" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" +dependencies = [ + "bitflags 2.11.0", + "core-foundation 0.10.1", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "slotmap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.11.0", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" +dependencies = [ + "bitflags 2.11.0", + "calloop 0.14.4", + "calloop-wayland-source 0.4.1", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 1.1.4", + "thiserror 2.0.18", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-experimental", + "wayland-protocols-misc", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226" +dependencies = [ + "libc", + "smithay-client-toolkit 0.20.0", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "system-configuration" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" +dependencies = [ + "bitflags 2.11.0", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" +dependencies = [ + "fastrand", + "getrandom 0.4.1", + "once_cell", + "rustix 1.1.4", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.49.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.10+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.9+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +dependencies = [ + "winnow", +] + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "bitflags 2.11.0", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "type-map" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" +dependencies = [ + "rustc-hash 2.1.1", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.113" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a89f4650b770e4521aa6573724e2aed4704372151bd0de9d16a3bbabb87441a" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.113" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.113" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.117", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.113" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + +[[package]] +name = "wayland-backend" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fee64194ccd96bf648f42a65a7e589547096dfa702f7cadef84347b66ad164f9" +dependencies = [ + "cc", + "downcast-rs", + "rustix 1.1.4", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e6faa537fbb6c186cb9f1d41f2f811a4120d1b57ec61f50da451a0c5122bec" +dependencies = [ + "bitflags 2.11.0", + "rustix 1.1.4", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.11.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5864c4b5b6064b06b1e8b74ead4a98a6c45a285fe7a0e784d24735f011fdb078" +dependencies = [ + "rustix 1.1.4", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baeda9ffbcfc8cd6ddaade385eaf2393bd2115a69523c735f12242353c3df4f3" +dependencies = [ + "bitflags 2.11.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-experimental" +version = "20250721.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" +dependencies = [ + "bitflags 2.11.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791c58fdeec5406aa37169dd815327d1e47f334219b523444bc26d70ceb4c34e" +dependencies = [ + "bitflags 2.11.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa98634619300a535a9a97f338aed9a5ff1e01a461943e8346ff4ae26007306b" +dependencies = [ + "bitflags 2.11.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9597cdf02cf0c34cd5823786dce6b5ae8598f05c2daf5621b6e178d4f7345f3" +dependencies = [ + "bitflags 2.11.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5423e94b6a63e68e439803a3e153a9252d5ead12fd853334e2ad33997e3889e3" +dependencies = [ + "proc-macro2", + "quick-xml 0.38.4", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6dbfc3ac5ef974c92a2235805cc0114033018ae1290a72e474aa8b28cbbdfd" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "705eceb4ce901230f8625bd1d665128056ccbe4b7408faa625eec1ba80f59a97" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f00bb839c1cf1e3036066614cbdcd035ecf215206691ea646aa3c60a24f68f2" +dependencies = [ + "core-foundation 0.10.1", + "jni", + "log", + "ndk-context", + "objc2 0.6.4", + "objc2-foundation 0.3.2", + "url", + "web-sys", +] + +[[package]] +name = "wgpu" +version = "22.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d1c4ba43f80542cf63a0a6ed3134629ae73e8ab51e4b765a67f3aa062eb433" +dependencies = [ + "arrayvec", + "cfg_aliases 0.1.1", + "document-features", + "js-sys", + "log", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "22.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0348c840d1051b8e86c3bcd31206080c5e71e5933dabd79be1ce732b0b2f089a" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.11.0", + "cfg_aliases 0.1.1", + "document-features", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 1.0.69", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6bbf4b4de8b2a83c0401d9e5ae0080a2792055f25859a02bf9be97952bbed4f" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bitflags 2.11.0", + "cfg_aliases 0.1.1", + "core-graphics-types", + "glow 0.13.1", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hassle-rs", + "js-sys", + "khronos-egl", + "libc", + "libloading", + "log", + "metal", + "naga", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 1.0.69", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winapi", +] + +[[package]] +name = "wgpu-types" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9d91f0e2c4b51434dfa6db77846f2793149d8e73f800fa2e41f52b8eac3c5d" +dependencies = [ + "bitflags 2.11.0", + "js-sys", + "web-sys", +] + +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winit" +version = "0.30.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.11.0", + "block2", + "bytemuck", + "calloop 0.13.0", + "cfg_aliases 0.2.1", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "sctk-adwaita", + "smithay-client-toolkit 0.19.2", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 1.1.4", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + +[[package]] +name = "xcursor" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" + +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.11.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "xml-rs" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zbus" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus-lockstep" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca2c5dceb099bddaade154055c926bb8ae507a18756ba1d8963fd7b51d8ed1d" +dependencies = [ + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus-lockstep-macros" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "zbus-lockstep", + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.117", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zbus_xml" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f374552b954f6abb4bd6ce979e6c9b38fb9d0cd7cc68a7d796e70c9f3a233" +dependencies = [ + "quick-xml 0.30.0", + "serde", + "static_assertions", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.8.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zvariant" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.117", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] diff --git a/rust/Cargo.toml b/rust/Cargo.toml new file mode 100644 index 0000000..72ec387 --- /dev/null +++ b/rust/Cargo.toml @@ -0,0 +1,42 @@ +[package] +name = "guba" +version = "0.1.0" +edition = "2021" +authors = ["Guba Developer"] +description = "股吧人气指示器 - 基于Rust的情感分析工具" + +[dependencies] +tokio = { version = "1", features = ["full"] } +reqwest = { version = "0.12", features = ["json"] } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +rusqlite = { version = "0.32", features = ["bundled"] } +log = "0.4" +env_logger = "0.11" +chrono = { version = "0.4", features = ["serde"] } +sha2 = "0.10" +hex = "0.4" +regex = "1.10" +thiserror = "2.0" +once_cell = "1.19" +parking_lot = "0.12" +dirs = "6.0" + +[dependencies.egui] +version = "0.29" +features = ["default", "persistence"] + +[dependencies.eframe] +version = "0.29" +default-features = false +features = ["default", "glow"] + +[build-dependencies] + +[features] +default = [] + +[profile.release] +lto = true +opt-level = "z" +strip = true diff --git a/rust/src/analyzer.rs b/rust/src/analyzer.rs new file mode 100644 index 0000000..d6e2b95 --- /dev/null +++ b/rust/src/analyzer.rs @@ -0,0 +1,182 @@ +use crate::config::LlmApiConfig; +use reqwest::Client; +use serde::{Deserialize, Serialize}; +use std::time::Duration; +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum AnalyzerError { + #[error("Request failed: {0}")] + RequestError(#[from] reqwest::Error), + #[error("API error: {0}")] + ApiError(String), + #[error("Parse error: {0}")] + ParseError(String), + #[error("No API key configured")] + NoApiKey, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct AnalysisResponse { + pub score: Option, + pub label: Option, + pub reasoning: Option, +} + +pub struct LLMAnalyzer { + config: LlmApiConfig, + client: Client, + last_result: Option, +} + +impl LLMAnalyzer { + pub fn new(config: LlmApiConfig) -> Self { + let client = Client::builder() + .timeout(Duration::from_secs(config.timeout)) + .build() + .expect("Failed to create HTTP client"); + + Self { + config, + client, + last_result: None, + } + } + + pub fn analyze(&mut self, content: &str) -> Result<(i32, String), AnalyzerError> { + if self.config.api_key.is_empty() { + return Ok((50, "未配置API".to_string())); + } + + let prompt = self.build_prompt(content); + let response = self.send_request(&prompt)?; + + if let Some(score) = response.score { + let label = response.label.unwrap_or_else(|| self.get_label(score)); + self.last_result = Some(response); + Ok((score, label)) + } else { + Ok((50, "无法判断".to_string())) + } + } + + fn build_prompt(&self, content: &str) -> String { + format!( + r#"你是一个专业的股市情绪分析师。请分析以下股评内容的情绪倾向,并给出0-100分的情绪评分。 + +评分标准: +- 0-30分:极度悲观(股灾、暴跌、绝望等) +- 30-39分:悲观(下跌、风险、不看好等) +- 40-49分:偏悲观(谨慎、担忧等) +- 50分:中性(观望、震荡等) +- 51-60分:偏乐观(关注、期待等) +- 60-69分:乐观(看好、上涨等) +- 70-100分:极度乐观(暴涨、牛市、必涨等) + +请直接返回JSON格式的分析结果,不要其他内容: +{{"score": 评分数字, "label": "情绪标签", "reasoning": "简短分析理由(20字内)"}} + +股评内容:{} +"#, + content + ) + } + + fn send_request(&self, prompt: &str) -> Result { + let url = format!("{}/chat/completions", self.config.base_url.trim_end_matches('/')); + + let body = serde_json::json!({ + "model": self.config.model, + "messages": [ + {"role": "system", "content": "你是一个专业的股市情绪分析师。请严格按照JSON格式返回结果。"}, + {"role": "user", "content": prompt} + ], + "temperature": 0.3, + "max_tokens": 256 + }); + + let response = self.client + .post(&url) + .header("Content-Type", "application/json") + .header("Authorization", format!("Bearer {}", self.config.api_key)) + .json(&body) + .send()?; + + let status = response.status(); + if !status.is_success() { + return Err(AnalyzerError::ApiError(format!("HTTP {}", status))); + } + + let result: serde_json::Value = response.json()?; + + if let Some(content) = result.get("choices") + .and_then(|c| c.as_array()) + .and_then(|a| a.first()) + .and_then(|c| c.get("message")) + .and_then(|m| m.get("content")) + .and_then(|c| c.as_str()) + { + self.parse_response(content) + } else { + Err(AnalyzerError::ParseError("Invalid response format".to_string())) + } + } + + fn parse_response(&self, content: &str) -> Result { + let content = content.trim(); + + let json_str = if content.contains('{') && content.contains('}') { + let start = content.find('{').unwrap_or(0); + let end = content.rfind('}').map(|i| i + 1).unwrap_or(content.len()); + &content[start..end] + } else { + content + }; + + let parsed: serde_json::Value = serde_json::from_str(json_str) + .map_err(|e| AnalyzerError::ParseError(e.to_string()))?; + + let score = parsed.get("score") + .and_then(|s| s.as_i64()) + .map(|s| s as i32); + + let label = parsed.get("label") + .and_then(|l| l.as_str()) + .map(|s| s.to_string()); + + let reasoning = parsed.get("reasoning") + .and_then(|r| r.as_str()) + .map(|s| s.to_string()); + + Ok(AnalysisResponse { + score, + label, + reasoning, + }) + } + + fn get_label(&self, score: i32) -> String { + match score { + 0..=29 => "极度悲观".to_string(), + 30..=39 => "悲观".to_string(), + 40..=49 => "偏悲观".to_string(), + 50..=50 => "中性".to_string(), + 51..=60 => "偏乐观".to_string(), + 61..=69 => "乐观".to_string(), + 70..=100 => "极度乐观".to_string(), + _ => "无法判断".to_string(), + } + } + + pub fn get_last_result(&self) -> Option<&AnalysisResponse> { + self.last_result.as_ref() + } + + pub fn update_config(&mut self, config: LlmApiConfig) { + self.config = config; + self.client = Client::builder() + .timeout(Duration::from_secs(self.config.timeout)) + .build() + .expect("Failed to create HTTP client"); + } +} diff --git a/rust/src/config.rs b/rust/src/config.rs new file mode 100644 index 0000000..4d08517 --- /dev/null +++ b/rust/src/config.rs @@ -0,0 +1,207 @@ +use serde::{Deserialize, Serialize}; +use std::fs; +use std::path::PathBuf; +use std::sync::Arc; +use parking_lot::RwLock; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct LlmApiConfig { + pub base_url: String, + pub api_key: String, + pub model: String, + pub timeout: u64, + #[serde(default = "default_retry_times")] + pub retry_times: u32, +} + +fn default_retry_times() -> u32 { 3 } + +impl Default for LlmApiConfig { + fn default() -> Self { + Self { + base_url: "https://integrate.api.nvidia.com/v1".to_string(), + api_key: "".to_string(), + model: "deepseek-ai/deepseek-r1".to_string(), + timeout: 120, + retry_times: 3, + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct SpiderConfig { + pub target_url: String, + pub xpath: String, + #[serde(default = "default_user_agent")] + pub user_agent: String, + #[serde(default = "default_fetch_interval")] + pub fetch_interval: u64, + #[serde(default = "default_retry_times")] + pub retry_times: u32, + #[serde(default = "default_retry_interval")] + pub retry_interval: u64, +} + +fn default_user_agent() -> String { + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36".to_string() +} + +fn default_fetch_interval() -> u64 { 15 } +fn default_retry_interval() -> u64 { 5 } + +impl Default for SpiderConfig { + fn default() -> Self { + Self { + target_url: "".to_string(), + xpath: "".to_string(), + user_agent: default_user_agent(), + fetch_interval: 15, + retry_times: 3, + retry_interval: 5, + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct UiConfig { + #[serde(default = "default_opacity")] + pub opacity: f32, + #[serde(default = "default_is_on_top")] + pub is_on_top: bool, + pub thresholds: ThresholdConfig, +} + +fn default_opacity() -> f32 { 0.9 } +fn default_is_on_top() -> bool { true } + +impl Default for UiConfig { + fn default() -> Self { + Self { + opacity: 0.9, + is_on_top: true, + thresholds: ThresholdConfig::default(), + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ThresholdConfig { + #[serde(default = "default_cold")] + pub cold: i32, + #[serde(default = "default_warm")] + pub warm: i32, +} + +fn default_cold() -> i32 { 30 } +fn default_warm() -> i32 { 70 } + +impl Default for ThresholdConfig { + fn default() -> Self { + Self { + cold: 30, + warm: 70, + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct DatabaseConfig { + #[serde(default = "default_db_path")] + pub path: String, +} + +fn default_db_path() -> String { "guba.db".to_string() } + +impl Default for DatabaseConfig { + fn default() -> Self { + Self { + path: "guba.db".to_string(), + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct LoggingConfig { + #[serde(default = "default_log_level")] + pub level: String, + #[serde(default = "default_log_path")] + pub path: String, +} + +fn default_log_level() -> String { "INFO".to_string() } +fn default_log_path() -> String { "guba.log".to_string() } + +impl Default for LoggingConfig { + fn default() -> Self { + Self { + level: "INFO".to_string(), + path: "guba.log".to_string(), + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Config { + pub llm_api: LlmApiConfig, + pub spider: SpiderConfig, + pub ui: UiConfig, + pub database: DatabaseConfig, + pub logging: LoggingConfig, +} + +impl Default for Config { + fn default() -> Self { + Self { + llm_api: LlmApiConfig::default(), + spider: SpiderConfig::default(), + ui: UiConfig::default(), + database: DatabaseConfig::default(), + logging: LoggingConfig::default(), + } + } +} + +pub struct ConfigManager { + config: Arc>, + config_path: PathBuf, +} + +impl ConfigManager { + pub fn new(config_file: &str) -> Self { + let config_path = PathBuf::from(config_file); + let config = if config_path.exists() { + match fs::read_to_string(&config_path) { + Ok(content) => { + serde_json::from_str(&content).unwrap_or_default() + } + Err(_) => Config::default(), + } + } else { + Config::default() + }; + + Self { + config: Arc::new(RwLock::new(config)), + config_path, + } + } + + pub fn get(&self) -> Config { + self.config.read().clone() + } + + pub fn save(&self) -> Result<(), String> { + let config = self.config.read(); + let content = serde_json::to_string_pretty(&*config) + .map_err(|e| e.to_string())?; + fs::write(&self.config_path, content).map_err(|e| e.to_string()) + } + + pub fn update(&self, f: F) + where + F: FnOnce(&mut Config), + { + let mut config = self.config.write(); + f(&mut config); + } +} diff --git a/rust/src/database.rs b/rust/src/database.rs new file mode 100644 index 0000000..90d7af8 --- /dev/null +++ b/rust/src/database.rs @@ -0,0 +1,223 @@ +use chrono::{DateTime, Utc}; +use rusqlite::{params, Connection, Result as SqlResult}; +use serde::{Deserialize, Serialize}; +use sha2::{Digest, Sha256}; +use std::path::Path; +use std::sync::Arc; +use parking_lot::Mutex; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Comment { + pub id: i64, + pub content: String, + pub hash: String, + pub created_at: String, + pub analyzed: bool, + pub score: Option, + pub label: Option, + pub analyzed_at: Option, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct AnalysisResult { + pub id: i64, + pub comment_id: i64, + pub score: i32, + pub label: String, + pub analyzed_at: String, +} + +pub struct DatabaseManager { + conn: Arc>, +} + +impl DatabaseManager { + pub fn new(db_path: &str) -> SqlResult { + let conn = Connection::open(Path::new(db_path))?; + let manager = Self { + conn: Arc::new(Mutex::new(conn)), + }; + manager.init_tables()?; + Ok(manager) + } + + fn init_tables(&self) -> SqlResult<()> { + let conn = self.conn.lock(); + conn.execute( + "CREATE TABLE IF NOT EXISTS comments ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + content TEXT NOT NULL, + hash TEXT NOT NULL UNIQUE, + created_at TEXT NOT NULL, + analyzed INTEGER DEFAULT 0, + score INTEGER, + label TEXT, + analyzed_at TEXT + )", + [], + )?; + + conn.execute( + "CREATE INDEX IF NOT EXISTS idx_comments_hash ON comments(hash)", + [], + )?; + + conn.execute( + "CREATE INDEX IF NOT EXISTS idx_comments_analyzed ON comments(analyzed)", + [], + )?; + + conn.execute( + "CREATE TABLE IF NOT EXISTS analysis_history ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + comment_id INTEGER NOT NULL, + score INTEGER NOT NULL, + label TEXT NOT NULL, + analyzed_at TEXT NOT NULL, + FOREIGN KEY (comment_id) REFERENCES comments(id) + )", + [], + )?; + + conn.execute( + "CREATE INDEX IF NOT EXISTS idx_analysis_comment ON analysis_history(comment_id)", + [], + )?; + + Ok(()) + } + + pub fn add_comment(&self, content: &str) -> SqlResult> { + let hash = self.compute_hash(content); + let created_at = Utc::now().format("%Y-%m-%d %H:%M:%S").to_string(); + + let conn = self.conn.lock(); + + let existing: Option = conn + .query_row( + "SELECT id FROM comments WHERE hash = ?", + [&hash], + |row| row.get(0), + ) + .ok(); + + if existing.is_some() { + return Ok(None); + } + + conn.execute( + "INSERT INTO comments (content, hash, created_at) VALUES (?, ?, ?)", + params![content, hash, created_at], + )?; + + let id = conn.last_insert_rowid(); + Ok(Some(id)) + } + + pub fn add_comments_batch(&self, comments: &[String]) -> SqlResult> { + let mut new_ids = Vec::new(); + for content in comments { + if let Some(id) = self.add_comment(content)? { + new_ids.push(id); + } + } + Ok(new_ids) + } + + pub fn get_unanalyzed_comments(&self, limit: usize) -> SqlResult> { + let conn = self.conn.lock(); + let mut stmt = conn.prepare( + "SELECT id, content, hash, created_at, analyzed, score, label, analyzed_at + FROM comments WHERE analyzed = 0 LIMIT ?", + )?; + + let comments = stmt + .query_map([limit], |row| { + Ok(Comment { + id: row.get(0)?, + content: row.get(1)?, + hash: row.get(2)?, + created_at: row.get(3)?, + analyzed: row.get::<_, i32>(4)? != 0, + score: row.get(5)?, + label: row.get(6)?, + analyzed_at: row.get(7)?, + }) + })? + .collect::, _>>()?; + + Ok(comments) + } + + pub fn mark_analyzed(&self, comment_id: i64, score: i32, label: &str) -> SqlResult<()> { + let analyzed_at = Utc::now().format("%Y-%m-%d %H:%M:%S").to_string(); + + let conn = self.conn.lock(); + + conn.execute( + "UPDATE comments SET analyzed = 1, score = ?, label = ?, analyzed_at = ? WHERE id = ?", + params![score, label, analyzed_at, comment_id], + )?; + + conn.execute( + "INSERT INTO analysis_history (comment_id, score, label, analyzed_at) VALUES (?, ?, ?, ?)", + params![comment_id, score, label, analyzed_at], + )?; + + Ok(()) + } + + pub fn get_all_scores(&self, limit: usize) -> SqlResult> { + let conn = self.conn.lock(); + let mut stmt = conn.prepare( + "SELECT score FROM comments WHERE score IS NOT NULL ORDER BY analyzed_at DESC LIMIT ?", + )?; + + let scores = stmt + .query_map([limit], |row| row.get(0))? + .collect::, _>>()?; + + Ok(scores) + } + + pub fn get_statistics(&self) -> SqlResult { + let conn = self.conn.lock(); + + let total: i64 = conn.query_row( + "SELECT COUNT(*) FROM comments", + [], + |row| row.get(0), + )?; + + let analyzed: i64 = conn.query_row( + "SELECT COUNT(*) FROM comments WHERE analyzed = 1", + [], + |row| row.get(0), + )?; + + let avg_score: Option = conn.query_row( + "SELECT AVG(score) FROM comments WHERE score IS NOT NULL", + [], + |row| row.get(0), + ).ok(); + + Ok(Statistics { + total_comments: total as usize, + analyzed_comments: analyzed as usize, + average_score: avg_score.map(|s| s as i32), + }) + } + + fn compute_hash(&self, content: &str) -> String { + let mut hasher = Sha256::new(); + hasher.update(content.as_bytes()); + hex::encode(hasher.finalize()) + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Statistics { + pub total_comments: usize, + pub analyzed_comments: usize, + pub average_score: Option, +} diff --git a/rust/src/lib.rs b/rust/src/lib.rs new file mode 100644 index 0000000..6c81849 --- /dev/null +++ b/rust/src/lib.rs @@ -0,0 +1,9 @@ +pub mod config; +pub mod database; +pub mod spider; +pub mod analyzer; + +pub use config::ConfigManager; +pub use database::DatabaseManager; +pub use spider::SpiderManager; +pub use analyzer::LLMAnalyzer; diff --git a/rust/src/main.rs b/rust/src/main.rs new file mode 100644 index 0000000..a9fd1e0 --- /dev/null +++ b/rust/src/main.rs @@ -0,0 +1,276 @@ +mod config; +mod database; +mod spider; +mod analyzer; +mod ui; + +use config::{Config, ConfigManager}; +use database::DatabaseManager; +use spider::SpiderManager; +use analyzer::LLMAnalyzer; +use ui::{AppState, draw_indicator, draw_waveform, get_score_label}; + +use eframe::egui; +use std::sync::Arc; +use std::thread; +use std::time::Duration; + +struct GubaApp { + config_manager: ConfigManager, + db: DatabaseManager, + spider: SpiderManager, + analyzer: LLMAnalyzer, + state: AppState, + stock_data: Arc>>, + config_open: bool, +} + +impl GubaApp { + fn new(cc: &eframe::CreationContext<'_>, config_manager: ConfigManager) -> Self { + let config = config_manager.get(); + + let db = DatabaseManager::new(&config.database.path) + .expect("Failed to initialize database"); + + let spider = SpiderManager::new(config.spider.clone()); + + let mut analyzer = LLMAnalyzer::new(config.llm_api.clone()); + + let state = AppState::new(); + let stock_data = Arc::new(parking_lot::Mutex::new(Vec::new())); + + let db_clone = Arc::new(database::DatabaseManager::new(&config.database.path) + .expect("Failed to create database clone")); + let spider_clone = Arc::new(spider::SpiderManager::new(config.spider.clone())); + let mut analyzer_clone = analyzer::LLMAnalyzer::new(config.llm_api.clone()); + + let state_clone = Arc::new(ui::AppState::new()); + let stock_data_clone = stock_data.clone(); + + thread::spawn(move || { + run_background_task(db_clone, spider_clone, &mut analyzer_clone, state_clone, stock_data_clone); + }); + + Self { + config_manager, + db, + spider, + analyzer, + state, + stock_data, + config_open: false, + } + } +} + +fn run_background_task( + db: Arc, + spider: Arc, + analyzer: &mut LLMAnalyzer, + state: Arc, + stock_data: Arc>>, +) { + let mut no_content_count = 0i32; + let mut fetch_interval = 15u64; + + loop { + if !state.running.load(Ordering::SeqCst) { + thread::sleep(Duration::from_secs(1)); + continue; + } + + { + let mut status = state.status_text.lock(); + *status = "正在爬取评论...".to_string(); + } + + let comments = match spider.fetch() { + Ok(c) => c, + Err(e) => { + let mut status = state.status_text.lock(); + *status = format!("爬取失败: {}", e); + thread::sleep(Duration::from_secs(5)); + continue; + } + }; + + if comments.is_empty() { + no_content_count += 1; + let interval = fetch_interval * (1 + no_content_count.min(4) as u64); + let mut status = state.status_text.lock(); + *status = format!("无新内容,{}秒后重试", interval); + thread::sleep(Duration::from_secs(interval)); + continue; + } + + no_content_count = 0; + state.fetch_count.fetch_add(1, Ordering::SeqCst); + + { + let mut status = state.status_text.lock(); + *status = format!("获取到 {} 条评论", comments.len()); + } + + match db.add_comments_batch(&comments) { + Ok(new_ids) if !new_ids.is_empty() => { + let thresholds = { + let config = ConfigManager::new("config.json"); + config.get().ui.thresholds + }; + + for id in &new_ids { + if let Ok(unanalyzed) = db.get_unanalyzed_comments(1) { + if let Some(comment) = unanalyzed.first() { + match analyzer.analyze(&comment.content) { + Ok((score, label)) => { + let _ = db.mark_analyzed(comment.id, score, &label); + state.analysis_count.fetch_add(1, Ordering::SeqCst); + + let scores = db.get_all_scores(100).unwrap_or_default(); + if !scores.is_empty() { + let avg: i32 = scores.iter().sum::() / scores.len() as i32; + state.current_score.store(avg, Ordering::SeqCst); + } + + let mut status = state.status_text.lock(); + *status = format!("分析完成: {}分 - {}", score, label); + } + Err(e) => { + let _ = db.mark_analyzed(comment.id, 50, "分析异常"); + let mut status = state.status_text.lock(); + *status = format!("分析失败: {}", e); + } + } + thread::sleep(Duration::from_secs(1)); + } + } + } + } + _ => {} + } + + if let Ok(data) = spider.fetch_sse_stock_data() { + if data.value > 0.0 { + let mut stocks = stock_data.lock(); + stocks.push((data.time.clone(), data.value)); + if stocks.len() > 100 { + stocks.remove(0); + } + } + } + + let interval = fetch_interval * (1 + no_content_count.min(4) as u64); + thread::sleep(Duration::from_secs(interval)); + } +} + +impl eframe::App for GubaApp { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + egui::CentralPanel::default().show(ctx, |ui| { + ui.heading("股吧人气指示器"); + ui.horizontal(|ui| { + if ui.button(if self.state.running.load(Ordering::SeqCst) { "停止" } else { "开始" }).clicked() { + let running = self.state.running.load(Ordering::SeqCst); + self.state.running.store(!running, Ordering::SeqCst); + } + + if ui.button("刷新").clicked() { + self.state.no_content_count.store(0, Ordering::SeqCst); + } + + if ui.button("配置").clicked() { + self.config_open = true; + } + }); + + ui.separator(); + + let config = self.config_manager.get(); + let score = self.state.current_score.load(Ordering::SeqCst); + let cold = config.ui.thresholds.cold; + let warm = config.ui.thresholds.warm; + + ui.horizontal(|ui| { + ui.label("当前情绪:"); + draw_indicator(ui, score, cold, warm); + }); + + ui.separator(); + + ui.label("上证指数走势:"); + let stock_data = self.stock_data.lock(); + let data: Vec<(String, f64)> = stock_data.clone(); + drop(stock_data); + + egui::ScrollArea::vertical().max_height(200.0).show(ui, |ui| { + draw_waveform(ui, &data, ui.available_width(), 150.0); + }); + + ui.separator(); + + ui.horizontal(|ui| { + ui.label("状态: "); + let status = self.state.status_text.lock(); + ui.label(status.clone()); + }); + + ui.horizontal(|ui| { + ui.label(format!("爬取次数: {}", self.state.fetch_count.load(Ordering::SeqCst))); + ui.label(format!("分析次数: {}", self.state.analysis_count.load(Ordering::SeqCst))); + }); + }); + + if self.config_open { + egui::Window::new("配置").open(&mut self.config_open).show(ctx, |ui| { + let config = self.config_manager.get(); + + ui.group(|ui| { + ui.label("API配置:"); + ui.text_edit_singleline(&mut self.config_manager.get().llm_api.api_key.clone()); + }); + + ui.group(|ui| { + ui.label("爬虫配置:"); + ui.text_edit_singleline(&mut self.config_manager.get().spider.target_url.clone()); + }); + + ui.group(|ui| { + ui.label("阈值设置:"); + ui.horizontal(|ui| { + ui.label("冷阈值:"); + ui.add(egui::DragValue::new(&mut self.config_manager.get().ui.thresholds.cold).range(0..=100)); + ui.label("热阈值:"); + ui.add(egui::DragValue::new(&mut self.config_manager.get().ui.thresholds.warm).range(0..=100)); + }); + }); + + if ui.button("保存").clicked() { + let _ = self.config_manager.save(); + } + }); + } + } +} + +fn main() -> eframe::Result<()> { + let config_manager = ConfigManager::new("config.json"); + + env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")) + .init(); + + log::info!("股吧人气指示器启动"); + + let options = eframe::NativeOptions { + viewport: egui::ViewportBuilder::default() + .with_inner_size([400.0, 600.0]) + .with_min_inner_size([300.0, 400.0]) + .with_resizable(true), + ..Default::default() + }; + + eframe::run_native( + "股吧人气指示器", + options, + Box::new(|cc| Ok(Box::new(GubaApp::new(cc, config_manager)))), + ) +} diff --git a/rust/src/spider.rs b/rust/src/spider.rs new file mode 100644 index 0000000..b0f2934 --- /dev/null +++ b/rust/src/spider.rs @@ -0,0 +1,120 @@ +use crate::config::SpiderConfig; +use regex::Regex; +use reqwest::Client; +use serde::{Deserialize, Serialize}; +use std::time::Duration; +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum SpiderError { + #[error("Request failed: {0}")] + RequestError(#[from] reqwest::Error), + #[error("Parse error: {0}")] + ParseError(String), + #[error("No comments found")] + NoComments, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct StockData { + pub time: String, + pub value: f64, +} + +pub struct SpiderManager { + config: SpiderConfig, + client: Client, +} + +impl SpiderManager { + pub fn new(config: SpiderConfig) -> Self { + let client = Client::builder() + .user_agent(&config.user_agent) + .timeout(Duration::from_secs(30)) + .build() + .expect("Failed to create HTTP client"); + + Self { config, client } + } + + pub fn fetch(&self) -> Result, SpiderError> { + if self.config.target_url.is_empty() { + return Ok(Vec::new()); + } + + let response = self.client.get(&self.config.target_url).send()?; + let html = response.text()?; + + self.parse_comments(&html) + } + + fn parse_comments(&self, html: &str) -> Result, SpiderError> { + if self.config.xpath.is_empty() { + return Err(SpiderError::ParseError("XPath is empty".to_string())); + } + + let mut comments = Vec::new(); + + if let Ok(re) = Regex::new(r#"<[^>]*>([^<]+)]*>"#) { + for cap in re.captures_iter(html) { + if let Some(content) = cap.get(1) { + let text = content.as_str().trim().to_string(); + if !text.is_empty() && text.len() > 5 { + comments.push(text); + } + } + } + } + + if comments.is_empty() { + if let Ok(re) = Regex::new(r#"[\u4e00-\u9fa5]{4,}"#) { + for mat in re.find_iter(html) { + let text = mat.as_str().to_string(); + if !comments.contains(&text) { + comments.push(text); + } + } + } + } + + Ok(comments) + } + + pub fn fetch_sse_stock_data(&self) -> Result { + let url = "https://hq.sinajs.cn/list=s_sh000001"; + + let response = self.client.get(url) + .header("Referer", "https://finance.sina.com.cn/") + .send()?; + + let text = response.text()?; + + if let Ok(re) = Regex::new(r#"="([^"]+)""#) { + if let Some(cap) = re.captures(&text) { + if let Some(data) = cap.get(1) { + let parts: Vec<&str> = data.as_str().split(',').collect(); + if parts.len() >= 32 { + let value: f64 = parts[1].parse().unwrap_or(0.0); + let time = parts[31].to_string(); + return Ok(StockData { time, value }); + } + } + } + } + + let now = chrono::Local::now(); + Ok(StockData { + time: now.format("%H:%M:%S").to_string(), + value: 0.0, + }) + } + + pub fn update_config(&mut self, config: SpiderConfig) { + self.config = config; + self.client = Client::builder() + .user_agent(&self.config.user_agent) + .timeout(Duration::from_secs(30)) + .build() + .expect("Failed to create HTTP client"); + } +} diff --git a/rust/src/ui.rs b/rust/src/ui.rs new file mode 100644 index 0000000..bcdb116 --- /dev/null +++ b/rust/src/ui.rs @@ -0,0 +1,125 @@ +use egui::{Color32, RichText, Stroke, Vec2}; +use std::sync::atomic::{AtomicBool, AtomicI32, Ordering}; +use std::sync::Arc; + +pub struct AppState { + pub running: Arc, + pub current_score: Arc, + pub status_text: Arc>, + pub fetch_count: Arc, + pub analysis_count: Arc, +} + +impl AppState { + pub fn new() -> Self { + Self { + running: Arc::new(AtomicBool::new(false)), + current_score: Arc::new(AtomicI32::new(50)), + status_text: Arc::new(parking_lot::Mutex::new("就绪".to_string())), + fetch_count: Arc::new(AtomicI32::new(0)), + analysis_count: Arc::new(AtomicI32::new(0)), + } + } +} + +impl Default for AppState { + fn default() -> Self { + Self::new() + } +} + +pub fn get_score_color(score: i32) -> Color32 { + match score { + 0..=30 => Color32::from_rgb(0, 100, 200), + 31..=50 => Color32::from_rgb(100, 200, 100), + 51..=70 => Color32::from_rgb(255, 200, 0), + 71..=100 => Color32::from_rgb(255, 50, 50), + _ => Color32::GRAY, + } +} + +pub fn get_score_label(score: i32, cold: i32, warm: i32) -> &'static str { + if score < cold { + "看跌" + } else if score > warm { + "看涨" + } else { + "中性" + } +} + +pub fn draw_indicator(ui: &mut egui::Ui, score: i32, cold: i32, warm: i32) { + let color = get_score_color(score); + let label = get_score_label(score, cold, warm); + let size = Vec2::new(120.0, 120.0); + + let (rect, _response) = ui.allocate_exact_size(size, egui::Sense::hover()); + + let painter = ui.painter(); + + painter.circle_filled(rect.center(), 55.0, Color32::from_rgba_unmultiplied(30, 30, 30, 200)); + painter.circle_stroke(rect.center(), 55.0, Stroke::new(3.0, color)); + + let inner_radius = 40.0; + let angle = (score as f32 / 100.0) * std::f32::consts::TAU - std::f32::consts::FRAC_PI_2; + let indicator_pos = rect.center() + Vec2::new( + angle.cos() * inner_radius, + angle.sin() * inner_radius, + ); + painter.circle_filled(indicator_pos, 8.0, color); + + let text = RichText::new(format!("{}", score)) + .heading() + .size(36.0) + .color(color); + painter.text( + rect.center() - Vec2::new(0.0, 10.0), + egui::Align2::CENTER_CENTER, + text, + ); + + let label_text = RichText::new(label).size(16.0).color(Color32::WHITE); + painter.text( + rect.center() + Vec2::new(0.0, 25.0), + egui::Align2::CENTER_CENTER, + label_text, + ); +} + +pub fn draw_waveform(ui: &mut egui::Ui, data: &[(String, f64)], width: f32, height: f32) { + let rect = ui.available_rect_before_wrap(); + let painter = ui.painter(); + + painter.rect_filled(rect, 0.0, Color32::from_rgba_unmultiplied(20, 20, 30, 180)); + painter.rect_stroke(rect, 0.0, Stroke::new(1.0, Color32::GRAY)); + + if data.is_empty() { + let text = RichText::new("暂无数据").small().color(Color32::GRAY); + painter.text(rect.center(), egui::Align2::CENTER_CENTER, text); + return; + } + + let values: Vec = data.iter().map(|(_, v)| *v).collect(); + let min_val = values.iter().cloned().fold(f64::INFINITY, f64::min); + let max_val = values.iter().cloned().fold(f64::NEG_INFINITY, f64::max); + let range = if (max_val - min_val).abs() < 0.01 { 1.0 } else { max_val - min_val }; + + let padding = 10.0; + let draw_width = rect.width() - padding * 2.0; + let draw_height = rect.height() - padding * 2.0; + + let step_x = if data.len() > 1 { draw_width / (data.len() - 1) as f32 } else { 0.0 }; + + for i in 0..data.len().saturating_sub(1) { + let x1 = rect.min.x + padding + (i as f32) * step_x; + let x2 = rect.min.x + padding + ((i + 1) as f32) * step_x; + + let y1 = rect.max.y - padding - ((values[i] - min_val) / range * draw_height as f64) as f32; + let y2 = rect.max.y - padding - ((values[i + 1] - min_val) / range * draw_height as f64) as f32; + + painter.line_segment( + [egui::pos2(x1, y1), egui::pos2(x2, y2)], + Stroke::new(2.0, Color32::from_rgb(0, 150, 255)), + ); + } +} diff --git a/rust/target/.rustc_info.json b/rust/target/.rustc_info.json new file mode 100644 index 0000000..c74335a --- /dev/null +++ b/rust/target/.rustc_info.json @@ -0,0 +1 @@ +{"rustc_fingerprint":15274735761647741548,"outputs":{"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\dxzq\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""},"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.93.1 (01f6ddf75 2026-02-11)\nbinary: rustc\ncommit-hash: 01f6ddf7588f42ae2d7eb0a2f21d44e8e96674cf\ncommit-date: 2026-02-11\nhost: x86_64-pc-windows-msvc\nrelease: 1.93.1\nLLVM version: 21.1.8\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/rust/target/CACHEDIR.TAG b/rust/target/CACHEDIR.TAG new file mode 100644 index 0000000..20d7c31 --- /dev/null +++ b/rust/target/CACHEDIR.TAG @@ -0,0 +1,3 @@ +Signature: 8a477f597d28d172789f06886806bc55 +# This file is a cache directory tag created by cargo. +# For information about cache directory tags see https://bford.info/cachedir/ diff --git a/rust/target/release/.cargo-lock b/rust/target/release/.cargo-lock new file mode 100644 index 0000000..e69de29 diff --git a/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/dep-lib-cfg_if b/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/dep-lib-cfg_if new file mode 100644 index 0000000000000000000000000000000000000000..ec3cb8bfd28046e47ad4528d5b57859bc05b62f2 GIT binary patch literal 14 QcmZQ%U|{&q2qeG&016uc0ssI2 literal 0 HcmV?d00001 diff --git a/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/invoked.timestamp b/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/lib-cfg_if b/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/lib-cfg_if new file mode 100644 index 0000000..fb28c75 --- /dev/null +++ b/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/lib-cfg_if @@ -0,0 +1 @@ +b60a5906b2002723 \ No newline at end of file diff --git a/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/lib-cfg_if.json b/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/lib-cfg_if.json new file mode 100644 index 0000000..399df8f --- /dev/null +++ b/rust/target/release/.fingerprint/cfg-if-d2d7e488c9dc3d69/lib-cfg_if.json @@ -0,0 +1 @@ +{"rustc":8323788817864214825,"features":"[]","declared_features":"[\"core\", \"rustc-dep-of-std\"]","target":13840298032947503755,"profile":3660878992414372870,"path":5157919149803396374,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\cfg-if-d2d7e488c9dc3d69\\dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/release/.fingerprint/proc-macro2-b2a65311b39f6ce5/invoked.timestamp b/rust/target/release/.fingerprint/proc-macro2-b2a65311b39f6ce5/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/rust/target/release/.fingerprint/proc-macro2-b2a65311b39f6ce5/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/rust/target/release/.fingerprint/proc-macro2-b2a65311b39f6ce5/output-build-script-build-script-build b/rust/target/release/.fingerprint/proc-macro2-b2a65311b39f6ce5/output-build-script-build-script-build new file mode 100644 index 0000000..bb8fc2a --- /dev/null +++ b/rust/target/release/.fingerprint/proc-macro2-b2a65311b39f6ce5/output-build-script-build-script-build @@ -0,0 +1,5 @@ +{"$message_type":"diagnostic","message":"linker `link.exe` not found","code":null,"level":"error","spans":[],"children":[{"message":"program not found","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m\u001b[97m: linker `link.exe` not found\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: program not found\n\n"} +{"$message_type":"diagnostic","message":"the msvc targets depend on the msvc linker but `link.exe` was not found","code":null,"level":"note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[92mnote\u001b[0m\u001b[1m\u001b[97m: the msvc targets depend on the msvc linker but `link.exe` was not found\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"please ensure that Visual Studio 2017 or later, or Build Tools for Visual Studio were installed with the Visual C++ option.","code":null,"level":"note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[92mnote\u001b[0m\u001b[1m\u001b[97m: please ensure that Visual Studio 2017 or later, or Build Tools for Visual Studio were installed with the Visual C++ option.\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"VS Code is a different product, and is not sufficient.","code":null,"level":"note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[92mnote\u001b[0m\u001b[1m\u001b[97m: VS Code is a different product, and is not sufficient.\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"aborting due to 1 previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m\u001b[97m: aborting due to 1 previous error\u001b[0m\n\n"} diff --git a/rust/target/release/.fingerprint/quote-848bfe90599d73ba/invoked.timestamp b/rust/target/release/.fingerprint/quote-848bfe90599d73ba/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/rust/target/release/.fingerprint/quote-848bfe90599d73ba/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/rust/target/release/.fingerprint/quote-848bfe90599d73ba/output-build-script-build-script-build b/rust/target/release/.fingerprint/quote-848bfe90599d73ba/output-build-script-build-script-build new file mode 100644 index 0000000..bb8fc2a --- /dev/null +++ b/rust/target/release/.fingerprint/quote-848bfe90599d73ba/output-build-script-build-script-build @@ -0,0 +1,5 @@ +{"$message_type":"diagnostic","message":"linker `link.exe` not found","code":null,"level":"error","spans":[],"children":[{"message":"program not found","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m\u001b[97m: linker `link.exe` not found\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: program not found\n\n"} +{"$message_type":"diagnostic","message":"the msvc targets depend on the msvc linker but `link.exe` was not found","code":null,"level":"note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[92mnote\u001b[0m\u001b[1m\u001b[97m: the msvc targets depend on the msvc linker but `link.exe` was not found\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"please ensure that Visual Studio 2017 or later, or Build Tools for Visual Studio were installed with the Visual C++ option.","code":null,"level":"note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[92mnote\u001b[0m\u001b[1m\u001b[97m: please ensure that Visual Studio 2017 or later, or Build Tools for Visual Studio were installed with the Visual C++ option.\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"VS Code is a different product, and is not sufficient.","code":null,"level":"note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[92mnote\u001b[0m\u001b[1m\u001b[97m: VS Code is a different product, and is not sufficient.\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"aborting due to 1 previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m\u001b[97m: aborting due to 1 previous error\u001b[0m\n\n"} diff --git a/rust/target/release/.fingerprint/serde_core-7fe007e4c02f146f/invoked.timestamp b/rust/target/release/.fingerprint/serde_core-7fe007e4c02f146f/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/rust/target/release/.fingerprint/serde_core-7fe007e4c02f146f/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/rust/target/release/.fingerprint/serde_core-7fe007e4c02f146f/output-build-script-build-script-build b/rust/target/release/.fingerprint/serde_core-7fe007e4c02f146f/output-build-script-build-script-build new file mode 100644 index 0000000..bb8fc2a --- /dev/null +++ b/rust/target/release/.fingerprint/serde_core-7fe007e4c02f146f/output-build-script-build-script-build @@ -0,0 +1,5 @@ +{"$message_type":"diagnostic","message":"linker `link.exe` not found","code":null,"level":"error","spans":[],"children":[{"message":"program not found","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m\u001b[97m: linker `link.exe` not found\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: program not found\n\n"} +{"$message_type":"diagnostic","message":"the msvc targets depend on the msvc linker but `link.exe` was not found","code":null,"level":"note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[92mnote\u001b[0m\u001b[1m\u001b[97m: the msvc targets depend on the msvc linker but `link.exe` was not found\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"please ensure that Visual Studio 2017 or later, or Build Tools for Visual Studio were installed with the Visual C++ option.","code":null,"level":"note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[92mnote\u001b[0m\u001b[1m\u001b[97m: please ensure that Visual Studio 2017 or later, or Build Tools for Visual Studio were installed with the Visual C++ option.\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"VS Code is a different product, and is not sufficient.","code":null,"level":"note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[92mnote\u001b[0m\u001b[1m\u001b[97m: VS Code is a different product, and is not sufficient.\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"aborting due to 1 previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m\u001b[97m: aborting due to 1 previous error\u001b[0m\n\n"} diff --git a/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/dep-lib-unicode_ident b/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/dep-lib-unicode_ident new file mode 100644 index 0000000000000000000000000000000000000000..ec3cb8bfd28046e47ad4528d5b57859bc05b62f2 GIT binary patch literal 14 QcmZQ%U|{&q2qeG&016uc0ssI2 literal 0 HcmV?d00001 diff --git a/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/invoked.timestamp b/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/lib-unicode_ident b/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/lib-unicode_ident new file mode 100644 index 0000000..f747518 --- /dev/null +++ b/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/lib-unicode_ident @@ -0,0 +1 @@ +ca12b79f6a1a1d70 \ No newline at end of file diff --git a/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/lib-unicode_ident.json b/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/lib-unicode_ident.json new file mode 100644 index 0000000..4ac735e --- /dev/null +++ b/rust/target/release/.fingerprint/unicode-ident-0082d2f4b99fbc4a/lib-unicode_ident.json @@ -0,0 +1 @@ +{"rustc":8323788817864214825,"features":"[]","declared_features":"[]","target":14045917370260632744,"profile":17984201634715228204,"path":9962931808668317007,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\unicode-ident-0082d2f4b99fbc4a\\dep-lib-unicode_ident","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/dep-lib-windows_link b/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/dep-lib-windows_link new file mode 100644 index 0000000000000000000000000000000000000000..ec3cb8bfd28046e47ad4528d5b57859bc05b62f2 GIT binary patch literal 14 QcmZQ%U|{&q2qeG&016uc0ssI2 literal 0 HcmV?d00001 diff --git a/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/invoked.timestamp b/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/lib-windows_link b/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/lib-windows_link new file mode 100644 index 0000000..41a18a7 --- /dev/null +++ b/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/lib-windows_link @@ -0,0 +1 @@ +f059b888e2d2ac91 \ No newline at end of file diff --git a/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/lib-windows_link.json b/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/lib-windows_link.json new file mode 100644 index 0000000..064b6e8 --- /dev/null +++ b/rust/target/release/.fingerprint/windows-link-6e2139e2f73745b5/lib-windows_link.json @@ -0,0 +1 @@ +{"rustc":8323788817864214825,"features":"[]","declared_features":"[]","target":2558631941022679061,"profile":310928410307151240,"path":3878061000663426425,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\windows-link-6e2139e2f73745b5\\dep-lib-windows_link","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/rust/target/release/deps/cfg_if-d2d7e488c9dc3d69.d b/rust/target/release/deps/cfg_if-d2d7e488c9dc3d69.d new file mode 100644 index 0000000..69eda02 --- /dev/null +++ b/rust/target/release/deps/cfg_if-d2d7e488c9dc3d69.d @@ -0,0 +1,7 @@ +H:\学习资料\自用的小工具\guba\rust\target\release\deps\cfg_if-d2d7e488c9dc3d69.d: C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\cfg-if-1.0.4\src\lib.rs + +H:\学习资料\自用的小工具\guba\rust\target\release\deps\libcfg_if-d2d7e488c9dc3d69.rlib: C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\cfg-if-1.0.4\src\lib.rs + +H:\学习资料\自用的小工具\guba\rust\target\release\deps\libcfg_if-d2d7e488c9dc3d69.rmeta: C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\cfg-if-1.0.4\src\lib.rs + +C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\cfg-if-1.0.4\src\lib.rs: diff --git a/rust/target/release/deps/libcfg_if-d2d7e488c9dc3d69.rlib b/rust/target/release/deps/libcfg_if-d2d7e488c9dc3d69.rlib new file mode 100644 index 0000000000000000000000000000000000000000..11efd46128fd4d7cbe4cfb65c790530388400758 GIT binary patch literal 7782 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 HF7bZ=eqw73 literal 0 HcmV?d00001 diff --git a/rust/target/release/deps/libunicode_ident-0082d2f4b99fbc4a.rmeta b/rust/target/release/deps/libunicode_ident-0082d2f4b99fbc4a.rmeta new file mode 100644 index 0000000000000000000000000000000000000000..0c7ccbca24e5cf749ce8f30307b113f4c4d3670d GIT binary patch literal 32551 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 D3FC?r literal 0 HcmV?d00001 diff --git a/rust/target/release/deps/libwindows_link-6e2139e2f73745b5.rlib b/rust/target/release/deps/libwindows_link-6e2139e2f73745b5.rlib new file mode 100644 index 0000000000000000000000000000000000000000..ac90915cee26a5816cc87452f63ca7de3e6e1043 GIT binary patch literal 7320 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 literal 0 HcmV?d00001 diff --git a/rust/target/release/deps/libwindows_link-6e2139e2f73745b5.rmeta b/rust/target/release/deps/libwindows_link-6e2139e2f73745b5.rmeta new file mode 100644 index 0000000000000000000000000000000000000000..03dd6b35251975a11153a54b3ed9cd3c7f7fd96b GIT binary patch literal 4827 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 LfG=$y{Uq^UrTZwd literal 0 HcmV?d00001 diff --git a/rust/target/release/deps/unicode_ident-0082d2f4b99fbc4a.d b/rust/target/release/deps/unicode_ident-0082d2f4b99fbc4a.d new file mode 100644 index 0000000..c601f64 --- /dev/null +++ b/rust/target/release/deps/unicode_ident-0082d2f4b99fbc4a.d @@ -0,0 +1,8 @@ +H:\学习资料\自用的小工具\guba\rust\target\release\deps\unicode_ident-0082d2f4b99fbc4a.d: C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\unicode-ident-1.0.24\src\lib.rs C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\unicode-ident-1.0.24\src\tables.rs + +H:\学习资料\自用的小工具\guba\rust\target\release\deps\libunicode_ident-0082d2f4b99fbc4a.rlib: C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\unicode-ident-1.0.24\src\lib.rs C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\unicode-ident-1.0.24\src\tables.rs + +H:\学习资料\自用的小工具\guba\rust\target\release\deps\libunicode_ident-0082d2f4b99fbc4a.rmeta: C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\unicode-ident-1.0.24\src\lib.rs C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\unicode-ident-1.0.24\src\tables.rs + +C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\unicode-ident-1.0.24\src\lib.rs: +C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\unicode-ident-1.0.24\src\tables.rs: diff --git a/rust/target/release/deps/windows_link-6e2139e2f73745b5.d b/rust/target/release/deps/windows_link-6e2139e2f73745b5.d new file mode 100644 index 0000000..c43fe48 --- /dev/null +++ b/rust/target/release/deps/windows_link-6e2139e2f73745b5.d @@ -0,0 +1,8 @@ +H:\学习资料\自用的小工具\guba\rust\target\release\deps\windows_link-6e2139e2f73745b5.d: C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\windows-link-0.2.1\src\lib.rs C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\windows-link-0.2.1\src\../readme.md + +H:\学习资料\自用的小工具\guba\rust\target\release\deps\libwindows_link-6e2139e2f73745b5.rlib: C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\windows-link-0.2.1\src\lib.rs C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\windows-link-0.2.1\src\../readme.md + +H:\学习资料\自用的小工具\guba\rust\target\release\deps\libwindows_link-6e2139e2f73745b5.rmeta: C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\windows-link-0.2.1\src\lib.rs C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\windows-link-0.2.1\src\../readme.md + +C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\windows-link-0.2.1\src\lib.rs: +C:\Users\dxzq\.cargo\registry\src\mirrors.ustc.edu.cn-38d0e5eb5da2abae\windows-link-0.2.1\src\../readme.md: diff --git a/sse_screenshot.png b/sse_screenshot.png index 324d66a67bff706dbaf01705ae0c323340968fca..529f52c56501c577b23e8bf53dd9a10afe311e0e 100644 GIT binary patch literal 40211 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 R$F|3%t)YLd=y&VT{{nBI|JVQk literal 66626 zcmdpdXH*kR*R4tsq$yQEnt(`Gs&tSpRir}*Aiag&0|+7l(v=<%q)7`%4}>bxyMWZt zTOiaB657Y}_`dhM|L*_0R(@p7WX+s8GiT21y-%WbwN=UPG2FX#>lT^1nv&kFTX?~@ zZrwg7x^vU=(EOhCty}kRsVgby`)BV$h%NOe(bxOCLCGdRpe}4K`S?n@Nw6io*AI+b zLIn)QN-xaX>t{_BLcf?s*1O52O}#QxK!)F=iOc7^_ZWYM*lM74m?LEdgUvlh4ca7Y zCTG}CKIy}Lju-b^Z1F>Y=P(d2RMX2ggwB0@g?~OatPd#ve#57?)b)N$6wZ3{!6T2+ z{!f3q!dUb_O+?|OFYs6;Av99JP>)HRYiX36NyF1vj(a{xT0lcl_Log~6((b*+!z*k z6;ts}d86`AV|ioR;1#ap(Q}`678KCTmVNoJ zG4!k}ypqWJO5;}RH%*b}-$I7^^n756BO^7Xv66~SQeR~L8RnomuY zE2EXkTAXHn%%!ys`@uo0?5h!o?FQMJvqRU_+|cWcnNqbj(a@{21Vh95v%%Pb4Lgti z8q}!Otek)b7_KZ)cAtjp-vzV3JBt}E@9X9nC>qTzQ_zC5=U30ajC6Tidd@a__qSDuRMs=ID$XX1=|XMGGyis068g-23t5c#}7z zne6I(`3U*SE!Y*g+N}hHRY;$pcbne)^>Hr|>oCe^;esozk|H3Tc&6SCJ>0}=r_q~e ziCjJ2)EGn)YK+91yb?>5l_j`1NM4x(37U`WRTSD_V>DVVraU@gd}1Z~)VVEu<f1Tkr3s_AWi$J{2n*+AWRgYDedM+b7+W_x18D8to`w0(m{z+4_dJnlXkIO)ALxx`jx)qu#@A)lrxc6j$)w&i+MiN@VZu@{P!Ui zp!9jN#>V>HEch0-Fe|-x3P$R)L9T&B@?={Z^G^TTYYj1b#2bFXkLHeg3?$HuBhxCWgW_czg60ijKb(+#O8IOpMc^ z9HT(UI;iGP?s(sp*%+@kDtlS?;MNeVpulUr9%0e#*w$H?D?Ps_s95G$3DKYSEtBjAUtt4kEuWgeOF6zW za3QWP03xLN245#(N9x2R$a?%-Jx;o!D{@wwM5p?{$AV@i_=^zUfSgTr!3pN?jBjWoK zpK7`i^Na~8BPR*R;&P?ZVi_vRf*|iguQbGxEHb1)v~)fu zEiS7nZtXDaXlw$Xh4WU`=)C>Z0#wvKe&k-`wnlEooZGJ<9zIfneAC%;%iu$5fIe~2 z-+Su=Ex5|tS86S4jE(lkrh@DO=&?($E+1ZWr_;Bhvn$&gv5NWi7~I`i#x#Bx1lMt% zPl6z@W?H8D+;&)P&zvE**mQ`d=pxNqU#IyhZPHXJ{WL{b_%DDz*2U<9*=e&=J)e$g3KURAXKG-!vjHu;EgI|BpT z&v=a1qj>kv4hlPi$31in0+gAokl)Knhz#v$zHTY~GqR0;a(aGE@Q}~Mw33O&t5i)v zw&yFJI|*rSyfcM>Mi&7!xyjFwycT9^*5587+`GR+&}+_uwEO1zlr9>}_KLo-b2NxaD&xi zo4;uy(MlbmR9utqZ4@bSK{mmLfbGh!D?_=W1Z0rE8R-q~i6ohnksy#tIo#jV z|MF-Z*^I3`{w-w^JGBR(wrYxLpj|l8bANkttsy6kehIZRimaEW!}nh&*B!7R1d?xh zUdf%Y+6chcs;6@@=46Mtol&bJqn$sv_6PMAfK^wWdX+NkoXsb(cCKWcqeirJbpN=R zgH#{Tk%P79iS7GnK8%id-cXRU!>odlMfk%p>#Y z$D1wxocODGBzH#b3;OP$UvGl9eWZ7E=3s#zEl&Jcl6^RF z@yk&fs&R*tQpQpf?C;6Oz3uWDg1MNoxAOyJU+oR z+jamm%~ukWCT+g!v!j%0gGlaN?wj-@bf!e@OV-@+c}81z*~h$oZwfr;;JL$r18CrdRu432tka6= zp+}#9FT%obJV4Y6=;LZ{9~cN8z*LagnSq><9f6|b zigl!-@IHR=RkYFus}`KyP`lM;`9itdXN1qhY-TlCJ3;}P@Pg&R^M|-+6?RJAH5*z_ z3ZtY9c|hhO;-}Q#Zv5ISPj&TipHI27&id+e#@eXc8@&UwdcKR-0VOqIqfUAAKI!k^ zF8ioTa>@yl!##4)8RXY0U#qRnbyRg+mtIL1Bf zK-n<>lpz#eNyC9@p;gRK7xCTDbanWWH~AjgrXkf_`~JIBfcTsP>R0>VmNq3}bJcmo zv?~|pkCb9;YqYky!r^?lTPsysqVE{JEP7;y&3VkstVwMQ<^wN<_1F0U>r$15cI{75 z;1BQPSo>R!_u>*hQ3RJE8qZ3<6qaX8lr=7dl{TMNY8dkGKO+g+=!|sOyt$X?SJrgs zNnjpO@b1a)4LBEnfAz#$y{I3L-CX zsU+qT)ikXSSf_tC=^U%lu}E--2zE^-l6Bgy(&a&|S>L-kKM->&xYEcWw&dgU(18@N|A z5L`8%7qCj0P%gmM$GSfeZdpq2CFsc9TQX=oti`6`-PMISRGX2cj?H~dN?NB%z_M>1Ck%# z=Vrf1BB(kxtno2;fTpYH{YB9n@#(lvYbQAp%;Y}Pqtj#eXkznuAu$6$^ZQcy130{4y`Huf=FXVbRuyiJwV zK*Y3OM?m58hkQbC?R)>}K{QbZbiwZ^>}1&F@onYekkzAg&gBjPbYa$1r(9+E?~Me( zoFH{O>}=iMF~k`PzPhCGIv1Qh+P~;=Zcx=8wP<5@DFrMBdml3gbzIRP- zm>;h|_DsB7hjJe1< z&nps8%%bYPsATuoEEYvlE$8>G?q)fen{{QZ$+tKfx7$6HpO#m_uZ|u@2{YDBSlvE* zXMq@?;3)My=TsKIu7eyyHe$L83#Bw()uZ?-NQFsENxu|wI%{;@BoaZe)l7L~uV}Pk z*@Uw8kF{}?lLWPUc7lO+r}$0`r1#Vt`jv`_EP5pBDLP{rty z?iw;S0GF9KKMHNt%(;H3|81KMV-3cq>Q%_h=lQH>>GI>az>N0t1D?w8!^})M+j6+# zQVDB-{=p{SnP@BR9@|UJ{2Ek5_q6gCD%qbmPw={m2HVF^c#=!Dj0;zqrWXsLa<$G2 zvj!}wzQQ$0W!^(fa;AzsB_o+~pvC!_8ZNq$$HYpC@Qjm};wjC36b?>`0BmJ4g;+=x z(*5TxdyRm;OioT`JAQD;RHcElq{)lp<6~Z4MTXx#{(B2XZtz3wG;?m8Fx5@oX>h2I#gaIEk@Bj4eEQf9Z)azCZ;4|6N}R)5d3p>3 zXh8$OLxAlkZmcidOJn7CtEB%(vfl-&a6Gewug(!(Og^fxDU#aStGNZUIanN_-qC=M1#@(B5A(HN_BF_z`)&?{+Cr}DdQdGkKZIUdXvHp9 zDHuGw4~p#WhO`N0o6F;L4gnZCUsnXD#`Ph36S+8hhUOBSmxz_(61s`tISM~>J?Q}M zr`qmKWp;AMvne$%i?x@#M)-LCAr#c|Z-u|LBNTOhXHUzqUV`E?`+b`+HABr%1YADu zd8A8U41&EO5_5ygN5uUkqMM*Eh{8%LMC~oY8~9=pJ6@$|-4D2KXX3+*C-$~8IFf%W zzc3D6{Zi~Z9k3Kk_lJR;KswZXHvhM*f6n%3-m|oj7hi1i1T0mZ^s}Ys%&!SeEdsW5 zdjtBq&g|pKHgz+2_EoHj(@X6lqf0-x*7OFm6O>Re6k^9?lZA zpgYQrxCSq?A0)g$_xOD&2P4rHQHneU0jumJ5rm2Wh1TTHAIvynLAi7Rvw4F73H(`f zSb2t5hESeu>K_?(2g4du7pZl|>Z%op(DN2uJWi7umVm?K=6Dbv=W+2TE+|}=S;TPz zan@;;&_Gcun0~!-K5LIMJ+iXhfaok5{DY$tmBPuSmJbMjuqq#v`uZ@uIe%CeO`uw% z^mUUyx}+lZBMj>(m(RvN;j!gYTv0WMc_%n0&U6V1%uwOF?={0rG*`^+_s1Wi&DQwt zOViw43x%PR)^gc{sr0% z{+`R9!}$!nQ_x{JK9g%4j-o!A1-o03xWzGC!RuxUxK|cwVCPiK*Ai+K)gk#VPA@Q% z@Hj%1w#}fUe_m;4-g;OOX(1?>?x*gN{t%VADkxyC*Lr}pr&WH$TY$g?T$b||FV!mD zoRw(#KR-nvEJqM7DN=qaoL0fu4oAO8_5yig^ze7a1wA59L$#-Wc`7xfz~mGUh6nMi zcqIQzVyXAiNB;|r6cU#S{soJ|0>OP|3=k)w->+C!XN)p_aO6+%+ox*7N{t<^iqr7}iegm+<;8x556 zHj7999T3mD-Ww;igJ+SJsZ^$OL2C_${-?(WM?DdpdnWNQ_rJd!p6GLV{Z2@{HN7+L zTI~<+Cx~qdW1jHOmDH`PXzs$c+ozoK+Y% z+O*gHPHOyj(r2t<7|E<}&z^O%pU^X0Csm=N5iiU4TbchEI?+mgFm;$HHzYKF`d?3+ z2mYP%c6E>UkEHJ9Tm`7Z%3mk-{HIG2{0KhGsJEUsY0Brv!~W00g-AcnjH`EE<|r2Y zYdFz=41e)_SdF@f@PJD0?)JZ@Ix$Zt_sAP}xkvl+MQZ4w(@`n%?Zuv;!8O<@fXV1; zy^Q-BY_RB)Q7Kxr)?CK1jGnG|6^tNdST)%1*sh2i6qm;rsgJsWcD@za*$AYk}Xy=~soRFPw(l}k=_2CP^LF+za8wXOdqP6Kc`FdX~Mqx2?= z=T$;49{`F2jgTvH4T4Q4=+7n<^;w~Nk196IOl2--rT8fHGfuL8T}z+T&}n;hOYpYM zm=8KF-}d#I0U)Fe=T|`r46;p;<`)+mK;Zpt-lLPEFB5p7tvFo9Ku$>Ys&zNT{Pon3 zpG+3r@+SP{G%(;AfiO+frcB0RXcutS9bR*}88ds2ITIFzu?ymKw#g9Q4L)q?xj`Iw zEkztO9CI=>JOoVA$jw@~)IlCqTD)S0yA3DN)kBHQNU1l!ai+;)G@qykFID?3#0D_U zA)=wF^TN@{$8K#fpusZxer0pO(_JqP!c9r0ou!#^VH5FdtL+W5;*q9WFFJrXx`mDf zqMb9>oWDwj%044j6F_ZM=s&wefRiPF)Z^`?+PomEA+-eaqp_*{6y}=8ED2 zFN_eI9H0`YzfJ(oZUE}$`62c2oHH~KD2o#@i0a5BLULHG6NJ992qv#t32bYe_1Fn~ z`XbaPWhrhX`P#oU4lXSS1`JUbBLoHe(U2=>4KPT2blsM9hF}s{yVwAm5IUL`k2M84 zpHF_Uyu7m>N*mirEp-y+=wlf$n{rze0v3c&QN-5n-oXqOVCIu)|?XbVhP ze_L{GJ8o}8B$>4o%3kFAW{^%f5C zg5KQIz>S^0)MnvggKI4Z=>~Xx%kP?I4pZrH9pf}A;CHR|rCA)TydfiAQ(R#)Y<{xQ zyq04ozGv|~i@*1~)lqMAP*fk)zfl2TTHkK8og`d(<1Tv!LC zFOtDG+y{ytxfkIDv1kqsI?sLE1>ETrfL9Y={Fo-G&gEAq$(H%iI6?47z)TP7~)ZMz2yP5cQ*5oV;TLXR7-6XSEoChty-O&oodij}1rg5|iJl_-MUkN0w|oK&j( zYXYmg!Bt-p&HFZnC{2y_T6TCC&nL-3UxirKehjw3e*A-Kj+x>+e|~8W2J%|b_ofkh z5zAq2qc`q`OZ7VzCE!|$5218&Qe}WY1Upcp*6UkTX{}Sk13_(#{k56ilK$B%EG?{nY>LAU6-N&XtGWm+8+QdL1Jzzu8N<`)NE(*%Bxyv?8QIWBZ*^a zgE5u!E&obK#R*ifAbfn5X6n}~oq??1Qs;9Od*i=8i)3+wu{O>&qi{!=4Hhl74zgF_ zhEcu}57~Y8;VK|h!tl0BMV{YYOPZvNwj}@QO2q__6d0n0SQn{r z^>pNT`w+7>5ahO>C2W$RPL%1LBjleFo}b`qOxt~$i??o zk?)4fp_z~LQ}l}vffU3Qxje(Ah5K&Bq2r$IBf=ce=G*MQ=%dpamJV?z^v3EV8m9Yj zp_ek4X7aYnEu&v#x)wPnGkl0L@r=BdrKUBnkLRW5<&Y35l_9PQR6?qcNbh>T+_@(C zb=@QH90vZXN3{aMzm?N~nHN|W#5F%YFF@{8WHEPIj#sL9(yW5|Jv!{9DfeUV?Ky*H zrF}WptD^12LZrMdbE`dVQPb={+Q1&C+UjH`XIC6KqjlfNc6FI8(HbXWV$ zm_ih^zKCip&ejT@xMW@-L1MtGwMn_4mfzEzwt)7-W+n zTr^tr+u^DXkPA>DQ~=xM=<8!FjY)|xWm03Axuk4_b&^s14)a@E{+hbu&`poBS!{7T z9~u)d_bHIJzC=w=Ww)F}ikpNAIUdczx`pXDKbSt;LQ*@Fm$Gq$dvYS+*k64Tya;O^ z;Y*wWCN$t!PBz36hgSS;$UHIgBd9wWy2X1h?+$NEh!=4S48LG)Fp7mfXki1i<5naH zI&r;ku@(-LIi4?^U;(>s4)NxPuroX>`OPl#i`o1AqMjI#vFKIPR%D8TP9V5rWiL0_ zYve>Cp+1XW7(~vW?Q?AHKEqNO{t8y<0|gVvkp@e7b(5qGn;gxel-&$``-Z5a-8b?N$sVhI(% z?h31?*#&7-)^_fMpPi<4R?#m}skfR3) zfk?c^=q>GmfzV*`HW>cm-9QsFzTC^GSMV=`H7bTbmYzvI&TE!`em`C(krR_bS3)oJ zXqb=~(Yok?g#*XA)~Tj{Y;yWzmY%Bv-a~V@VW?ii)Dt92`mstQiR@2X9Z-zSL+@wY z+fEV zcD|NU%Tq%Kdwu}>lEtH%fT_wkSExyjo{)~N!MJC++BaFth3~I}uL!x>?!mP#- zQpkQ%*uB<><=UFqKhF78U4C&Mk)N8Jx_Noj_WF(2h>SdvF3im^hWWz$n6(0vI_Mmf z!+)LRxS3FQ98wCiiomkxtm)Jc6!afTi=#@L#rSyd@w2NNQ4Me>w1ES3VwHuS09G(k ziUWuPE~kx)w#_CF0AQ-=(UhUqH0@it#1{&=yf)fP34;V}W=EqV#$Sy$dF3u~4PrnF zoo2d?a+lCq4>s#0Bh5J8Ham~(JpZ9V0>O})FeM7nHEER(tP2bC8O<@Vl?c5Eq^?Q&@=`G2RkiQ1jkPjII~K3`Udd>ab$mdUVWGF%yc1cWvOqw zEjFc}{Caxr1An@iNNTXjq?&-5rktYmNUB>#lmGS~v!>qOjKMwKGa{-?gD9Qk@Rq98 zBsHFx#Q=dj@J4HUk<;P9!I^jK5)*IRxe+uBOmlUhRHfS9rO7 z8z~pPyZMH_FzgP!_qV?5Y}}^PG>uX1Yksu2>E*o4)Ct*-lhFG4-Z$X0ua>8GuA^9Z zVvp1Yp4+!!L@aE#j~O|>CV+xvzY1PH2!wh;LmKBB*&1_fLnkaul6TwkT}2x%jxh`u zp%b#ko!etPJv4GP=+O_z>w=uLO{s&JIPdh>AFIAn*)-!bZ_f-63<}NX&E>}*HfR6c z@Wxy561ajH?FHXmE2?|cNLNd~yJ&Arm1mXn#(V4MQe=i(YRx@~iNe3tgmJBy5FKWc zc+0JjS3(ZaLA&sjb;DgV39a8>wPb%_G zvuNh6y^1K1y_e74ddbJWzw?`jWIBr~w(D?L=%=# z$GuTBmQUjrQ1=1uo@5V&*!e}F$43tc&;6>N-UYFlm5;jhGMEZ)|5 z->_q@ss*iR%6@GYt?$(y*d@d@X(Rrki4#y9QuH=B9P9(RD znDW?w^G|QnKBeXV7JI}FJzwo9;gWf#1d-*IO6Tvg7LORXdzX?x)ONKeiI91WC3#sx zAGJTI94iPoW}s7_nhENT8zi9nlP$3>Qyx}2ZpDn7sp0lJjqyt}T)>S7#oDVft@_c@ z_abYlET4j5yZKy;IJXWcl~g!q>rcxwil0($hyj4t!Ko1V_;dGUJCk%^lWCQDE>@KetN=QRO75gjfR(V9iYPtCf{lz>ZhYZrdlte z22ADNU(045tw+9(6<*sp<^TqdaTZOid@BpKSa7=wDLp&VuoEHRvq{DNQ%WOlEu;S4#5zb@3`Q;QQsuOAN1gx-2RGOtp?WCh0Rt4&A1Kgg~f(?)9?J zc_a(BfH_&j9M9Ua~A#g~Dy?{F)*$QIyH zTj*GT>+@3`=|AUFBx^^Tv90qjWk4Nc(vPeR`-b1rbz)JmOdOj>z5BJi))6B168^t8Jc7>mXHmJ(Vr;|IS8uL)TY&J6;gg8Q>WBAUW_TQZE0 zei>!jiRRFt4LTejTUX4&e#Jm@Q`kw|V7RniNI^{PTp8?4eMAT^5OOLXs4XkuRlsns zBh%{H2WYN6$qbfZNQxG=Vh8niTg+Ak&VrAHg`54OzSlDbxq8!`vFc)m><+vq^!(U& zB+1W!BPuup<*#Sw)Q*Cl}i zk@}gg##2YPKSS5{LYsWBgt)y<(It03xt`0@F561yHhe`0=z3r(Wbf@GIk{&G2Uh-Z zcWPO&=AoEeNwoY(Po%nHb8g(qewEEni$b%pM^)zazh@j>xy*u%;%WH8a%@CN2!8Wi zm^;v~zn9iSH;MMwbswqYw6;@3W{;+^lfWNsU8-2~Q<1t?zFA=~nbjxKYxxH#0*8wc zIp458;fuWVrlrb(%8;WzUf4jFP%uBl0Er6l&|36*9X$+XhQ~`|`q-g>X<1w@*=evh z88O-Qqwo6ghOKTolAKrrm0G#wm+Xvpe(?;GpSX8=?^pth(UYP!C+pbSbYVvkY%MHF zQwMbIGz?Ijy))ZW!-*ev>q!zYu(<_3`XIz;M2q@CclWaNQPj+9P5!ag;6IHe?W1Ka zpe4xWEX{~(rq>9JNIeZU%2`#nqUK%~4PGD{v5T>KDtCkg-jT~k+8RI{Qd1)uo%et zI#9h^^)7KWC$Ob3Gpjs#mYW^BS~78AD(Qz%WSNfW*f{B?@Q$b9wZNWqn_V3qx~Hc< zH(jdNXbtq3nA}%cR<{pWYVb4h#H_xP-UPx=7S(o|$#s{Fj~=6aR91WEn)1Pql_aO$ znFsP?cr%yR*J20o7L40a4VL|;+0UwTBHSTjAs1^Oe(7SXr$;`)FYahREs!xB0Q{BEM@vjSBiHRh+oJET;mWKgl7_!%VF{=q7H1)j`skq zln&gM4@HSP-nop6c#*9vn!9N3hoTC+QdF=k_&LXcdC5J^+gK85R; zEcIgOIsf$QWe51V&`|<^Kfl>$t1s`w5b48QwEOCnxr%!fm0Hstu2Z9o%HEfwpru2q zgm=qHpIE*}pX>3@yIjR@Q;(%X3^{;+qdI2Zmj5$xzdu@sAS+5V8hdn(&t9eDmUyK1R-Fl!pF zLAxLsPNR|QyRR`~~dkIUC^Y1fn#1?-WHYpW7Q!mC?WPbR*15@4n>@J=ku5K_r zL~LiYbY%CwaBpqHk|dasStGM|dcl$^>s;^p8%t8v40q7Qg+c$ckutv{KPqjb0sQb{ z54t!Gn2hBeKAy2(<8izE8nSUce!C6k5w~F#hg9`5m8@Nx<^}@RLb0%Vj3XJB05Q4~ z7?@^1#MSR*_DBw=RCQ>@&>yf3utamTS&(EEIqjzHtHO)VB&u?AbP${#c~R=w?7=i* zTo(6Hua!D?R8{-eC<|on@k{dj>y=-0V$OZF@XMnPBgp{V`v>bL&|=o68e8>P6Y=3FDdJ zcqk!Ol1U90xfTSDbXjY|{>UtyPwdf>mnhBt7Z8d6Qhk$-l17M&Y$`Byl&f1^IkD3hHvzb1};^RFgivGZ3G z!TscuytL|XXX*DyY5yw^)cutQ^0Ws7B)7T51#P27enMGb{49t6M-z$PCfy2i*GfG2 zR|!yk5&l;K@vzP&oIqIRq_e#~z3VkV(UkgDLSN+{b?2y{ z_kT5rA^4&~*P(xiVOKx6yv^jeTdF{Q`5R>-tyWx_yN#7P8O5ALUk6ptb&5jKX{7aKV`cljT<#DhndtD1e$7mXGy}f_HAq;uY&(f z1Z2D^^^E2VPBo1%{`o7djeZ-GLXx3=WeD+f{^dqVDyEES-weM3r%&~ka z@B-cWUoL>Y^%X9$1O(Z4*+q`I(edpzV*F0IoL zV&L1;FEA}gEFk>z4>qem3J=3<^`0cJ*trw}YbdJ(Xr)FD!%sER8~AqL7tB450f+uh z%F`I}E3N`{5&61Afx3e1IOZWZ#awI2Rm0XVJlb8MjFtYG?zWRSgb64Jc6`*(nvByZ zdN){kiYrFbNi!{qC0YypfUh$dBY9&S3C{_PYCVwpEy1zq&HYYjG6MTN6p@>iLtZW# z67<|*-E30f9m;uoD}tQwSW3bmXyYJomVXvpL=xggg5)isOQP!N=ki8ez5vTOTFQj- z8f3R#TgXf8Oc{-bU`ZDC7suq7T)L=I-qWa_=(MC9uHG4cz;ePrJyM?wv|^W`nro#H zs6+B$8H)w1FbR+zQ0SU&$R9lJPvjJ(_fMh?Dg#?T%hEXpEIXclnm$HyPgy4%%1br0@StB!^4XWg2CMPtqgy> zmt{gOid72e?gpv$R7{+mCL}k`!LP(Af|jS`*7mopM$Whw1eAilS!V8c+#3FARh zD43M%IzcCzy!e4aNibE!2BB z^_112S5*hGg4zI?EULPM?403LL_oGh8w;sHw+Y)!ZGr`RZLpalm*`BFD2)ZS(<$`X zI!PX-lj9O)QSsFH2bO9dRC(cCpnWgza1Kh_gnr+9OW^cFk#+2Da7VKZP?mQhr>WkT zn(Jv4c7dDxM5?GpE?0-|ei_g1S09I=<`3epzyw~u8@x@A4AJn3-d4G3C^s5iRc~gI zN}Ud2ktML5$@Z{85VD(X*57L_N)+%y@>05fk9?!-u^8Kd`wS0;rtdmuHT|+JG61CI zmBRA#6$NDu<2B8kU@Mzb0t1XJ!K1WKa61?o! zFkd6$j5@x9+N{HmJY}7*hWJSh5MDREadBC^aMf9^M zS0uoF;`;hTT>V}%&|wo)vhv9?XSY(=Pf}x}&t!AZ;xTvmfxGJMwaBHy_YL~Cf{tnF zJIFM3^=Mn2Vr5@3_!~9=gSpEuo`v#z$9JV>fOUep-81W#Rh2$culd)shjx`SO=#RI zRZZnA_F#M6Y*4TTVpqb3D@a#*~?iSBY5~-jI<#W+Va+$gf;<*vHy{(i*?|V{Qk_hFc^+~`#ep`neRduNt71g!L?CwX*Ik4a*_PWSw>a%FZ+%@0V+ohl zKznF_ep9?x+o6~9F27FpkG;*bY2ejYNbTGmDZb;M&0htFSQt73qn(t1STSd6q`mW= zDXOZ%Y~!OoO=Yp<#2;w1AFu_?Hw_id@~_w3vdUaF4}jKvHmKB zQfMFMtCb@9O8yQ-#j_F#HfY1#^SahSv++ws@}E;GhnYX?|M=V~XK#SJ?&v|hd!(@N z7tIm@&#zUJQlm?S@xoeI1<4rgf$yHWKx^!W*uT)60IGcf1C@8WPqqRJd;vqJkrLBf zts=KbY+bozOfYq2ExH%qPU~Zfsgq-bi#GfwPqz%>Gy732dW(1}y!k?oi(}ITH=LR^hp{r;T)sT02pNM+N z4((K+2}2I!`ZRq2dP@=)wYy)=mDWMJBS9>tIqvHRierm-j?+#M5PtAhhXoIH$so!# z@_VzNz2~*iBKWcOK6k7^j;mZl^Y@nHUnD&$`m!1O4X@p4>gv;4i!n|baVqZ*Avou1kq)t4}FZqI& zg{~@9?`y1f_id6hDJg-7RU}`Y4-GGd+>rrVza0TQ zJ4nPH@g>qJ9rmzsNnl*O69f8*hTnyKPaZQh(%vB-YqnZo15Um4S$Mmv7a97_ImJf( zC}K*NN7D-8Q#>8~)flFx^?`#X>Y_mYp)YZ}?aO|OCYYIQcm~yc2ZdiX(2kfSoc0Ya zB_MgGOYvoQpx=(e#_mx?&HMJak4p>O_pGy%dNbH!Bu%BS$zBHq~h#XlPx(^7~u`W3%kvs`KYS!TVpoOL=rMd z@77N_PL%8BVDv&d<_sw4dNHyf4ZLdCANmpD6RHh>(!38a*BKDRw-qhUmXLi+bf{N1{yXDlXsAPTCWG%@MCr-n`9 zm88%H8Fy}U!Nk~TgJTs8eeYZI)cNhJ=%$6E-Of)v1&wD`8UDGN*1si^vI8tZg#VikQ>oc=< z_SE_&gXe3wV#zMIALwRiP%s%ETkoMy-l^UdaRH_`wCXb%s~_fBN}HS}kMDBkeMu|J z0on%T{gI4fM96<}e!u*HSZ7PSze9w~uPm;ZIIiY-%Wtd5r3h_U1kE-Ruw914tWN`b zZs+xwPh_6$kcbgTTB~g~l+pHfD!B91cyOlFHnPIfyy@Gf=zFrq@5J=^-dsO$DP-)P zZ={lZxgsv*V~;qPvHFT@Ibd6JaS!y{w{!P+pjX}of1jDY^aCIX-GOi)jRw9Xlwq)w z$z^!qs5P}UX$6gUzWKu`$Grhj53%^V8LtXoT-efVeRquw5_y(BhfiA}TJGoi)3`r)Fp z(HZ9>J{gck6NO2y8%{Kz_kr+c8QI(N@qS*^E=PhUhWXt=Yw-*KJNPoXiGE?*mNRYN2I7(Z5`pq=+!GFY{= z<;vIcfX&iPMT*jy)wE%f?XlBIFLuUX5n8s>(qxQJa%GH?(C=z!@7bv3ov+F+usGgk zHdXmiwAw}S$m^&2>Xzb{CAuf!ub=z!{COy!;&Yr%L|Q?Rh9FV;@x;<8aWLqQ$%Fct z_tvK@#~2R)VM19UM*snYQDcdzK6S4C2m&wn;+SU<57yYkU_Cs^w>*{j~2CEoiz zPP&ee#mKE^qKUe{<+W1_@hj_*?iJhn#Rx)_=#MjZDbnS61 zdDpHEO~6Or7ieYH5qOTl`{~ScKE5TOHtUl5J90pO0x4Op|ha zN@}za1L=1n;nEk5ugP_Nq#i^L%z3TNYde&f0nZreiSzkEtsvc~KHP;MuJ5zw`&Fjv@Z z(Y9}BhJtX23XEBk=ZjmrRdLF(FG?G>61LvHdgYd9yw}iV;zbw|=x+vI}5h0)}8yqdHTc6HSh5x{Q7l znbSNh*JbVJam2nzm-=3*D>Q$nHyLI8m=EYm`iaqYCfHc$!NGGaq-2f=<=z7vz|xoQ z)O=TDK2KLy{sX;b#rNz}Mz^p#X)(6warr9!o}&jgNVF86+y4 z8>5MkQ~*Kg$JL;AypZ$GiR`Z~m;L}<<0**6=|^^NV!sxS@2%xo#l)F9`}+Uo0z%in zO@pl3uX6ybm1YaIQT$D_Ni?3L6a)^RBR8#lKe*qO{LDc@nljO;+Kh46^3iF0f9IW9 z>+E1fBI5+p9*NG&vCD;MhGgD3VU6E2Vk(LItn&df@Rqpp<~N!rjw+979q9&&*RM3n zAM6;3XdM^tndKP39vPzM&ZW-~O}O?ANj{eH2*cWG!8@xZGhpeLWyuJjz!<0;ETlW( zJ8|4uQI&^%|3QKlIgPdzq+G4JbXPhPJ0nX#kH=&=UGCcp3J&EnY0l?rI$QKjLZMtY zq_?)ju{x7Ig`H|lODlgaR?)sr1`m@#pGn5UJmd zY!7356-6AkwVLQvUL)7hbiHyoHxqd8gM;i2tH>wrm!ihHFISCl)WIr46p<_8L z#2sH{gP_keby{Nf2=8*QEMsZKkMz^Fzxpup#pLMlYPK1>v2f7E@j&>uTULGVnfl1% zS1Z4`lZ8vLJ$qjm^>i5p{f?S33F6;0rnr!h3Yz#)+P*C=IL1Y{wZFifKL;TX!KC4@ zD&f^8d}lcFD}KjOA0_#RYwM;?oAL=M75t{yH*0jA#__zUakzP`@u+JTsgk6fjVMr6m*50<8{C3B1PJarxVu{*xVu9L4DJL7a3;xpKi_%I z`~CqRzx1`QnLWF^cXw6wTB`~SLapy&Lqro{%AhQ_tn4NJbEs(eP_?-%h~g2B-1i&B zr@T6xf3eNCvHDWzLD_-7{*gpeH2RCTe?GaAN@-$$d-w-1JjD8&30*uBE0Afl6N%IE z2Q2I$5&0`{7J9n}xpK>Y{ac%S@{cwd807)*>2&Qfug=*23xn4DtCBu~ej?Oss*e`i zB=`M3cg3k3Q}`di)AC-33X7%AFI?|0s2W4@SCO6FIRFZHZH1H=s$pHTS{U_L0uJuV zU-&(=`+uR%(Ij9m=zTNo{za7Jy6YP##h z8}^zB8UO0AnSbXQLZ#wDP>scfyF4O0%j8q)&ug)!U8=T!#_&RDVJGDLEB=bUZ)!jA zLJYG|-~#DSJpg#ZPN)D^sx=gOP|JnxcVZCqrzBzN0Xs6~tvLVIuz<(SbfooM3y=8Q z^EkMO@t-)+C*oiKzJxGXiM>ygb^p1RhLhNPKb85PYb1Dyy%*E!Zh6~(UyMmWp0gqH zLS`}VUl6(`XP?ADRP;ZO!^?>Kw|5Sc(|?}vyGY3Ye{vpv7CawmX@3BTiP@e_EH|i2 zNF+)~H1PN0m)bV_YcxLVv{D`Iky-<=bd5qQf;1M_s(ypu&}5H<&mUWiDoO@-i$fq3 zhOVns%cSez zc(y0r!>G8S+0fWHg5WwUB(Bm-UP?|i9x5soSE=-Nq$Y|!xBAffof*Iv9BidGm2Blk8QGN z1H?6a5VvyI_(3(@E{J9oWh~3g)JNBWTI*lLokthYsG9rOM|OG_)!h_P_s{TNQP;3n z=pDD1eURj4IZP59cmM?oU3}!xQWP#iYDzm^++;x6&$D~c;__ao|1}*1yg$p4{$#FGWUD<@ML6Q2?S!?hy zg^JO`{V~3Mi3R-0$ijMK93;?1dtp#VAqx>5ltJ{9&VLn&_l-|ywHkRBZEEoQnUBZ2 zrJ5eGN@Wm-tl38DEy9?%Y4F86`|q3ybjkeP4+Q2g6@te!{Tp_Xos!DjR~Roke-6OA zYRVhBeT6pVhOxgJI$hS}i9MWfaajMH!=}E9f7Z{pvdWw0HQC{%H zq(zq%&kZOXxb_;SFQ*M*rX%K$W0CIhE$zM8SG65fBtSy|&&Yhn!u%%_Z98h=u;F-l zXQq_6(a*YRWzCLf_LYgrjMOdQ&tyrvHS1O`Ba%1BeZ^=>7dR9C@ZkedbWvF-DWUS! z)HL);=5uk+Nd)pyWlHy-MyrP`5_N zkK!9hh{k^l00Dpqxzv+e|x!Ix-%&4SZ#DBtkZb9HUhuE0ZiNTDDhL@<=!GyDXd zk43$={(qX906{$H7205`tZ=q{vP}QS8V8Vnecmzz)T&zvgj=kEuEBpEAhNs_Pjh@7 zU1T}h)4@tCtf8e0mxohF`{o}{6HZJPJJ{kJOC_wsm=NCoFse_aB{nRxyG@P8A`aKro;$94ZFcALJ z)88FtS~P|>5(zXuO$)+hi*`*TymE9~=kPB*YD=|~DmYjBVxXgf=79Zv(MZ@YxC$>F zQl+TlM|MSXUqz)ELU8e8@SKe@^#-xuP@(*jN!X8=J+a3sd^}wuV#hIs{EP)Iyl59v ztRs`y`~T(^b5p%a$GvGQ#AA9iYPP-}mo;FFfvJ z;q26t>-&C6tVLcCJ8WSXe12g)Iy*Zf&T8ZB0<3>?DYst~%V^#)*r#bQ>2Bx5?v1F1!nz3ozEB$91ww7_hsz^EUD<%~|Tk zHJ1i$Fa6ms>_yJ(f7kH;wUmF~oaH2BB!B|AvBB1H7?9St1@c*QEI(EBULWP9HX7A~A3svNK}+Y5?$Y@{ z0J)!Ibnuaaf_@_7&kTKaz3?a@a+K5gsYNO9XBo#8|IZP{t?GermG3Muc_O4Ka2>?L z+|}GvesQUrYnL{+eC_KIr^|wFmbd?8ovza7C7A01&`BkzUm^e>m8 zP<(4W{q5fYJqF7TMOcN>eqhF%X$kw;{@Fg$2W47S1XSxUP7jcxC79tO_#XzWU;2dA zO)SBH+6m<)<=c^D+%U-1jH1;6E|@xyk4wNB`)^OA)&A$5ND$VpjZ+8S44}EiD?pgE z`JIfPS=y(GJ+m%chlI+y6rdU8`wYWd%Xw;Jdh2Nl5WdaVU8kjE*F}25ZM49;vRF>+ z-z992I5=w3#<&ww!z56GMOl*r4>N$DJhr3g)Tv%jftAFsX|@~#xL(c3?6-@<>X&L* z*$`)_W!B5EYOV~X3!=2xAM_U#P+Ktmd_;D-dH+u)aQ&ybYR4@>!`Z8+n`eJlctSe7 zNRcg%wChSP(k~_UnG+l!4n+Rg139u}N_{X^Q=>l~$v)v?&#N-ObNg|{uB%vvv*xv| zH0_B*;g5U=fm9iv>;8A+@b;(;_3Gng!o+>$Jyz9`iJl&*`(o+}(Ja_)geRum=1pdV zwD=x5O7lG2+srcFAweSN6KzyUJrbAo7MO9KW`lg&h|B3_A4$d ze2IHGN!l0mHuHa*`ZFvCU&y~$zzORsXO`!?#bZz-u89|l6e?!2KY~l!8pTdI|Lsqy zy_F8TRCxq4*YS?=Xr0>!59$Zxb>^cyJl3UO4+DaGan7~5Mp1FyM1s72d z+i7x@@7Q#?d8>2ScxaHvKjqM#J}GgM3)=bk#`^*<4l$BGq#xe4EN9e?07Le{qtgjRJdizs)3dc999JULdp*_J+|ebG_u{~ zRi1xYpi&~vh~*%*fc(ZN+ZT|MIf!3K9Z0us+<2u5>a~wHXH2)YT3%kxLEkd)Cun$d znAH3XXPT=-fgQfPYC-p*6zFhD8q@KR>GoU;NmiVlo87y*R0v^C|NIv(1^~yhH6k+)6rQJxtJLrUl%Agk3m`1 zc^q($_R^3tFqDgw)!C#da4B&dmhIK_@x@QWK!sdtaA6@6YZi^wEYG`l{_g1b<;WP& z4*l81qq!{`BS3c!m9N<0pNZ+{m-WHG3sYauLn)S#!=~EeqH?wPtp4sB<*LI6jG-1Qc2Ua1o%@$P5h; zMN10iDlM8A_PQa3j~l)CCx-Hb{gT>tRKTymgzYbwU?z@@6g-W*6YQdJlD{iXT`x;L z+r*kH1L&)#g%tBcOi}_s2l}TIT9iL?cR~ZRGUOMEb=RkMY?uXzKLfA#pZYqLJ@m6R zMX%pV8;f`m{}iz3P@{bvMkAiEU1d$O56YFM``_2c*0SELxz9zED%hxHqXq2{mfa>^ zCOD#^t-A>b)<~`71j`5aOdl*Cd&eV+Ks|3tdKLsFC*EqSzs zlZ)k}g2K71f`Yrx;)cTC5zTH>x%7QYr&H2p^bWBZQeLMvQo#f-w8%eRST*c_CuEb_ z_z399JrVX8NGjTmC1(=+&|~J0xm$co0yy|KzKL5+zo~ONO{SfhN;^j!lC>xOmw}8BE=`-vxdA|q+&t1osG$SSVb{$aJKWgb zyDX=`N&PauShGuZP^;{oJg~4t4|Z|#tnW=Kg+U&bfEBmHY?w7Ol_t7ko}u$xL`44+ zGD(ZR@PwU(BTeA|)hj%wK#K-id`tq8$Z=Wx&(M`4MG&Di7m|I-t+oJ-z=DQ`7;5N z!IV8eYlb=Jn9Ff+3yhzQ6z%Z5zv4Q$9mBA7(evm`PL38ZLL*b6|LMZf%wqjv9Xg+? zlEkE-mM)}tpCpNnz=Gp+2&D~3N+3bK=`0)b!xzyxU!`QS@BkO3P@EEZE}=T(jG8?} zP)Tuz;T^-rgy3CB)Lb9%-F6Mme3aT^J%RUr!hoD&eW**TFYotJ+0d$D5eTfWZ@rXa%54yb?h@2w|`3yK~(u z80_#AP|9ts&&>$ywRfim3rE_bR-RUD?c>>7KOilVe90F{TUqD2JF=>>PJaY5@27V* z6KR>OTg;iW18PuzeNa z=VT!#%M>;6sJY%7y(bNZ6ry8dxb)1NrU3Uh9)yn1^lmaeOm(OwGW}qQrexQ@u`%sD z`Fx2Zz2{S&Ok;_kxmB;IIIb-@ii#Z$=*la5&DxxzajJEo+pTWr5p@gkfr{*L*`xlP z+W!exO(#9kvaZ%O@(pMc9b*=hT2FJop7Hm*cjt@EJToiuXG@nA$Yp;;E|YSYmiTD2 ztAAjbN0SMh{1_ybk(x?4Q})s&hn#nNc>IfW0VOLs9YwQY+I=Kx<+*VhTidJlBf?Zd zltLA1yi262(3?*U8lMwrEN#rpt{r?VD=Tf+-QHI%=rAV{xa`F&k8p=IDLLj5bd(i4o!pcYZSPRH@=h2pR(Xc-JB@aL7X3+%d$>-o1SJzsMXKC z&(8+yTK^89(eCd5Ipc<1Rp%!2Ot_LuTM5^3jiL$T=d%GB;r7)?N2P&h_FfuKZGPMu zKezigiwo0kPm+3zc~2lt&;C(2M?Uysn0wKxO;6(32Ta4Zkvi)#CLux-0X>CRIRdwve@s?ZQx#+e!=u{Ot0Eg~&XiN1h?L1A>(*z5g+tW&K!i>+N7l`aTS zYTZExT%mj2*nV3BO@NvreDv4{C=H|o0B48|VLk^(J?JA4N+YN~b(u}ibm3dci0(ZAon>n)cLja8 z`3mkZrIuYp6?a|S%6;-YSnQHio|g#!9gc{hj89u$6jDb5H4Np=w>M!_4HP=W63UB| zzo_jw-iZ38G%YIz>{=Xb34>f^6(YKpHWg+h{Jw0JSKB=f2>PNSDI6T)Be@GGb^AIr z1g>6r3gieCsxUMKudj$*_MyI{=FBu$*c_iQwgb7ZSUxQH2{^N|gG)KrpJ%<-)G3UX ztnw`=8uH^xr~%zEHzjA$9C~N=lWG-Z@3CLYGHS>GXAS0Dbt_($U~JJq^Uo zomKO7=a+Bv3He$|8!XhBG$AeJ#Ro06wW;+PX_BjC+dSOdJR*FgNpzBkgbxnGnM?J| ztr30@##6}hk8{QityY3Js~nzn+3t(?OChjbFAp~AswjWCp)O_n-*4C?JR=P6s!RAQ zG_fgSmoX>HP@Uo@Q6)mltkpnq%D$z!tyY4P$5*DQF8DWMSGyu@WF;~~i)J`y@$lZp z>Ml@Rb9Mzc!hhY)d!+Bwlk1p&Ki$zTvgZYcZCwcqA5EbIxdV}Ped|pv5Z|X`%x=$8 zMc^7eqWo$g#IsPP1hHjO$LrwGij=?8y7fpjSk0;-O~e^+ znM#v>bs1MhZ-uv%?AHbQwTr89`t8WEZP!!Fij^byFe=+trt^BBb(!dMR!*bWAyY10 zCK3a_;y@n{ZkCk>FF?N2TgTj=iu79W>IOYt>s|W^^~&3BJd3~4y6AVOFi)b&yT@f)V`;OBVe#q zZTh~JO3LU^_Tev@iexs@O;KRCZSM8NjkUk1_kRP0!#UR}Gm!F!HO?a3M9^u^z+shi zCZ8Y^6B7eNIKD#|2Kx529_T1$23gU(CdJH{&K$G)*W9CL;XAsz1`2*oPEPe?#za|I zjXqy*0Ll1|u1+(8OzRY0*MTTP1_p*zHOUS`W+onHuiB@R^f@a9PtR7-l1<5X*Bvxa zVDfG)R-QKDcK&daMygPy;n#++%|K&XxUo}h-CYCviJNfa^HVY*At6yT!ck^N<7aIq zOlH*LxR_eHsLJ?~5m|0#B&#=C?t$<}nR1aCsKWx=U1u64szOA)>uWv3GpRl;&HJjv zsJrEQ)(`d4-h9XQYqf*lO6OMPq-^^R6g^N`V`mfjGqMp7D-iwju}NxxUAD1#ziXI< zP~_D7l1z|dgc&R=utkccIS`(2y$^ZqXJuu@kv?Y5BhxuExqY`)Z3$vU|MEq;L>Qp5 zJ*Fk>q3i3eoX&8cj~2PqczPjEuy^@T$dQH>p1#*%zygEVMnR|AJ0{mZP|d&oP*CA6 z8_$SLau9(W?43HQ?AdKr=T9g^gsL~4ITDmzX+{`xRi=4Y^5z6;UYh$7N%J3O%o16p6H)Buz-oHC&`T?2nJZSY(}|+uE0#w&TgpN z5u%f-=radUzLQBJ7fQ=V!}#U%{$DJBF3@?uXNwiK}L?}FTwsNLD7;%NA0{`BaqUO2#X_AEaEHC zl+y*iv^!&n65ey^C%lhX8EP1M?XJ2xjZJZYAFUxp{A3pH-zy6WzF%F{7Zem2+FyYM;k^&L+JQyeR$ znUiD+xp4T?ALGa9mbw(lve{%6cOCDxyuu*$ge&b_5B%gnxWOB}nDcy7r_|4=dr_Kl zhFx4l?<{1Okt{+sFl_@LUq=)J@;;>26FH_65)B0ihRjzt!vBROoo>#F6oP1_x3O5l z#^a{o^DZ}`EbTqHC?S3f6j>LwZtdjvbtGxkL5_XE-Pl9AE4V3E}ImpFeXfi zT=_Flx1>ljcERF2{xq%vt13nGix+-(?rFn{<;Zw3#@2o!q&?pDgJWsex!ns>t1<&l zTX&cPbYt13cW9)}kxFvaLB8&Qq|n~KgFTLzymtvAs+qzC5F-lLx~5E>wk*Wa|2IHO zm_ddr-(LCU@}+my`}gr*e8moxa5EnvtnALqLaQcBS(FLNm>is}7qdf@ku3KxJdQ9y zIlCjrm62w>k|K@)(>R~_`3n}ChejTA_rD3v&A?SC3?+SQ<+PkxV&L(aay6>49dTV5 zyS?AjHEdeRH5Z4X69<>BRP)Z9#L94tO-@F|WL#hh1*Yu)LF_FX5`-qUC_J-27$X_IN-|5wRK!2|_Rq_^#6Z7YTr{o$=m&DpX|+92AJ&nko4(PfaU@ z;4ypi0S32mx2{STfBaKz6cIknY}1L;<-$WXjeIhUY2Kj-Xn&LNSnU2pQ_{T84`x>!d=W@=?62pUaHq)n9W z+0D$;ux`-KO!|Rh%22<(p7rfoAd8(d6Ko$Y7xdPwm>POG=lyS#98FsujJbL^J1wJ^ zwmE}K7-bWml6zfzqT|*hq}{ptBO5Sv0vg_Rs&)?Wi5qNjf0>5so9^*>@WKnN!Z-Ze z*q#U{yeN#cf#0`Nl1cMNR_6~1Y8aXphVJfg#l8H#(^-{poJ{p1jB(U-bR)0NggpdS zCUsIV7-8*wW#cy{r}yCXtF3|Hnb~rCYis98Ty!7du>Xl04d;9X-ACCPLJGvpyW77c zF&?pG13ykToxqA1vn(B?aOn@Dzk$t#=0@TuKUOGT_8=UYGWa0mGi_=$TOB@D>#;jr zv_wf5#l@W87r-sffS$~J#O1(cMdNI^fPPA3aMxXi94QLiRJ{Jm(2Qk4kH-h;SIg++keuQ!qN+;_ z{B7%q)nyVHyPoeGtqbZ^tyCphX~)tep5_x5A_JX;O;x(z0KW&IqTeFsT`z&JwXNm5UpIuYYj!&I z-TRjX-uH#}BN%&qxAdHxYK)2Elv@F&kKFk+E`8u9rXQc)xt;B05}EvE8Tm%4!xscq z-X`$oagkPyeRph;?7cdiZPLGJuwUle3@Q{0GvR=tt4le_4H+;=%&vRD0BU}!bXu76 zN>GD#UCf4BMnP@(Ith*iSSV7F`>u`x)|3W?4$-L~3&o`*#H{wwI)q`)CiVmRQA)7A{ zOV(sw6yCD_%Ha|dU5VI}MGW)IIF>y`&*I_Mt8?|JmFpde26w8LlWfF&9;$%bh84f} z=+hxMT`}9z=Qe-7tJCPYuc|DXWonW4Z4pj5%72lai6W5@YO_ckN;63zKr0`!`rfPQ zOrL#LaPC*Hizq&R(%JBo7G31zhR|qJe<#^#!ylpG^9FQ{!j-cz+ck{VtA#^7#$gr`|(+}P_P{DFR5M7 zr6dQQ`;j1P;p7g`PE&*e=6GHK)VpN7hJzIbHrH7^OS`T!L-U0;^snFK{uCXbX5i2f z>nla@q?Pn!CQ4tEk>yKf58sueG&+wl%6=>bzs=u~L>77+cD#rZt3a4S4$-&xbli=# zQ7ll+RD0*YZzAouW@mG4=n?x?osN0w;v&8CPLn{PXmwSW-Dvo`uBUPr`HeI+Zf{wz z;j)^SzFkKj>$UqdCrA98m8mQWJ#gJ2dqogqk98GeQasini>^<31;iWR!3#32)kmf~D|E*f(alBdCPQ zPo9o6+q6NOSG3Ww0Ea;GxAx#)=7a-D@Q3*f76a}oDAG_nf66!hvM5YDYCNLUVbFRT z$J&k0>Y%&R8aVe!FzO{}T3i1?H;(I@dM2d>CnnUkw^jC3se5&hjSov31Nv5Qo|c|H z_gRNlQPsUL0)h+?iEgHR_EV_%^>A@B;cC{j4oaM}_qn`%thq`6M)=wW?rUDhyVX(@ z0I0ShPMW`h{00@HDJiZrVPsd(Yfj8io(^5tLf75x^0v^kgKQW+96luOx1i-;0ScOE z>>Z^4P%`gJT@OtTUoa(>K*(LPKJ~LF7z(`b!A^K_;D(j7z0axdXc>oM8q$PH88%7I zy@boK4%pH;%Band1;jV)iLI=b@#DBKsQcf~`5WjucLxR}TO^O!hz?g8@R>91FgDIr zZ$P98oBlQL;Fd!4N7Q~EaK+P8Mr|=&VulKEdyVwh3^B}($_PTZhAj46dP^`u`T1xh zST*6-x$+DNRy*%^^+TU*efGq<-YZ?g`6$3l@kM1)ysQ&Xi10 zWHlZ)CBqj(Qv5h%iqCXQ`W9m8lxmbJJFq^vzur-0+pBff6wneGfoaE)@hKsZX{P2E z1x(=G7UJ@>%q7j-{KM>!=$qHx-Y{LNUfViF2{sWyy^(Cv41%K}ID`xB2kC-q7(iPk zn~!Otk!ann#*8zs5YtNQl07~^!k}b;_H*@s=c9m@O0LqhNybM<%)`AnLy!JRwkc#c zn3b*#w>|SZ8;n3cnS~GimQ6fDmwN-Pp7~Qq_GZ83br3`w0A*LkK)qw9{J}&at8`(2 zu4itw3Gu3BXtr`-8sGDI%xy&EF$N;9k*O1(1#_41<_fw5Uay}7fF)K{Adm_mc&*z> z&6<&*DoMKBH>|g^H0XJ9EUF=(K0A5z__1v_>A?opcSM5IWOY=2wuL;3KKjztxCGoP ztj=U*d1$0XoRKkbdec~bUuF#1p4Twe*0xfKkBBe>_!i$D$76|Y7y}@`u!x1O6&Y*G zaAlLt+4tml+jxPR?oECR7aQ^Wd&*z`8!hb#hrmxk5{80o%DH#|>5AY!tjNlY^owKt z<|U3j>=!Y#KjjzA6|UBHEi7GZm(~G=NTV4xH*$6vyqv+o^5fu%LINDEdWl+Z+k?i^t#AsNPfig#Id{dJRnHZw0s5q? zaVeP7wFr!&(@NTnk!dERYWeH%urc(+%GP%5+c#;TEP@<3NWx08W{n;_iwaPLGn$d) z_c-V@g~poRM-iN!;j-V|+Gm;-pgYy5$9%>|1jhV-_K}J_xMqwgxi+;^?Aj160bCRx z9=vYbW`h_@^mJ$UNIuUsKi}&tXw)IE?27*_xv{Bxln;@MD~0bh%FD3v&EyO`c=unx<8b?yqM{JmUR)HKgnD-|%H?}AxP3iTwfwPp$K5+7^LHhGG9$}W4e~Z z-L@#jER3ji64Fw7SiWqsF2Sk3L5@_2cL;U9|Lul&-)8zIq}G8@N>09?Kl*F&qzUUH zxKgz+vk9{a3hHs#)t8H4evG7@m-#lRz_s==R&Hys)G8=g9B>lVHq@uCqgZdXh{D5$%M$~Z^V-%L9~v?>Ju6U6uGd9S zar@LbmtFgbjiLwUNblHMNaZe|+rkhA9wdMrIT*R-AH^ zq*Y`jHrq$G5Id9gouDAqI~Ep?3wUJ(!BrO=*R(u~)<{p|5yd4=6%jjGYEaSO*< zGC((h5~b*X%kNi-U*C^`W$lC^Tmxgev1B#PQ&lj$B$i`DU2@~~X#$iZ{eHi5ErW;? zJ%s;(6zkZ!@&Mphiq{GIRfY=N-Dgo&Eow3a2+#}?&zqV|Jrr@9p0Z^a5=}5&)BzZs zl1RmR)p33$>E**O_(BFnA)t{&N>}K#fHjpggAn5Gu^s(wxa>1rM8C2Cv2q}^ za3r{f&xj>+YO~b(3>6-u1_>7|4WFm_su(LqD!+wdE9kA#beVU z&^@mN=bjA2Oi2hEWMCixJ2m*slK5ftF zQ0-Rev1Kwxc2!aSf>E;G#?cLabRF*ZqB-v1A53(P0YzBF)@MbwBx*IQIWZ6? z9&`47N4==A(Q;3E1PI{m&HibFL1*y3MAg`5qw$^Se*Qi)J^hQSPinM~SQh`h-d)`Go3#sfcfn7@ zz(ADFHWK!9dIe;+!;qJtFu!tubT+*nV~v3(Lv*;}kF~jdZ|3J0 zqsMl{RPyZ?L}!~R5Cx!Tr+@kO@YQwDBcUBkl?gq+|LpzkQ<5vz4mWXl}p5>1SzW1#9rDI%AZj({NVr zcOWO;-a1mcz>_Vowz`ToU$j-hk9ZHC-&X@AC>c=q3reIXV7PU1s5%X|J&yhH0{SWn?zZs8%7gBi76l(1!(@XoNe%*K# zZ9Go-jG3zG)$oe47IB_=BR_m6dlWcNQSRN;%FDIb$x$3i09RNNIV3Aj4ed#-&YThb zRHaYA4i~R+t~&j7xyqWXM!Tax!p0^%HhO%Hy>WHUg2yK!Jmn}3^ElfexYpq8zAz)i zXC9x|9zd8PrkyPZ-q=@S5QoNEyjeb4&);%S^AZL@bg`2>suhymg$E=9c{r}oMZpu} zxNozOvdtu4u(fqrFrP~EwZXZrx$*K7``%yv$X@@h%s@KVAO`qJD)OpVFong-_v|A0 zsZ_gq2Ca*)2NAK^=zzyp!|U4iN1&8~+=->Ma_O9vQ1;lZf_qPRNuMyxXVGmnmc`Ka z`=tJQ&`m`CQIIfGALLv`4xBOomROx(eJ2nfU$E@9$YI(pTJl+zChxL{UQr1Kcd!~b z7`Jm)9OyFTG4b-s5VVkmrKO1Il)?W2R5WbY7=-GRCQ_n&Dz933T9Y1BwiO zjeD&nW^u6y3#yNsejt9sIeUwUrV{mAalY^8)^k~O9PP(fm9aABD<4PiWEmT+8t8rt!#jaHi*rD{@8Vkmq{YASb>sAR!XPR;pFo5DA+c zU3tIbSr{D~VmTwTZ+YlVf0+=^s~J9}!&u{v_Y^rFHt1eoV3Hb7kshsHazVmHPu}>R zq@ak(3Km^U4TVALWG#kTTJXf8^1L1NQK2lGv#QbRrpZK_IhyX^cU;b@G`@@fnV|^3 zK0>o6|0S#3P=su&D!saW%l_F_kz}Dj&b2k8efGWnQru_Ju5824AOGxW;kL*$KDXoG z72Pt{U`;L!b#-EcXERvr4IDJU%{fYa*)=JTI-n=m%jyZMBY~6j(9q zGpLpEyAimkCJoR9WHIziVB250&liw{hR_M{AF+OI>fs;M|Ki5+ijGX)4=Ve1wxS-g zQDJ3cBOjC@UdgErrLhpRe|z7l4G{CxqH+LUe&6IYqz4Y&)wiZXA(=9w>20^IEnaiA#W$UrJ9bE-$AgKdxVPD_W!0ZtAB&r4)0J z?wU$91}Kk_9vy;TZ&A&GEM%=EXaU?RhLur(OHZNd@ggG&YlM@ELOtP_n{R4tgr;Sl zCvdR{5KBu_X620Jz7m`3r%wiCfXOgN`OV`WAl@X|1!|@B8FL%J?Ur zlnI4tn#KW6b-LG?W~dWb4mlZX-K4x7<>WRXyy!St8jzVf5yNQhveV6tOz`l`+?J-0 z_j04(UZy}+dY?j?!DqJ7;aBif8_J*?Gz5k}xjR?jwtb(?x+>e`34i`i@~nzLAgzS4 zyVM8{XEVEg|2ceMOs(zu$4r$16`G-46n2MUlUdc(6Z7xEcO)Lv9|e8p6yA+~(F!}49=9t!XB*PiO}&pmMWJ$GYvE6uRYH4$I)LP8Lf zH4ud90ge>P6aShSzt)jCtE&@!3pHsGJ4Re5fWlD!xlE#qA`h zT>1IZre*DZbChxo;oa9cHDAeNO@Pt&%NRN9PtN9%aQgKHiUC?Rh%Vd_r|Zcu0;U5! zMLc|TgbClW-thK=YHP#=T;dmPqLaNy=Qm4BX#mkYG7@MNf%cFBO+yC(3R3%@cMC<% z5xBB1!=zdB5hMFHZ!(u>gH3vQ-EXS-DO}zh{~YHpL_$$X{qjN5@|Q!J#;R3B{#yc( z&mw`eUzRQdt>ww&s*rAB*pXxgW3l#iNLVTe=9id2Hl`~0A%Xv50Ye&>1){;CJp)pq zCwW_Lvlhc#&UZoQ7qzOB$2mW7_zc4vD@vAz#?Gmjzd1jiJgYO%^za?S`<%e&SCfnH z49YTEFWGE9^1-bQa8Fy+(=v&H-Go>0TvE}_?ss&Ha_c`L+n?A#=Jl?wIP1Gvng2q-uaiC zJ-8WkC0(|W7o0piZm$}#2Ngf_b6IYy3#%M67E*43f(^hh$o*@WKLr}4kE{n$#`TfD zLriFmgh_$)Ie9ZARp0k)#8Y%KzbgW z3Ek-f(U64hL?G;sv-gtxe2{ZOr6 zBirnfNyD-Y_tmfqY#=Vb(F}2#TxUpK-0t1s6$=z)7C&O;CZ}p=4cRaeO*{(uQC7GK!UV}L0Yvnmsq^`&TH3S&M z&`%jW62JPk#EJXXOWJfBt|?@5g1NR@-{)wQ?V<#0lm&+(j|DC*kQtf+UdBj^OYWfp zHE+zhh!sBgofY%*Fr@@*Pd43Lh|u(PCqh(R*;J={cn3WbUm9uyAl;Ytu3iJtwdBHs!cPHK#5)qx2cq20q$PU0kyd)9EWH4uh}V1*+lpUM8DE-xw%5q z=!&;zyXi>l6z|vJayc?z+spgccD4u`hgZY;asS^L8lR6F3Rdq;B72+EXM2VE!yoA?gsT#wrN@Xu`s;~#ql(`># z5orWXyLGM=#wdGa5m&+Nbw0Et3)V#l>c?gbyqTiL2fcAk3aZ2-8zad6l0p4+r}xYL z)}1@)lRfD#sgL7Lz-mJlxNBWFFhpL4` z5W$Xl_u@tD!TcQC%F|P$scLwS;frwOOdDG(yC=v*beA`*)q6M53I3a3nsxIuS(s9ZWG>nG@ zfskIOSRzB9dOc6~J1o4Ic(wT(BVXEma^9+?mIEe!%Mp3>k;$dOn||$6^37{ZCBdus zatAbnH*}_S0tY6*VpLu>3*mWTj#u$QaoO3Yby~=g(iCbc$m%G)dk@WOnT~`|AZaG9 zK&4fnms8zQ{&|T>jfb4qs^y&VHSb_m=WJH`Qn^Y2{pN872J&_da+wx9LS2Nj;EM%D z+pO$*!3)ln5JiO&tJf)fh1f8Afg?jh=lAWs%&#&laz6nL?kp*j{f`+11xZcCc?k*# zVrCY9@cY&tXX(tWKjV(t$;il{ByrM6LsLo+wj8r^&Vu7AEpb;GeRpb>(odR2uE**0 zb3eJ=(J+WQ9zF|vzneMDC^KlVf7EbTBAJv~hm$I=i!3qMV}vO~XoEwtFhhy6*>*on z7%AWIt@^p()oB)3=w9mZ!(;lFz{Kr?F7)iYbiBSHkS7f+avu6-Vp2Tyd>Gd`M9y>@ z29Lr=EJ_Vq(SMS0WldIfNZPRA=|0+5D!-?Ib;SRDbj+UzabHLOY|D1<6FtuvJ6*y{uff~~iiMt#3Lf-s4M zg9i)-Ous})ZHQ8TO#VbCJ%_Blg1`a>WY!+Fbvz;Okhq4bQO;S_4?EMEo0xSc=#QI9 zL+Tf{OqB{tsqclq29V3uahj?Sc60YEl&oX-rJjhvY?gkx4rX`@!1zFaEAnYkI=MBUv*qc6k%L}HO}#<@vHPl7F(4c}&) zgMM!Q?K7>*o&>8i*q8@7A|<@LSY~(+T)b402)W73JM2aO%XBnbN(xCz@>SQxBsyu7 z?LXE#CKWbK9@l!_#JbBbWDhJlz>CDco!ylKF`a|5t@xHf56CaRz@M4kBIMIKFolA^ zc#poVGdf0gOlPRSb}k)%?ltQgdAyWlvDN0O{m*Sv#*fX<{C`_JEWZ8WOsEX}yY%&% zKy~#$F6C+-{E@F;*_A3~N($IU={r5U%h2qve41O1r0IkP zI*W$wo87LWF`hK7sL2qo(O1au03M$pP?(*D`qsbt#y)YJ9Q-&l&r|L@?BEFZ8?x~( zhOOV$KlOaWU5^<4ca5p^fF&o>^V}Td`Hh2aTBofe#h8O?lyX>MCrxUJpdd>cF zvF}*9^;bWytE&SCg|Hx(pOxp*l;FC>@Cu!p;7^q+K2!V8Ke zWhbpBbEt3O)A->gx6SHmF;-PoLH${L>Eb4HZgM3lX@(OT^ViE0qz|9)SfO1yCSO+D zz&aty7aRJ}Y0|fh&Jmt7Q8eS+l&nlRfob%JKp5W^_R{`<$C(VdPnt1JCgm+%EXhct zNv7CKMW5F>V(6oLox;wQx_@5(&}KqL(by7Air8ZF>aPFSz8gNi>B<9Le(~eA^?#k) zsV?{Kuj;S(`^9sAXs@FAlB(;x+7!6O^ODL})p;Ix^&is<$9X^hpKI=X{fe*d&j~HM z^?|uhog`!ui4!#1vh<+shAY8r38xVgnqrBVa1QjK(C+Dznms^qDimzG2v*O!3hp@k zG@XQte0A^MXZh(uRdv0Lv*WTm1-d~Icx*KM`YG2P3nb}jI-SmEvHHqSSr%TUl*w$>3j#oWg*;0Xwjr^ry4Jlp_`YZq!YJ9p>-`e*K#x{pW16MkCTZkKQ-$?u;>#^F1 z#paaDQs@wFVL*HJb}#Mqlgij+^ev_*-eT} zx89_8Cn;GVF!vzn?_PKPq(hX(7Rbv_u@v#p3DKMqKD(XR93Ht$LB}@fcwB&T@Od{N z?Tq;8_YdB-;`_EWqC175?2k3adj0SekHS3YxN1{C(Zu=sCB!u}@uuU~$~bn|OVW{@FEfAVxf zPkr;tYgUbZ`HgG1Bfusl3dCQMzQgh*d8sc(ERkOL_=NH4Mk>@YFTHKTsePwI%T>QV z|IQ=7UAuAui5sq_X1~d7Q>$34HMO-QvL5-Y$0l z?p{GBDul})RtTok%*?FR)KraD<1d~f+C;3I`ON8O8CEMAKUQ2>!%na$ExWF&T7Q}rI)`OnNl8gosgjgRRdCJm zZ)e0Zjp-b$ZNa?_UFc5Ge0qXa^wC2F{rO&?d$3NYZy7j3y4|M%)!{$|Q zl0~ol@!40F&TUw~>Z2xBzxRbF_fB8=8gOsM=TE+{hl8-0-}mX2Z~XZ}wkAG5D~-=(NQTQi;%)W6cT!LK{J&TCymA@jfK0EG!#$G?rp@+PMf}! zYiejT0Zr8jc6fu4zyGLrVj)xrvNJ^R9*m;1Bf~PL6OM1MW6$Y?tDC-X&MG!tGSl_v z*Jv8oFSpw!7RuyuF_*HLf8q4x17)B`Ly?`-nfTGCw(}-~Uo1N-D!_S$D$I(O2K# z;wG!530JisIxXJ1_m@3K9)Igz=3C$X@cDn3xNhUma!LH4`6G6hI>zR+e4GO2z6=a6 zC|7PCCmn11FOFk_%-Ak6PN=LfXY%QN?RBo6__&`7Wcr1Biqo*-RFCXo^=@C)_mj&%WRuJIeq5MzC}yvN4;^tA@H0;Z1;wP2NDYt=DpJ9QR;vH=g~^ z#VE6KOBda$C^v}kjJdL|<`gMjMH zxN!m4JQpwiTf>#N%-Hk7hMbj4CXyjfUt&6&n;KgTN4Bm%O)6JiHgy%N{PeoX+n?H0 zdUO5n8>^C1)ASxwMj_9D=+{BjA>C*K2f?xdk@+#Pld40s*aHj4I zT_!cHy0-GC3mP91`X?nz>%aqcmCUhs{pNeK9^3TdMdZ|(I*~?u^q(7H*+pYF2AXtF z{tpj+_|E-PVEw^ub>438<(itRpI&fqiKJ+BioD5ZcR1TbK3kN(?YUg%Y}3j|H8nO@ zh!9 zpEJ4X`_=bk-H@D=l$DcfwU}8DJzEAI10Pg;Ubo`>>BgokWfuSTtDdTRJ$J(BD=dcW zB(Y8{Z?;*jKHI;ZyvS|*>iU{XT5YZHWPQi*S;O50bL>W+My^efH8?E98`y4ro4IXr z!7oLIpBqk?oF=VFCs)Wiw5_{qWLVeNHP^xA2K6UvPW;ckwqNs|MM>g1m&s)J!QqIw z9=qQzNK1C{oJOI??KWpBl49DfR+rk;VtelKqU^@)x2CI2)h2jBpxcV2{U9Tfl2hQ` zOEXaOc;A{1?3mvCV>0`L@www0w_oC(rnTxoDW|4o#J%6Ty&j`mPhDNjilXu?1m*R;@AUn?dC2dCru~+?BV;(;c;!G*v5gNiDSo=Gq>F z>%FGA22L<2r>He=Nsk?0Ai2tKPg9C&97ZW|4A6GvNy>lzq`+dTx}x^9Bw5yEY+`P@ z?v{sh>3>I^P-iL6_gS?`;%Y~$*e4#G{^?Y%a~gd%`QUGNV9JK0jl`cPsIs+i)fO*( zKWwS8g)LK23Ew&8!Yb~!2DcA6*{r~cRf9^LsZb~uVwB_Neg|lW9WPSVd#U~%% zzv5!L2`*kCj2*w8vzR=0^iMN`_4WU};no9>ZePv(^t}4ErU!QZZdJ;|IXO9*nVIkI z{PoKZ?EjzjPhFOoN#pvhtqMN%aEWP5x=7Hl{+=riEl3q{daT@T>hc3WI6ZR$^>9MIa_C=LfAVzq_}!i(+bny3SNI_4 zPMM5aFhge;oVq{%=J)q#7G(2Nv$L~7m+1BS)2B~EAvZS{P8E=t;8=&sn|J@>ml;19 zlU|UVl5+Pqzy4kNeOgfp{6wqO2BtaTfb-34Hvj$5y9b-g?##adPB1v7J6;qc`UoCt zJo(Il|ND*dPPmD~^{!H>NH?(j0C0T40n)c&KyctbI$pA&vgE$3o6^(LQq*b@b)>}5 z{>HZEmk$4HymHi3O%XUmpE>;Mb9qbYB)v-4A5XmTo7|tl8Iqiw9E?8ic0Ge%4_)`O z?TK=Xw3;ieenOmyaFr!KL z4(+JU{={^4Sr?yQs4Qsa8J#W{T>XBZH{e+&Aulsf_n$w0POiTG{Lb}(vd{0Uv(%@H zw1iGCDdh9N`Qm|(g%6xN4!k7bt#G+sIJ0E+m{J+MwHk-|AbGSmkg^Tggt2mt=sb`$3k$Bi zEB%Jm})+{EvKNQb0@)KaxRDyG{or9qd`otc^6?Rnv*Lj>Hih{bbZri zo8A6>!~PsedP_w!2vhh;r^g1IU9kKu1=r~PMmCototio7Jqn(UL!jqls%K{xTx<>Y zrc@D&X%qH5+826~8)KyC^T2aBG?!(~I^sBGvCy=UU@z_3PB>K@EWfwUOFFjS?Qy?y z^zBqZO1b{@Ge=&1>FB?n8?(%4G=h$qs2!Io)sz~J!11N?%J}_p@3)%T>i(?9?ejJ| z4H|!vC@^$A{$uUw^f2530@&pPx-(s>HTf*yT!()oXj~bDGp)9^mes>K*6c871j$^~ zq#(W~j84G%XQZA}>8dx|EH-XZ(4N}~ZG(fN_NxN(bDq5f2*WIbKQ~8fs0l_7HdHr| zNwYc$MCv-HUofg`4BF|lGkW?V4dq<0WX7KVe4cUdYmeVQt6{^34P*!t&r=P~-SJ7I z8+-=0%S|7-9E3a9;cEMC>C{Umo;zpaH7^ytylwUDP<_bM%F2G9uhzQVu;kM}d}X9B zthJ}X7Txyh$4h_uvs*8{>YDR^ebV0aE6rV%`kJ5ae)MonS)1AJBOXw=biy%@XKT~< zhYZJCTU(vnot@WlD?OCqx7(Zcj233G zrmtg5@SbUEF@817Kp0E4OJ{o|kN4SIM(aJgNb&aQ9trSqk8 z?$%zvDs#!b@*4~ddaxS88wk9a+?I3Aw~hl=o6XKe`VK(9@%po#DpPHaG#yT=ffJow zp@TN%IxTK#u|MrV( zzNE z%x18F4~x!g#n~fsW$6Z=34|v6gV!u-q<4G1YTWfg&aXirGP@?&MVM&~&f;(b8=OC& zL6?ua=brt)b^2ZRs%|hUj3HBKC*U-L-xjMUoibE9xUocVj=_@M?FC$YcBg&KfxkD~ zTbAVBp;W5CIuEa5!|&{(mL7**CsYrP=w$Pej#1@)Z#_Wgc6T^}!(9VygO`*0cm8g? zyr8`0%-sbya;J(+Dv{Dw6Y^!vx0k4AfEXP$Y80FR8Qu(de}Hodta{M?*_p+!pZO11 z%2g^QduJYiej|PREeO6UYi*V|Z7>xl>+m$G&gh}jad|x+?w}9anMPO{9zadbmK5%d zaS+ZiYV1@`+23@`Znv@2yggj$HI~KUbMFg_7lQ+x^OXlY>XCjJaMlNhv~PHF@iW{{GRP37?{lwrt%Qqel6q{ltC5SV z^l&DUuzP*9pZAxH-!qXG@4`yRhVUjXxBtCc#sAAS|7s?xJb`xaWkF1A1(9 zQf{-Sg=??J@9$fW4Y$wioSdQ6W_YfBQS;4Q^$a+OZ=CzoPxt@&0dnh?r@w1;wcV3( zquMA>O-q$?`5W2P+qv>gqcxD+giEI)*jZl+KX+N38QS!4M|sykE9NxM)n(tFb4ei)CYEJN(rWAtV8Y?D zh4F&k8Gm~@{Ig3v+#DO7dM!UW^mYj7#3?49rOwvm^0_n~74tm8&G#JD_><0RmU0L< zVmxuKyvX9W+dU4rQ`6ZXNbg&OPq;DdZa#3HtcX2gAx> zOslT0q2pQI?gm?Pnpguh>;xNVZ3kN!ryk`co_cGer~512Py51GXKhRqY0r8kJRQem>z6_QFxX8;)rwjO**^=~nXERIB#v@T}5iFyntw#z;9`mga zP(UXGnhm?gZa~z@E|%)VYIy#!K>$6s6YCSR{*eB7l2EB|Qpa~nN(!7sD<(fY#+?PP z7T{Iaad0zK@!3JoS7sZ$Mta0qxEVaCtaVw!RQAFX&FKf{KM0i6)YOcOj2_IKgu5hR zwdW)ip0HOk+bTSAy6zFwe^R~W+T=MVlc@km&6}P)d0X=yJ2(50e>k0)Tp6Cc%^*5? zgAs4XU>E*G)tEERIvT-EgD+{nx?Qd{hyU?V*6rYShu2X!RiN+#WWBoV_5XNi=4^?FVz&x#IC)+F`m7E|?j* zDQDcZE;{v>%iuIRy{;s$JYSaC!ZW$K@!)jaV*A!3w1jXTpxuoJ&P$pAx8p$&on3n@ zN0!k-OmMgIf`{Gb>#m(xpP2RVX#b+-+e?zBvr#^9-g1-KNVBuE(>UnlK*5nfBp^Do znmw%^F5HX`o%4EYYz=8VP4o|DmSaJy)q?KqS#+|6i`A2>eGPDiyPVGU+|gls1lQ0B zOGTCkR;dLm8c3fz^5%czJV0kfvf02hPx{wm)V1$&de~ek32+2$ZimC?l=~!u>0zW+ z=i~`B{w9aR8F&Hk`93`Td69fnvQ-9$lG!q$^DoIdKUb0Y->R=oW)p~*3#60btB~UC z1dH6gD)ZvQp3`*FBfEpfh>_NE4dh6n8g zJ706o8BaaE*qpA2S2}ypHrS~<5l0argHM0vUXQdoKEEhsOoP`zA21%OqDUZ&gvVWz z^tB7_wx6Ba+Nf{j25GuO_3%lDkT>kPKyeOpb2Ez|9fv4OZS=NSytZ_&nu$*KiU!^U zr{C3R)5C4_a7+0F#b~&oMk{igea3(-A)w*d);qU^m8oyN=?Czw!|guq$&z~RF4kiO zifj;_Y{(%UW!X(TM@~JBx*Iy}hoiQw>HF!TBBmIa*$D&$h)z%sVC-bUyWvMXN0r&; zF*{riFVh`zSv{!G#lo9O<-2@ZPoGaCEYA z9G&D{DwT7y85QbAkCx|r*Sw$eB*3NA_Z~A@%?Ij_H8<1QnCQevXY~lOv#ZgrPZg{E zgXQ`R9f)%^6RN!pV2lKO+_0_BYj@m|bVVp%0TkdY0(<$=!n?Ox_x{jy#OZbGJjtQ6 zE8?2zdqw&bhu>Lcf}`w!TS=p(`Txq-J(IU&lp_PyeC3!+)Y9Y~4SV3O3ugh#hZSYN zW#?q~x&Oh9s}&{tJ-$JO{GuoPwkf2P%1>cQ2vL~_dwvbhFZ>uk}K z!L%kq56?oe7*4!=;_VuJow2o*PTdx)rxs9;d$-}>Wd7)oIg@ZNtm!gcwY#xc zI>E=yiq1xtGjGDVNkwN|wN5HJj~7Y`;9;33%WU@2HB;N6&(~?|UCYqWy)8#32}ci5 zKqu)j4g)UuQHmUcuPro|sJnKKoHC6e8zOCnJNeey@4yr7v^qnwAUv&OS2e>Nf0@#> zCO0*9(i~xyMztu3c>J+GnAwuOM)|*xQEs@eR6TqG#NY<7Yt4Qu8&v9#;#ttoGHj#DT&MQY`@o!nnJdOV1SVd% zEezT@1{+FMYBMFNr)@RVlpeU&y0p^=UJt$67l?^Qy@(aPiWF-C*hd?fho*R|hWs6G##aBQ4!D0(SVma6x( zPVnb58%*fVOHDYMDHT5OCOD6^of;*`f;;cHq=E*I-W{glLR*hmE;pXh2$RGv!QlJW z+1`y(<-p!ina&Mn?yj99sLbw?L!r%Z)Hc^_yHs^PGn2DW<7f_gjx60s%x;bX1g7X*Y=R_b>R9Oj()YJp5;p#e2W@v4y+X>zm2=C1}q>0 zdUnD7)>s=-d206BmXVQBP*A|0WrHKQ>2zp9;dJ%nGu}FS&2mxWUE5h_ZAues203#o zf-vHLwo$LQD!-Yu1`{W7@0WzelmKw?@6`X0CeZk#Q1%64ytr>^0_29h=ga62V7LW` zM%%zAh|U68cB(U(UBDegXX-hpT{UesQ?siz&6fhV=G>Glm(Oi>TA1xHeCu7ya5vi3 zxNo{@GRvUJMwF95gk?<<@r7*U6T2z&+~(n5=HAN_xt-8Lc+Yw7_@~#GEWTcMS-LG5 zp6lI(+;xQ$of$^InJJG7b9Ig=Z9sF%z-p&!CRh6Cs5{V{@15AZc-Ir)>^2(PU`H%2 zYlEXX-KPmfn2=y%`CpE`^K09lL;B-1K$6#Bl5C45h_8pT&W9!5QEs2|>XBX^6qurnrs0Uee67E2plQO=}-wgdwYi?+C=<|H(DwV3M>l{ueFm_JX7ET>E zg{j7#&o213K$Dvx(H%3LdZ+5spQg_T*`eZKcQ#nV9iy&u2|VS^r$Ly)aUZ~bCd9=# zyUtjuGX%Q959lP!MJCmmyjJek>SK460X@5DDk58>&Y#5MWZ?2iOG`^lP3;t5GoU~} zUzAo{?yk~X>2O|_B`v(2(8zjQQ-Ta#M@ArVj_D+Uu|%UAy)De9;$u;j0QY%Ve_Sg{ zQS($Dv5#piX6b})?QZ*iTvmZh|KOwEp#fZihAwswSk zW@l$7cnd+gJyrT*Rcr0v#;nLNCb8#A58lsC(6K~{tQNnCOI+=#u{LG~hpzYG84yjB z4;R*X&S`Gc-G3@J+Z^^O(s3W0_zZLjJeGdY(|}I6TA4Zt3129~MfcY!kH6En`GnyN zSVm#T=_HLk_76DYsYl*wgO&gL_{SHg6bswP+^m^p&I-=)%RL3p>e&Ui1-+w1!%rIg zJcTr@Q$3;D+X$WWMeR42sb|6ozymy z_5#mNDp(t=r&v4r8`BRoK|MF+CjDi+uSeLUgY`#WIPliu9ltX=OmKGG;17)gFV_MK-*Q zy8gJay|tEx43RcL%$yk0850=O8EK7teo-==3^R~ElV%GeTnIP48EvcIGg~z^MWC|r zoLssXuRqAwHQ!y7G7YRLa0?E9e#5;3E?T&If~z8Y6fg;9AvrH)!cq6>aiV~85b6sQ zIR<|l%}Pk)N?Eo}(&01c4FQKfe5U!;1L|Avp}Saw-&jQ+^qAddr!fhEnU~w!*2m(Q^e=Ogre80d<8%AqE&xw=(48z(H;IB^)}%Hzgqa(dKdE*4G&8 z;QWdlD_FEQIeSNtO^w~;Y*BOhk_O+>S)4lgjI-9|cJ0uY&J+iRrAO2yEUhn`S|B}H zlGmPrQ)qtfrL~^so8_0mZ4GRk;fe=#69ni@1y_IXIBc<4Kz9Zwq=?*aaO@{r^N&qg9s;hM8JZ~#UPHE57qS+NRp#ma#=u}EZ(!?$yE_ER)Ym{WH~st6 zN4KQRgEliu=OBl=Gw3)E)#wJlfn^(IFQeh@?5_R8wVot!JK+KL!Ku&k#aZLsIq*=2 zb5f_%!O00Wr0DG#RCKDco9RFz8dFhYZ-{m1daSV5vkTNyB|PyBvbpep9Gg07f^y7G z{XVC|dDvJ!PLRV!5p}u*pps>_Upo4(w`(?n{nEmvi;vi2Z~{Mf;Eh>HQy);>G}$-W zZE-%G@pI5OAj;v&ovl6hgtwYy)#Y;NM%(jnMTD-4{vScY%DGM3zhq?n^fp{`j%{d+$+QFShaDKJ&>R4!qK& zZ-Ps>$zfpmlFs^cM92sv{#ON;@Lclfn4i61SPwQKctn9mk9#}h9c(UxyRFc{PgCeD zK0C+Vqp|YC685J%eD6J?|$Vi|UMx-&XEvHMW|}CTb$> z|B)qro5$|-Ib}WxOM)?&&t2x(n37z0z+HZ!{9Nc37DpQwLB?J!V1*MWPK2Y@)v?PK zxIXK${ho4Alk5ecYrnz0ac%hri@*Q9*nq+lI~ zo`?RQIcnNZ3a)=L=fSHavmZSC)OYni)Z3f2BpF8$A!mhn&b`inD-F)(e09#l`HTL1 zV(rqxyMzKEUqHv?Zg1E#OEp!<6KcgN7N3o?bOv5P;Z`+SF%}+3aGgXyAcJt1cd{bs z#Yw+Cb?Ow0NCU0MooDd&xI}L}4OYG(21#(XY`pv`5 zVr=qQPMkOa`ZXgXlhtz($R0kAPmf*4eul!A72lp|t$HB!X1m=Erx`SZWeXbQd?4Y_ zDU?MT8_&U|K=#^fRwfn$;rnsDS8zl1>oP^DIXO9JUCgm=hbB?mwn_!>0C4Yu>+bx_ zslPk^SEJ9QAxR11UdNcun829M$gqg@Ihp65n_RT+^hPjI&^&)`_b&YpQ-$N`m_CKh z?6tB`PA-9(4-Edv0wuGx#Pk$r8W$wv*s){T?Hev6om|5w{8ndM=ggNR@Ci@N|D5{t zD&2)HlVcFfoIQ6JG&oJE6Z1vQ4g(v*9%^U%C$CG*@U5?{txdpo!lC(h`A3T~t|3NG zMn*=&5y#OJ$eP5n)H#~6`!{qw$|xTe>;*4%(0Bz0wEyw!BJ`iD*G$ff{gLrKn0Ij7uJ3D3WP zxwM;}2ewu3{;X=-4asw#P5XaWh|k~BxQh;ka5~u7m%bfAw#Dk|>IR!WRW#U1IzvED zUYT?8zY13wjmDl+zV~hAEXh3df5g?YjGotJUb@GAluonB9Sb@|95=BW3HE=JU7s%0 zR(TrWO}MIxo?vjJ{-OTJvDy=DrZ%{r`?&>4u!ms{U)Fs)K{yIl$bwMAb1k1OXnuI9 z#!P6|1vq8@e*C?U%fEnbhxUi(5+d=qSFoY$nIfHDuTPLs;neHMO(6l-AYAou?Zb2V zxpRK?|FnzT4p)L$Ix(g*CWb+G4agmVCC7$G&Yhzd{OjaLiw~_x7OG?d$;_m4_zt4b zDzwRRlh?u~;Nixv`t)}6UhSi1?mA|S^B`Q zw54w6v)R9Za`=qKXNAyMqDF7aI4&C^bPM!Cr#APq4D0mJ>7I!&=u(XD`r}w8U5-~G zl;N;^-LU&tsds^*3QZnE`U;%ndGgE#V^f>MI!!)daB|9k_=9ULv=!Ls?9Adznx>~& zl4Lqr&od*yIa8=CXfiejb8W(v%LAFRxpG@c-8XP8|8dkW?M)Ui0JF~N6njlrGMCii zb*DdJW7uV&M5!GvLT|%rKdIVsyXI=GO_`jUd|k#B|2gnwLt9gL`u$jsAloQgd84Cw z@RM|g_XBhe?8~%i)7b9Bw+(Do%pMkC!Q@PB3N++Oz+qaUDW5m-{il2AXpJnlnn|-@TU>3E`J?+5 zVns93E0y6-Q*N4{T!YobGFk)Ryd=T91F*e*&scdLyz&+l6u`@0*9YVv!^RR-w$!?V zvv)#U*{o%OyIcRtu)!`$v%@iFE5Wxr4vz(!wz1Ob^a5_{%WyV)NZw#MhX%(Axfv-uCp{6T*eHyT9dBP zYPHbF`RQ}NZP}mW%!aK8EV8j2L1^vfif!LD{P1AGZ5FGg$=#w8oHfx2?O{Vb;7VsH zjmY4_j{8ruuKR2K+rDQ1G}VOd#?pf9^fXN>vrYQBX%a6}&DiBV$PHj8@XFd^HyYih zB0)h(^^PBlE~Rpr>p=FFxTo>Jw4@2(SZDE3iJ&+MchaUxwbgC)UXSOWr$4zj^TrLe zUw*GYI9GmwQprsi21h?m_Xkks^^Rt(IO%Lz(0c`%6pFh5gY;QB_YfrhF`XgUtqsgV za7}8|8a7s)RlIJPklio=m&uZ z=8@JD<3xE1iGs}{GtfSuUb~Au(f2eTbUB^uiB2D@VQubb89L#mBmX>Yt@+carSMKJ z6bWTgSsd3N-!d1|nOJS}dOdrZ4op){U?6zG&_e^@gq)Bvw$9z`rn5e{sfWVj*;xD4Uvqv%+)SDt!x zx^v1UsWYZ(i`vuC2YcJgB{I7>c^X^=Y&IR(^upXLf7eo^TvL_g!}hn8dQOvfu_%+I;w2Rnc|)i=Sxyze}v=)1wBSdam*Cs$8l+e2%P8 zCX@}r?KFDe;AY5lZ9dB}>uCv3lfWE}m9x#|U$}CMFypqM02Vp6GNek%!Bu?+?uT z5^8gQ%23!K)vSugC5*(Z)#79;ad1Es1oqyug4Pub;k z{p-}nw`s1rTsiZA{{+0^gBOhJmiVkc?qx1Qze7EAh~42Zn(5RUU}ziswppB3uoLH# zjPQvf`vW!hOOyCKqT?sCq3dVM>c*l4nE#=N#o(HPMvjz*xTgRB5CBO;K~z!X)`PLr zO=aKS=EGAJA(;GFAQT; zxdvZbAjh1~S7&WZ=Vq*#pd4M}Y4mXQ`;BFV{CqfD7Uf*~gS)(@rQTw-&@fp-D%z?= zJdwgJjn~x?FSz{hsm-pIF`{g_Risv{;Q@3@_EkG=2OM<%c{|)p;&Ok0hZr5YE>2C5 zA>jy;ungX{!Lp{Ys}agt5S@NI7);=DH8@)|qGY(Qv1pjMSUR<`6ai1r>N15!+7d2{ zFBlOIx0Fwik7hYy*dvXcZI}^gj6AR2V_>PXxs3XRgk>QPm1C;+`n+G%d^1LttF%eZ zOP?eX2+LYevmvW-S^t34v+6*;ad%})^*@h(c;Al4-#h-PL2s~8-RT<4_Q0|DzUkn! zq>1o|WkJdPKWEtJF)%+X{IXEKB$C)b3ky}F8vU&<&clANwX8^3z*5RbsWVt~4QL$@ zI@uXn7psf6HSTe`oNQzg;quOG1>btoG{ULj&^sY)VtU#XFW+~vt%7FyWb-#hcLae$ zhU0L_vv7ik(r#Ore3{*B8~h}l2?dM3Wog?-DRcEcI)xkDc|c$`*qhmmH4~L%>->5+ zK;_0WbiBWdju3^PJeq}E3Fo>U{F#S(01j@dOp_zcxXM2Z z&L#F5b9v5%dcU!vwFa8b<%Xipwtn6#;1*G1X~-0%V)9D_>6!S?y&lz8K@>{V%+d*0 ze50*JD@K9j{`isH@Fk2FGirPs>6%qgUZxfYdBEw+WX+|;;t4D{Kq#jKQ>#~}%{k~eVWS2rXZYFM^AYrVyhn{E#!CuVIL(yF zQ*IsoU+n$O5MvQ{JPKa+^Keorm)aHQ4p30-924QqtIJcLQisuxg*HEMif) z(2bX6&-Mz*j)uKvGfhJBgW>2D={T0^IC0FJB=~B#dcv=gq)IlA1GEs@`9C?=e{A~t zy_(N9oGSUD?vTl3vREw9pHUI&eg1lTQ@TJyb5!T&qv(ttjOmOCjOpwna4*n-=nUqE zZ?fxkqLla=9_T;~d3LMM%%YUIIB!}{qr2Kpg#tPU$IKZ`cX4Bh#x!_az^=f?KebwD zJ~?nJhlQ<2`w5yA3_?d6%l~}v&5Kit{bmpNG~q!$Kkw3GuG0on3+T?EPm?6br`c+5 zYSDwHJbn5!tAR)0+EW{z$z5`Z_uLGT?zS=4>clA?PznkZGJQaw5Gp^w_W(wkda+ggsAPK_p6?DZqjx|9VHj2=Cjy~eN!M6S-c zWMSGBA_u>=rT+D@cMsMaZE0uSd}tJs8s&6PTy7k5JJm zRfBt-W$DyAS~P-W777!u%aw{wMb;r}8O>!))6DsVB0k(5OfGA)vsLF!9!$|04bYN_ z^oicY4JC5_`OrVW*l>k*7JW2=`xTzPT%;qLI;7_^+&%ws^!?B3cch6m7bO>8A~+ZJ zRK@`v@#C~hzG?g6CT%*)J_E*%Xx2H75 z<0x>tTyV{PUcKX5%^ZP8!1O`*-GIiQX!6AZah0V`<5Gi26-&g?96`O!;PkqZy>ccv zLNTn+a!eURg3-F!(zHgmA=5*h3?MqyTrLslp9#v*RjrNHj)q)+8aw~lZ4>TGE5<$i zf2Y=8T6o`P7lBybnQ;PMn= zX7h04iU`dKM?x7oSh;IG{QqE6892OFXDwZ>_{l|N3Or@mZI|inTl0Q=+*?`OT2JRj zb28h8Kl=3#P(5gf)0XNcM@vm@Etg%D4rn-LJT*>6-Jom$3TOq`k>3?PxW{t1qNNt> zouE{@TffKS-ETa$O!L#Hj=c<)PHG-=IQq~|cw^bqd}x|t0$d_qn49}!aPtReU5Nt#?I?^y%?hR>VuqLwwL?&k;1*hzd#ns>P@SSZL{Hxoi`?Vk*Z-1|qtb5t^TDv8?aT3I9ut;t$D#7Q;{Z(!kL-kX^`$ns zH5S4l-e1A&$$JJ0M-4MXP@a>r-rG(RXv5pGaf7_qDqdWMTCXr!U+b@x9+&4)%i)V7 zl!OAfk*~0DVG%qYGPev@tfw}n%DZ*$UvA|pzAWDgnV2A`ntn18cC5g$O`d)MmJ3)k zde;?GeIch=5}%w4USL~+RV+6TZ9bs+5hGfnYGFi69cJ=Qy7HNt&Lj>_fDQ42K!=NQw8^TiII(zoyhbZB99uN-8SQ;7R^ujkrEbDSza*rs!;o&CaySgvY zTKhT`-&%roFL{@?a*^Q{o zrh18H1x9g7h`gKOQ2}-OI)sK;L_E2?wgk>y;sB-i)e8B6= z8yqM$uTy?0JkWFl+X-m4Vsb@;MCEWdKH0hE-;tMeXY&0aWL4UOYg{h-={5}v_-2#U zc!(zCrB!#u zy%_5Rqt`=g!`0__Q$Xj@T;RkzU;yylJ>2I$q=x+RSJBY;b?6@afH!-Knk;Dzu1t%u=(UJ2N#}hDFy69*}js5_H8atrlrD4Jj zyC59=nq51%dUVZx*q`_c(j6!69q+s~9l31rC#*|g@~;CZJyB7(#=)zlJ7vTY}3!`Mr4m#M!U=?j)S0vpolG^_af ziM)=CR6^9%U-A&kT&16?=zjj? zn4^;X;oN``%ayll%7q>{=G)~ta-R>8t=M-or|`DXhDo!#)!@9u8ub>#%GJ${*U8q) zXH(_Au~0O(x@HgO|RKE)@^IP@5}r`I7TDV%>!9Y|AcSL z%26s+clKRFo~uM1hi9=Gk?PgevQ2?#bPF8~4{ru! z6lN~OIcM*6^pja&#aq+vFnakSdilA~^13%8*1_IIyGsEMoS@xbtEh~bfx-3sstq;5 zTFIX_kBxd^{Z$H~Ww_t6|Gi0D-zGjfkXE(Bf+D!ZrP#Y6D?Ax>=8$&fiIcC8P&q*E z0H0jGc6>%|hfS=GdLMT+O$Zc5vgf)zGs0QDqCU@MuG=dhexNFkt2R|5hQ@il_ZmYd zqNE#G7nSQSDY`tU?BvRrrf7=tX82T zWR8V!-<)&I&Cs{4J_G%dvrTqeDi*<0YuN3z!vTD^=RqkpUyQ?%m4c8tg?$$h)|<9R zw+A&B%#&fUx0XlT3gK6my_uakNod^b#W~db_R1gcRq_%96PAuKbIIccfOVP(uFMM| zpS+D79b+L`9S+lqki6@Y(KQS2ksHieO3y?tRZO7QwB36U^!8>+;V8Aa74Ef1k6D*e z1JX-{nAfiyJ__nN_?ruejKJL?uoia$hu=$>9fy+@L-Lm;No*ovE9w;nXk})pQA)!? zKd1#x^m1d=U7=#2(#CFN`Q5^(jrv7U;_F!^^9Ti9clffpjfS<* zDaYE(dO};Tu2fLlBlksvnZv}kT;7G2$0(tSg4NqHo@F)33oTJ+wa@}sTFDzyOoXgJ z1vck19OlvuD1~ZK99tov&-&K055PEYGBH*Xeb}6WEERmQQtj03zMxU2mlT)!siZ7D zZSRUh8UzWiX6!A%+Dp$ga^DC;3(=%*Dg=$&>ysbH&6KFBE+-{)uWQ=u0bF#v46P-Y za8NUtIBw9)9EooQb{&LaSDj$2y4l^@Vg~0zQ45~&%bP%}Vpf-LrP`diH3d)}UGWzE^reu6Fv)1O7YXYo(bW@*N$msd|PyA!@+If?@t^%&xB9DhI4- zD$m-sduFay6ZW^18%GYuTjS16ItK>c7iXJqVxAM-Ccmf-ujD8Dm3K0d{6fXHXAC}TdF0a7c z!&E8l9AcQwP{l)l%UQMM3O4)D0tU{u?^O?v&CVr`vYg(x5?RWu8=$VUp();Wsc16j z#WiQ+xS8b~l6$jaxMFDO<1$Oh8NG0#G`K}mVNJTL9;t#`2xNZ>M`XhR(!W9_Rvxy0 zDk;U>Y5d%vH`O}$!5W=NOd#vvAiIUHmAU2lwUcK0lfA#x zpehR<`PX$g&4(R=lH^lvJF~*Vr@*$hwu2zM_-F*+UKPE5?qGz|gwdx1Z8;f%^Ru^t zw->=Rv5qrD#N<`$+h0B%R%qY2)`M9@%N)x2{f0Iwa~;JMy2|JEZAjrPd7tP~Uk{nM z7{P*>)R_BtNOxK%`Mj*5o7vqW=wnNgcr>%@8M`7qW*=TIN-)JU_OG|Ups@prPx_D1FaWmkP$RoUim8-X~ z&W@5anU*$IGA0ws1mUpwGX1)yRnNHa1JPYMd>ECQJHe=Azd{ZT@!3gX*?Qjg8D$x* zZbVVI-VdQwqFonk0>BZw`#rYk(+Rn1vk;8!i&b}3-3gdY)@D?|!g-VTrRnXjeU>!( zER*Ikt73IosGK3BxP-zgu5t0HgYS;|i|AFcJy(WSr{BV`NS!; z;07}&mz5JB)?(HcPs3D*E#u-4nsiSGWY*CXy&6p_DlhzG}+cgpb(-kp=sqfnen2-vQ`Ey9c% z#6B#ArhsbtXrFwi`YS{U4QMEDbF;Px^zS#|%T+dMk(%l16h9Umyw~usj|vLwos}4l z9v3`6n4%^>t}f}k6@kS6`~4b&_24cI4tzfX7yrJf_I=e zId8qKBA8&VZ(IttVZ1ET!@j*4`2asV;|Z(kJ9H@r)_5E2mPS9xB#c39`%L1O@v%=2 z!rNh>29;=dSg0arX`!` zZ@o!gUV@$Mqy4{nxgC^1R&~Vzgu+C*AUXwtDe2FTaD8mi-^-b-PVKwP_nhI$@P*`{ zdZS0-eX^{T2Sp)jBP3?Sru{7e68nOnjdx#`3}QCcfJj0%_OeCT)j7_qf^tKaqf%6_ z6sl9XJsl#PWtVmkgubr#|MxWjxfDqe=ai70=Z)&wqGw6#Ba5Jd%o5Gh#H& z_4-QR(An*q%tk9aThpw*v0PD=!~0y?ay;gW_l^c0^?QE*e$bd zFfU#%b|UM2BZaRDvl{|FDt?wTjzkM?39#t%!(w5I^HUwl;X-BNOGkNJz*qddx zQiRBX&&MxX(+3B0zpVq0x6h{;x<>C&u%{6|kAq2f&EdB14d+9iz^SQ0oT912F5M8_ zq=rP7JSu55f}%<~meZyHH-!yY)P%odOe=pR)IYo{Femir^a2tdT1hKB7~wo_^ht7P zfVRgiQAnY+@bf`{p_Ox!D4E$ZZ|3SPt<*@UB!$=9n*Gge68UZ1IV2z;fOhsU!eZ3g zR=h2`IaC|WDOo`ila*Ier0%)kwKR3sMC>rJFC_2Iwnj2GZ^ZHfRq`YLaIcy7V!|4Q zh7?0{S+X;*JHh+<$KsOBn1`FGX&}@Mlic9T8NQ~>F=k&jg_JdxvPrZ96m92?yca$8 zIrdH}twP#>a%x*CcYZ(ZtYUMn`p7mlm~^AQ^64wKLyb|5R4u+`GG^IHz}()86GwtE zZQGMEW1>+@l|!~#rh&}d7@fy!<%%+{`kCC!g4~lyYw!Xi7pD;zjfuPIbhyc-UX8qZ zcUKqRTc%{T-ZxGBk4qwTkImZ0H}V?u%JfY@(aK}qBe&NTr|r*Xr!W)*(;|O)v%Ryq zOg7q1)o2OOJIERtm9k?oPGIaQt_f2>++!BX6KoacUyIUjB#SFuHTS7& zA7qV3BxoXf`})q!M5nTdIlp8KRqTV~aJ2P2IBoQ=kf*mwh7N>5*7JxRdju>Ao^s)T zXdN*4^_jg$(Gbx}0KHB>U@o|fnY1fB(*BRrISb;XQg)Xj%(9m6QOoC8BxzwYl#&nE zglNc$6EHa^u>dO?@*&o|>@yRIlZ&nMB+v&KFFCzqZ3J6ZEpF!yp63MZPGEjgc^GH5 zG+t3T*jq!+&qu8>Ep03f+|9?|oUVI>>!IPh4l8Uqj(nii#uHEDfiLOSS`zJwc+9cy6e)@l zV310VIS$pm1ob{7lanH6HD`*)W3FE%vE?!S-o17(;n;Y&E1F}r&{vqBR9IZh0UQ|P zC`g<7Gw3$(q=_HZC!&UP70V|a5{Ex3fL7}S3zqe{`uXO%rCMoJZe8nz`ln|N2ZLc~ zYTK123-|pM0P^<-yh$$h&kxIz9m1IM=$9{FjV4=!$YCCuHa*$_b%b72^UGX`p&rDo;!=N!$H zLmx!O(yTBrG9s(TR=)$tNP{fJNJ-ycO(-^>2x zd~+I67pO(_GZq|sCEXx?4^W;ZL7s%Ztl2p#)^_1)y{Ev?!s6<^b*pO&=}ZYZ*W7o1UQj@cl^%CVcLA&oB-~b@e>+m%Ro2$yO5Yb*X-UFLcjOP9xzh zRM0eDSjT$O+vTbSHWD<@$-UFxIx6&~thn$aLvA*=0;yUoqHts2YJ%tL&H8C^!mG|9 zvTflcSr8?yb3SW^FR~tK&T}peEoAcY<-vSH;C!mf5U(=L+TnU^Lg?jQ06NOE4fV|F(V$ zxVyXSf!!C#tx{T0woTIfgL&1lZ>@GTYqjc3s))~VDXi?HN5xPfJq>-j!uJKPRxi^o zNk}_>tzBMSZ^(rkXJKriax;zekq18Kmn|RPB#dWSCAvEG)qwrz*7=n~Dkapd)`fQ~ zNdnF+uOBBo9djJSAno#=J*ycI=iXmvdXeMnQ9SX5?USmiIqi9{U!daswpV|10qvb8 zmV0*C3_Znb_-es|d>%Z-`T2n-AEeiPa8-7vc3z_yhnRF|sW3y+M5D8(Z>#y<0(Rq- zCEq(aai*EX>WSc`Fq`8Lwx-Z@Uh*j6Q9W3C9*6O4B_XA@i3xGOQ~+!GvRf8u6G!d- zTKGTWL0%!C4AJTqcG2g*(z}zdmvJ_Xy@YXz2R9FZ5-vIq3uLue8 zk{^NIa8U!&|1d;p_C&;%C(}>KqqO}rYc0un@$hlEE(9NTI53w%#n{{Wuwwa|% zUc7xo$0p;-P5qMot7%f58z1l19$hrm>G9WR0U>Hl3tFdnG6W1uXdwNvk|n8TJX&-8 z0ubkRXadRo9qb+JNjze*)A=U0ku>Xs%asZR0^{UrZH)*z@;g<2m-!ex=BV6Mr`=jU zI}bN76e#t&jC>6agucNNZ?EwE&B-_x-eaUl4!+fn6+=F4_wmywd_qD9TgF(Rlk@uc z6DdRagcy9D20{Bh8no4@pM9yckZwa#C$mqQ)}q1x=|(K{WzMHg89*+BbAWGh%e_lQ zJI(hG+PA0LzQ58Iv4uNnbQ|Wbmq0WcObAi{wq91AfrLGv{-8kosbcb>J!*G&kw zO7a$@Ke0b;>mw_euQ>S?L{WwJ93XP)enYOcyZ#ev0s6&~f64Re*QnIIsDeha_l*GU z$yBivS`7i@F=(%8wNxICFXEAV`m~SZ>jMAG?WjX*`4dfvZV4+c;4N=;G`pykjMMR$ z&!L%^(i=1sJHO~Y{G5;r9nqB-+?8eaOr&q*4} zz*scS`A!wW6|6@9GK*y#trKCU-MGUfFmV2I&zRH!1UaeO&G4HQsX)AU~*cB zrAz@dlB4c)(aW-f8(Wo`n>W}f3@#)bWKMzW{sit5xQNyPrJPu zKKPZ0+c%z;+jC>&kwVL1KX)=YIT`tRUezrtE31Bu{0yn{4T-eYU8ZHQ^ixBE`>T)V zkKflLZ6H&b(!hf&j_UkaC!EX~=I)GMqjMw0S5x+gKQWRLQ*Cm31AE;H+QuXvV_m#3 z@!85e`5bRc5^yBZqVBR{Tu>5sYVfjF09>r9%chreg(U@3on29bGEvoQj5~7G>k=Yh_)68&7rG-BZaeqL+0H#`P6PG)l^<6?nTyRU?20 z*Kg(I+15N%$Uad!H(g7b=n76;pExy+->M(~NXz!*v!FYi>a3%F+ch03gNQN3B9Cwx z%OO4|UH$nMl#h6J7uM8^<;ZvB!?ZN&&qiW%AjY&1hOp1k^631D>Bw;vRTaJNOUQm< zPMpJyoo}fpIr_dpKWYi_h*46{9$KD2m0rW&OMFso&8D=j0?sH{YbYWRY-EYE;AEu?mq(d&gq=G|fpdjmEr*`Wa&Ifk+s`nqN(0p%6E)WONru zu4`bp7VYuv>7|rl;(bF=@6ju8bb${5L#WQ9P)Jy~wYK)8jq3Dzate+-dKJm+NSyfv zN7;DA=!ct}Xf_{wt?w+QqSKgJA=(60e>9FWXrX*MHf=t6^9894!zw#ITEv87<*=K# z+GZBw>m_E|F0_%~0*>t)`+y=Tud21oWeBkZ++*qy^$fc_^L?bnO$rCBN%7LG;g590 zeyKY-IUTmA61+8lWN^Wruk8Rdk>>=k*X(%K*$*E{>$D$noY%y8ELE-@__{=Vz=>zZ z@CtXEUU;Oia5|DiN{{tgm-tbiZ~VQNVu6s;+wb_MxPZ{g1#On0c5RgLAsXi0GPMHv*h!uP^h)3;87<+ zZEs@u%|f?>OxmWdM4z|E+Ep&rJXE;RJ?!*6_LirvHQC!$^iV-KDtllg3cl%XW~FQ( zeduH`&@~Ji7(2KWdG~VRe5c@YfmW@hC9l9}bgy^=iil@siCxrNnJZN$lVNU%xUw*ny@A1 zM^x3<^B|vi=3}GP--W}W_K32&IOwpVhMKziQC5U*N&J&ZlQLG|Ky0G&OS*d~9Yhyg zB&4L*KW&`XT`OA@-A8ABb|ojj^lgh==AJ>@Ws)&A{aROJ1;1Flx3CyXYf80Jm!jSm zf)4AEb1CuuXg=+jzW;0V;+l9iM{UBIRVK*%W&<|1xOvawhxj%-v^NAWw+`rA;aicd zuf%u02hi7P1^imGe>nGT-X)lg$|>UbL_yPh$4DY8YGeR`K=}BedU*<7XHy;r89~n? zZf;MnBT{cqaZbHi>`R5RG%u(4f-~W zZIcqLpq8HD5Zf_FJ3Xz1u=hmN!1fJCr6F~#gS>jJA)Ar*G-7UpjS zfFpd>QCfweq$RLs7eB*J6M>h@cJ8*R>%1$aT@!CkV8A47=K-#$X@c$2a=UEZ&FKW- zP`GufdgwDvU*G6CJV)Lae%f;Wqjf?kv#+mE-NgG6s73QNqo&RN2~g565Y=_g8 z4VRW#d$w%(=B&AXG4-61+c&1PHn{G*z0Nyw2TLct75os!X_VC2**Vs&p{py8c||c) zUhaZ)@xK9#&S1<|iCx@k60z22_S(n()y`+69lfqU<)dUYx3b~1KJ(qJ*4oRX+Y?X}N z#5)m{Dbc6?gEN*fObOd*LRZ80b6c~APmrre2)`Nc{#4UHOC&H6$szw_o+A5A6Q#-~ zp;k9BD=~~QF}0p1I37K&K!;ylCPKXf1L9$CQBY7!zh~o)DK4DTuHZK$@k(BVW6k(a z=5Zr;bGIG&wqPBrlE|CVNzM6QhgMWnKtVP)gOaxwf`^k-8+XjJ6-Kqk_yBp!Oh&E) z6QyIly}kX!M-HJT54i2^(=?1!cRs^pI|KOhKe+qa;BNjOCqz;{R`XZ@kS>34cCOVe ztJ5s$i)YMw5F0J8U4e~kEi=+l#C5F3jOE3gH8)jyHN!pR#m6FY)TSat)Vp*^Njx&h zD_=jP-*x)Fo{f!donfV8;Vv5Su?-UG_%j>GJ*_*@P#)t*QQv)bkeKt`HS}s-ag>+v zw;+FJ3**`EbZ7nd^jzG#8(#@fg6=+_I{azjYvP?Q-rX71ANgs-ey8`4y(P=v-S~As z(h(K;`K~|XPYVXvoFIpLchdZ0i%*fKP~Y+U$A3gX`6)Vre)mh(fIlq+@*=}Hv_HE0 zzjqJ~reluI0>ObPQENfuC@F&zSwk^9Vmz{U0kC zdc@?4wG_YAcE`*9*oV{$CU0YVbMJ(iL%uXY&NoiHjiYHJ`;(QcTb2DA9pvz!Lrdyn z4V*F+B-@XqJUn{i&uBx$B>>oJabW`JZd4H>v5B0uPh(wh_fptmN~BN6q>hY6U<523 z-3|trbVucF8()3P;-3XGXH)B~0A61~O7SefGpDfLILvBtjVEkd{ z24~G&UAN~sCeTHu>&^Tqt>Q-2wH3hh(@I1V6WP4})H^fCq@atxrhaB%dERKia#PuG zy^F({$;6&|jh{(wNM$bj$HPiO4~=#ICPemV4Cp=c-2Ra!9CKi;j-!57b8W5kMz3zo zO0w&&|AX}H9fwDrNj+iXvoDL~*H> zQpoacZ>d`*YdVwn&t5u$hGg#WuBO2w#BF^=5=T8pLZ_scUL!MUxcpb0o)`P<-&{bn zf3dut-jSi4vi8anYS`Zefk*KcsgUR|OXg0>#>;)yPin$Oh#&d%Jz}_olSQ2{OjXh> zR^$$IXOqCx@=)o~EnH%`cg*I$Y?;me%ZD#=I&johIY9!SgfqZ-lUkd$P??Jj-@~!} z^CGwd!lcORjg?D@@Cf+kSD%~B9B!_wL25>?<$QVv;KX=kPh9o6(^ zWc*A!5JX|7P&5~(dTPooW3PK=c{?$$0f14_@+p{j>)E7Q@5i+;^;E%=*FCS=d`p1g zr(i@jNjCz+%s{$Q3vhX9+7O+}EWDOmH(`^p79xm~C~qxLVJ%sDdJu9ueZCk`*?L=A zk?cjhfAw`z)5~_vbPtD6prUPHvS-5EVktcCXg0Vv?i^W*DAlW}Y_j-lhDUvHbPZA8 zxdaGlH{v@LNAk_lh0fccL{p7F>~qBxPqXWQraDEt+fd%^;bk8DK>vbV;d^eH;rZJ8 z3rR?>ui#ZqlU!acX(8CGgKB)+SxHk0(!+RNr6uV#VjiX1xON;$-aOlIJ$}_roa}uO zL}?Wt?jhMt@s=t#UpC3n(S+UU>Y?!-Xh$Ry@upWWVZq{SGsMPxx|)Ccye{64Ox*-x zGuw1COnjfLY3Gx)!kzC)WZ$tj*>Hx}2raS2{Gir5`PpYrr)k}2ah;{ymwVq&GIatD zoniu4a@D_M)$d1$Q0#{99ff_Z8j(dtL@9O%)(f?dZ1OgGNBt4IT|bFuBy?AEQsf9v zYu4riL+?E4dWhTf$-u`g;$YVeDj@$NhhD8?YJ7GrtYwo}cYOoPDIzs-&Ry>C?TLC< zEv^MF;Q5_T|6q%3WvrpXX*6}>NB{S*>%E@oBCgpe{XVS~tG72I@f((`my(X2lRx3s z^ItNToK~VbcGqKVB`JQ-#C;?uxcj4nB>J~Q59Ixe03ZH=jK2>4^>0i;BEnz)o&6g! z46y%V%>VHQq9{S6q@*4hrKQ+?>RoK{6`@89hD3c1wX(uF9kE=ToK!)WbL;Jo^je(` zcb|WcA8PtFC;AUoDg7k`NYWO^G%%BN3XQoNCyGdjh+N*h_1`bHu7X1`Q1?xnmdo$I zG4rX&_xA0Z{?C?J_D;V4C;<6j3g#c^{Ouh40{OHmzf;vF z09rDG*LLLJ+5WrAV7HM1@T@Yc;IT>O2dO)qK35|dccjbByOHI{z!X&a-;f$9*O+5) zlANcB2%&rCf0qCccTS79@4Z841CrIEP=4o?czMF{NK+J0dO#2dwtd{X+$w@(qA*;_FNzY%S!+|0e8*QfOjcA=j#d@ z>u@E>)H-D^po=ZM`-{$Hj);>;@l(KQ}< zs3xKYfPDEr|V3auulpfx2vhh@i|?|2Q3rJU{cbc}>AMv57R$fp`aiE6q&c7) zw`?i?S3UQSCVgfJxm#L4nm?3etJo1h-u)80Yu?~>(gy6~hQho1xN^tmt8e6`{%Zqc zj&FT`FhLg2SMgPpmHr*kcML)aUXeEJJI?WY^_s8^d9k~MRf&mT&(fE+U?0pskwVAC zxsTHEGJ22&4_D56IVbTOt!`=d&2uNaW2Zp4@dxQd*B2MJ}&h5Gv>c5t<&tvUQ*5^7(uP8&m6F!kZxPhDpo)I~nl zR9E5uH(5SbBiwwwTC(~>`h<|rs8Xj4&lQfu&{t&C!x1E2Kjxy{Nt-sNN8C)d8}QxT?W-w&2w3I~ z+0+kPGaCYx_!F>C<>Z;y+q_(Ml=li1E4Bhp!bg zYq*Y&J47wY7RU=+pIPnO;44VtGcN`9F2vQdG^gfs?A344nvFq24G8#wmjYBSsT_S) zIM~GoRWGhQXfuBlMi2#+QW9h~+3(gcy@ZsFJt9Eu+^{A;Y3#`l>~*Q)*brU4F-hgS zP~Er5s#MZ96avPp8d+6o1mW#jUAA)q3C!Y|m0Afy-Mhn16u6uUxyE0^z9*{eIDZm& z|54a;Or0hR@qtE3DzEw$zg5G!sq1EEaYH8gkaD-Aym9*I$n@6HAOXEV1=^0UfX;!v zT;vii;psBIKuFvsVEt0Kd)kAWey=pR73&hQ7?iY5 zuG%U1)cWB^>kdxB35nVYP)WEF52`=4ARX3)xzmK}8OTU;XxSfdjnX|xPe&rS2(H&ZyCl*YcbI_-7J*w3I^OF!V%fBPf$l>+n z+t{N6WOcr37o8A)&5;z{{0)pPYQ|w{^>LTUMee63q;#cX*VmV61=o%A$L(@R5l^zT zJS*{zW#v~6ipXR;OAZ6*EyIbg(oYVok0r*LZ`ePKIr_YPti}>2Kx_L~K4X+N$VWKl zlgqetRx=g6gCM6Vu#6yJDD|wcOhZsRczf8DAmav>?=AVTRTLwk%h5cZ zz(V#6m9~_{2bJvj@WJtln&7?hL~1jfnhXAq-VGOzeVw-gfL#yYUk;bF7$3hd7w{VQ zC3+7IK5@xsP0UzO$b2V9{ljBqAvRwPR9L2cspexk!o^+P`Y6mzdH*oSc4_2n!yq{; z#9C)=B+)OQ+CyLM#l5?pT8miSMpFIqLwW~U`szE|0f__dK2UF2Xusvl2Z7{C&r$M& zbw=W2mzRh+;s#dadAi93PYAw#$JHMRq7eTlV!uOU)UOZXMmRxcW@aAKtxxMo;-C_q zehya~SACBYhA?nBw3YOhNCGTc7H&z(SghOekMWnUA#jX?o0W4&=kBFi0utBFR8&-= z)9WBlJ|LYY3d=^Rt}c?jfB3@}QC`?i)_D#Uq zs>-RbizbG<`jQiS>N5jRyWXax_i)ZD)$gtn239RJ&9u=-1m<<uC{C5(zuw9nmX)u8U8jfMbENj22(GH#y%<7S7m(2 zBVY@zgA_}~j1;8C6eXK`cwYFHgBKkGC;ev7Rd{sGk!`q8Y1fNbdu25Q?Mtlzcte9&9* zGnV7=fXvc;s%5ilf-CIFVIs`3Qq(vk@z!7&>=*o340+)d?aWE-IddsA-ECzXQ)oRT zZRYo>bn@G6*s!~jXkPPJ&XFy1uyn{L{yb2|NAEN&G%p?Hk#^Fc$1gW|YnRUq z{nDBB?9m$sM8SqUw{;q;56RwV*?HH30Q&ukuVDJ5pH3GImpw*6;B%~A*=NYTrpHp8 zZ4p)ZB)JO%PGesxNI;FTYu#o$4D}+upJ<9z^z;nS8}M%ia1KIOr#zIF+Nlo58-^CY zpN6n-w&N!Y>yC-gUh$p(?0i^$b*pG9AG@+RNoDqn7hjdQ-sG)eK0fz30x3{dL|tSk z+EyjQtNymc!UGIqrnjze=~UZuuGm_;)Ar~xF7^iE*ryabu;$|X0z-{D0Gl{$xG~YS z%E*j_8J`S}E32mwOB1DcGP%7cI@Rx$U~kz%6Q%_YCrlP}*gd!e&ubMBF=54ai^m9P zV+=_BI?$i)Ss~;Q6VtEx7R@@Q&z02Hw%OU}ONDuxnS3` z5rkb2`OahEl$t`92gW%|lL?Q1+KB%#p^@@&4!RZoH$rY#)nzLJob5SnjZLO0OJ8qi zIN+1oYymP2NRM#eTT?B}e?U#wDm@$1=}fMxjfS#AKG2m`1vvvu+VaCW;)CI%_rwGd8T3#UIOW3)W|tO);pZJ8M_wv+(XPX(W_mrvqz6So%Va+{Z`xS z#(nSC9p?9OR=;36<@>w21MOJMpWb{HYexMJZHlJU?sbTK>)`ubd1h=Z_5n&Hs_E6* zlv7i*HJ>%g*N(5VpHbfx4mmC%gQAXy?*D}ULw~|A)_{M){k>acG;@2a^B$WH>9il- cEus4;fx+XAITI+9$SWvP;__mpBA