summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-12-01 20:07:41 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-12-01 20:07:41 +0800
commitb55ea16baba3f387a1eece3b60adcbd4db98f6be (patch)
tree5809aa9bfd92b64fb51429ba3258c2996d9a7970
parent8128b4edcaca761585f6ab81c7c4a9aaff763532 (diff)
init: 2025
-rw-r--r--.gitignore1
-rw-r--r--2025/Cargo.lock1650
-rw-r--r--2025/Cargo.toml15
-rw-r--r--2025/a4168
-rw-r--r--2025/aa.rs75
-rw-r--r--2025/ab.rs75
-rw-r--r--2025/fetch.rs29
-rw-r--r--2025/lib.rs2
-rw-r--r--2025/main.rs7
-rw-r--r--2025/read.rs9
-rw-r--r--2025/src/main.rs3
11 files changed, 6034 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..eb5a316
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+target
diff --git a/2025/Cargo.lock b/2025/Cargo.lock
new file mode 100644
index 0000000..57958eb
--- /dev/null
+++ b/2025/Cargo.lock
@@ -0,0 +1,1650 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "aoc"
+version = "0.1.0"
+dependencies = [
+ "cookie",
+ "reqwest",
+]
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "bitflags"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
+
+[[package]]
+name = "bumpalo"
+version = "3.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
+
+[[package]]
+name = "bytes"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
+
+[[package]]
+name = "cc"
+version = "1.2.48"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c481bdbf0ed3b892f6f806287d72acd515b352a4ec27a208489b8c1bc839633a"
+dependencies = [
+ "find-msvc-tools",
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+
+[[package]]
+name = "cookie"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747"
+dependencies = [
+ "percent-encoding",
+ "time",
+ "version_check",
+]
+
+[[package]]
+name = "cookie_store"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9"
+dependencies = [
+ "cookie",
+ "document-features",
+ "idna",
+ "log",
+ "publicsuffix",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "time",
+ "url",
+]
+
+[[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-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "deranged"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
+dependencies = [
+ "powerfmt",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "document-features"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
+dependencies = [
+ "litrs",
+]
+
+[[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 = "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 = "fastrand"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+
+[[package]]
+name = "find-msvc-tools"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[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.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
+
+[[package]]
+name = "futures-io"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
+
+[[package]]
+name = "futures-sink"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
+
+[[package]]
+name = "futures-task"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
+
+[[package]]
+name = "futures-util"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
+dependencies = [
+ "futures-core",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
+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 = "h2"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "http",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+
+[[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.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56"
+dependencies = [
+ "base64",
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "ipnet",
+ "libc",
+ "percent-encoding",
+ "pin-project-lite",
+ "socket2",
+ "system-configuration",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "windows-registry",
+]
+
+[[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.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99"
+dependencies = [
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899"
+
+[[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 = "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 = "indexmap"
+version = "2.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[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.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.177"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
+
+[[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 = "log"
+version = "0.4.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
+
+[[package]]
+name = "memchr"
+version = "2.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "mio"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
+dependencies = [
+ "libc",
+ "wasi",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
+dependencies = [
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "openssl"
+version = "0.10.75"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "foreign-types",
+ "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",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
+
+[[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 = "percent-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
+[[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 = "pkg-config"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
+
+[[package]]
+name = "potential_utf"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
+dependencies = [
+ "zerovec",
+]
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.103"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "psl-types"
+version = "2.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac"
+
+[[package]]
+name = "publicsuffix"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf"
+dependencies = [
+ "idna",
+ "psl-types",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
+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 = "reqwest"
+version = "0.12.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
+dependencies = [
+ "base64",
+ "bytes",
+ "cookie",
+ "cookie_store",
+ "encoding_rs",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "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.16",
+ "libc",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustix"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
+dependencies = [
+ "bitflags",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "rustls"
+version = "0.23.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f"
+dependencies = [
+ "once_cell",
+ "rustls-pki-types",
+ "rustls-webpki",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c"
+dependencies = [
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.103.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
+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.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[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 = "security-framework"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[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",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.145"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+ "serde_core",
+]
+
+[[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 = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "slab"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
+
+[[package]]
+name = "smallvec"
+version = "1.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+
+[[package]]
+name = "socket2"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
+dependencies = [
+ "libc",
+ "windows-sys 0.60.2",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "2.0.111"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
+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",
+]
+
+[[package]]
+name = "system-configuration"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "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.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
+dependencies = [
+ "fastrand",
+ "getrandom 0.3.4",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "time"
+version = "0.3.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
+dependencies = [
+ "deranged",
+ "itoa",
+ "num-conv",
+ "powerfmt",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
+
+[[package]]
+name = "time-macros"
+version = "0.2.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[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.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
+dependencies = [
+ "bytes",
+ "libc",
+ "mio",
+ "pin-project-lite",
+ "socket2",
+ "windows-sys 0.61.2",
+]
+
+[[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.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tower"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456"
+dependencies = [
+ "bitflags",
+ "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.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647"
+dependencies = [
+ "pin-project-lite",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c"
+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 = "unicode-ident"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
+
+[[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.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
+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 = "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 = "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.1+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "once_cell",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40"
+dependencies = [
+ "bumpalo",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[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",
+ "windows-strings",
+]
+
+[[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.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
+dependencies = [
+ "windows-link",
+]
+
+[[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.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.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.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.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.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.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.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.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.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 = "wit-bindgen"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
+
+[[package]]
+name = "writeable"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
+
+[[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",
+ "synstructure",
+]
+
+[[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",
+ "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",
+]
diff --git a/2025/Cargo.toml b/2025/Cargo.toml
new file mode 100644
index 0000000..f5d9412
--- /dev/null
+++ b/2025/Cargo.toml
@@ -0,0 +1,15 @@
+[package]
+name = "aoc"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
+cookie = "0.18.1"
+reqwest = { version = "0.12.24", features = ["blocking", "cookies"] }
+
+[lib]
+path = "./lib.rs"
+
+[[bin]]
+name = "aoc"
+path = "./main.rs"
diff --git a/2025/a b/2025/a
new file mode 100644
index 0000000..d882fb6
--- /dev/null
+++ b/2025/a
@@ -0,0 +1,4168 @@
+R2
+R6
+L19
+L50
+L44
+R50
+R48
+L35
+R5
+R11
+R15
+R47
+R29
+R6
+R33
+R43
+R25
+R42
+L34
+R22
+L4
+L35
+R4
+R28
+R29
+L8
+L14
+L25
+R9
+L37
+L42
+R26
+R27
+R47
+L21
+R31
+L9
+L6
+R26
+R44
+R2
+L38
+L14
+R21
+R49
+L47
+R23
+L25
+R20
+L13
+R12
+L46
+L66
+R12
+L41
+L92
+R19
+L89
+R30
+L39
+L30
+L24
+R13
+R75
+L92
+R58
+R68
+R32
+R12
+L33
+R49
+L28
+R41
+R24
+R76
+L62
+R14
+L93
+R25
+R75
+R68
+L19
+L49
+R13
+R71
+R16
+L4
+L40
+R31
+L75
+L90
+L40
+L82
+R63
+L99
+L56
+R17
+R40
+R94
+L59
+R12
+L3
+R91
+R66
+R34
+R525
+L325
+R53
+R168
+L212
+R291
+L16
+R81
+L65
+L37
+R76
+R25
+L64
+R10
+L310
+R28
+R42
+L70
+L984
+L59
+R159
+R54
+R30
+L39
+R19
+L880
+L824
+L64
+L22
+R10
+R20
+L17
+L103
+R3
+R82
+L85
+L30
+R35
+L605
+L75
+L44
+R19
+R88
+R12
+L35
+R435
+R42
+R59
+R13
+R71
+L698
+R80
+L67
+R87
+L87
+R35
+R65
+L69
+R102
+L33
+R60
+R9
+L553
+L16
+L880
+L20
+R16
+L16
+R704
+R496
+L16
+L83
+R73
+L98
+L43
+L908
+L38
+R27
+R80
+L94
+R66
+R82
+L48
+R376
+L76
+R70
+R63
+R48
+L36
+L32
+R81
+R6
+L62
+L486
+R48
+L20
+L65
+L31
+L40
+L90
+L71
+R17
+L36
+L64
+L72
+R37
+L65
+L2
+L17
+R58
+R58
+L44
+L153
+L43
+R490
+L47
+L73
+R33
+R40
+L48
+R50
+L73
+L68
+L21
+L91
+R7
+L838
+R91
+R91
+R98
+R42
+L78
+L67
+R28
+L42
+R19
+R76
+R49
+R75
+L714
+L61
+R75
+L79
+R33
+L954
+R37
+L37
+R74
+R26
+L646
+R15
+L69
+L27
+R327
+L43
+R61
+R66
+R616
+L68
+R51
+R57
+L40
+L98
+R598
+R7
+R93
+L10
+L12
+L15
+R71
+L842
+R908
+L546
+R46
+L949
+L551
+R23
+L28
+R93
+L47
+R31
+L54
+R82
+R582
+R18
+L55
+L45
+L67
+L595
+L599
+R61
+L55
+L45
+R596
+L317
+R955
+L491
+R857
+R80
+L80
+R37
+R97
+L87
+R353
+R16
+R56
+L71
+R80
+L25
+L56
+L40
+R40
+R261
+R39
+R869
+L748
+L44
+R812
+R11
+R39
+L8
+L231
+L66
+R345
+R21
+L39
+R62
+R84
+R23
+R876
+L106
+L47
+R1
+L54
+R6
+R1
+L578
+L12
+L17
+L72
+R72
+R52
+L29
+R17
+L53
+R13
+L18
+R318
+L54
+R37
+R17
+L86
+R86
+L96
+R15
+L19
+R91
+L91
+R92
+R22
+R95
+R39
+R90
+L738
+R53
+L53
+R78
+L22
+L259
+L97
+L94
+R94
+R16
+L28
+R12
+L25
+L68
+R56
+R99
+L62
+R87
+R68
+L55
+L38
+R46
+R663
+L8
+L63
+L46
+L47
+R41
+R68
+L65
+R49
+R58
+L46
+R15
+R10
+R63
+R42
+R23
+R516
+L381
+R24
+L81
+L64
+L85
+R6
+R43
+L35
+R59
+L68
+L90
+R91
+R72
+R2
+R520
+R191
+R98
+L748
+L35
+L83
+R50
+L6
+L79
+R18
+L14
+R14
+L428
+L2
+R10
+L556
+R2
+L84
+R30
+L24
+R52
+R91
+R194
+L885
+R39
+R66
+R76
+L81
+L54
+L546
+R81
+R46
+R73
+L171
+L629
+R80
+L37
+L83
+R40
+R72
+L134
+R62
+R4
+R9
+R43
+L56
+R94
+L6
+L83
+R7
+R90
+L83
+L719
+L49
+R49
+L57
+L988
+L54
+R818
+R81
+R242
+L42
+R11
+R50
+R60
+L421
+R73
+L427
+L83
+R88
+L52
+R94
+R89
+L82
+R687
+R74
+R27
+L57
+R66
+R45
+R68
+R38
+L148
+L36
+R36
+L212
+R81
+L35
+L34
+L83
+R783
+L7
+L93
+R372
+L72
+R382
+R318
+R47
+L147
+R8
+R25
+R67
+L8
+R92
+L34
+L95
+L48
+R11
+R28
+R7
+R47
+R90
+L49
+R20
+L61
+L91
+L9
+L512
+L88
+R53
+L35
+L197
+L10
+R83
+R6
+L86
+L217
+R3
+R607
+R93
+R331
+L31
+L297
+R24
+L959
+R52
+R380
+L54
+R75
+R46
+R46
+R7
+R923
+R57
+L97
+R3
+L28
+L40
+R362
+L57
+R57
+R38
+R38
+R24
+R62
+R38
+L93
+L7
+L62
+R69
+L503
+R41
+R36
+R396
+L77
+L66
+R66
+R62
+R3
+L565
+L42
+L58
+L311
+L78
+L33
+L67
+R589
+R814
+R86
+L124
+L8
+R59
+L71
+R73
+R982
+L54
+L522
+R265
+R178
+R57
+R229
+R28
+L92
+L174
+L888
+R440
+R22
+L864
+R32
+L12
+L156
+R62
+R43
+R573
+R22
+L57
+L42
+R918
+L19
+L55
+L6
+R29
+R59
+R473
+R51
+R73
+L11
+R83
+L96
+R10
+L64
+R54
+R767
+L46
+R79
+R636
+L16
+L79
+L6
+L91
+L94
+L50
+L412
+R272
+R88
+L10
+L12
+R74
+R67
+L67
+L346
+L854
+R155
+R54
+L16
+R307
+L8
+L492
+R12
+R88
+L18
+R62
+R15
+R48
+L21
+R80
+L91
+R25
+L29
+R29
+R9
+R91
+L96
+R96
+R20
+L79
+R97
+R75
+R31
+R56
+R87
+L63
+R95
+R8
+R67
+L94
+R5
+L502
+L78
+L55
+L83
+R15
+R98
+R411
+R89
+L115
+R65
+R84
+R76
+R43
+R693
+L91
+R56
+R489
+R47
+R24
+R26
+L764
+L11
+L22
+R836
+R96
+R16
+R12
+R50
+R46
+R14
+R86
+L30
+L642
+L84
+R556
+L713
+L43
+R950
+R50
+R31
+L340
+R18
+R91
+R426
+L949
+L957
+L20
+L31
+L969
+L49
+R49
+L39
+R546
+L77
+R78
+L961
+L47
+L67
+R14
+L47
+L30
+R8
+R22
+R642
+L56
+R53
+L41
+L35
+L63
+R94
+L994
+R90
+R97
+R13
+L80
+R743
+R67
+R70
+L60
+R68
+L951
+R86
+R19
+L786
+L375
+L101
+L22
+L26
+L52
+R81
+R277
+L358
+L23
+L5
+R21
+L848
+L10
+R90
+R9
+L34
+L10
+L72
+L73
+L160
+R50
+R513
+L48
+R2
+L2
+R70
+L66
+R20
+R41
+L65
+L843
+L48
+R80
+L92
+R53
+L84
+L72
+R6
+R72
+L16
+L95
+L82
+R44
+L23
+L606
+R89
+L166
+L16
+L29
+R43
+L15
+L13
+L27
+R95
+R69
+R355
+L94
+R89
+L74
+R112
+R548
+L60
+R62
+R38
+R89
+L89
+R64
+R81
+L45
+R81
+R14
+L498
+R2
+L253
+L46
+L14
+L61
+L3
+L14
+R32
+R61
+R30
+L712
+R24
+L40
+R43
+L746
+L28
+L573
+R39
+L98
+R560
+L729
+L71
+L303
+R3
+L154
+R88
+L2
+L488
+R76
+L14
+L95
+R589
+R6
+L67
+L39
+L12
+L88
+R291
+R309
+R423
+L41
+L80
+L46
+L856
+R48
+L48
+L28
+L72
+R97
+R40
+L12
+R872
+L12
+L485
+R99
+R41
+R92
+R21
+L457
+R95
+L73
+R38
+L2
+L78
+R68
+R140
+R160
+L494
+L491
+R11
+L15
+R74
+R31
+R91
+R12
+L137
+L533
+R52
+L63
+R61
+R557
+L1
+L99
+R886
+R66
+L754
+L98
+L48
+R178
+R236
+L75
+L91
+L74
+R74
+R592
+L82
+L19
+R98
+L789
+L71
+R71
+L78
+L34
+L38
+R49
+L99
+L76
+L24
+R62
+L96
+L62
+R96
+R637
+R63
+R75
+L87
+R87
+L16
+R459
+R39
+L227
+L30
+L87
+R1
+L17
+R97
+L99
+L495
+R70
+L70
+R22
+R31
+L66
+L68
+L25
+R6
+L62
+L81
+L57
+R16
+L37
+L79
+R17
+R69
+L602
+L84
+R724
+L47
+R6
+L99
+R94
+L78
+R64
+R81
+L369
+L76
+L75
+R588
+R15
+R77
+R85
+R910
+R78
+R22
+L57
+R957
+R51
+L59
+L46
+L38
+R51
+L58
+L1
+R89
+R83
+L86
+L86
+L4
+L96
+L222
+L78
+R698
+R2
+L16
+R316
+R27
+R7
+L734
+L18
+R34
+R17
+L152
+R28
+L24
+L72
+L11
+R56
+L58
+R61
+L61
+L43
+L57
+R457
+R97
+L551
+L3
+R79
+R89
+L68
+L74
+L5
+L765
+R95
+L251
+L82
+L402
+R67
+R317
+L14
+L86
+L82
+L40
+L61
+R283
+R92
+R8
+L50
+L98
+R31
+L99
+R519
+R84
+R13
+R34
+L74
+R58
+R82
+R4
+R96
+R89
+L12
+R30
+R81
+R23
+R87
+L65
+R27
+L11
+L49
+L698
+R98
+L80
+R80
+L37
+L63
+L7
+R637
+L67
+R74
+L52
+R77
+R342
+R96
+L28
+L249
+L42
+R19
+R68
+R32
+L82
+R16
+L73
+L1
+R162
+R264
+R17
+L3
+R33
+R37
+L40
+R91
+L60
+L21
+L88
+R70
+R65
+R13
+L16
+L584
+L42
+L58
+R16
+R84
+R4
+L4
+R34
+L34
+R526
+L26
+L961
+R77
+R84
+R52
+L35
+L33
+L5
+R121
+R74
+L16
+L258
+L98
+R98
+R16
+R41
+L66
+R903
+L10
+L84
+R3
+R871
+R26
+R46
+R54
+R931
+L87
+R756
+R26
+R74
+R31
+R69
+R85
+L695
+L77
+L13
+R336
+R30
+R4
+R41
+R99
+L83
+L82
+L45
+L24
+R42
+R782
+R26
+R574
+R30
+R70
+L11
+R79
+L668
+L292
+L29
+L35
+R953
+R40
+R63
+L262
+L78
+L60
+L36
+L264
+R78
+L657
+L904
+R31
+R77
+R75
+L95
+R787
+R41
+R67
+L2
+R24
+L40
+R18
+R18
+R40
+L64
+L94
+L19
+L21
+R30
+L34
+R44
+R23
+L634
+L84
+L21
+L19
+L65
+L181
+R11
+R79
+R91
+R221
+L5
+R93
+R615
+R521
+R36
+R77
+L75
+L59
+L75
+R51
+L77
+L23
+R36
+R77
+L26
+L635
+L74
+R54
+R85
+R83
+R86
+R38
+R53
+L792
+L39
+L46
+R77
+L28
+L62
+R91
+L60
+R79
+L97
+L83
+R55
+L47
+R34
+L59
+L34
+L9
+L774
+R57
+L49
+R509
+R102
+R57
+L64
+L195
+L235
+R97
+L62
+L81
+R86
+L23
+R18
+L51
+R560
+L9
+L33
+R33
+R31
+L38
+R7
+L88
+R88
+R28
+R52
+R20
+L65
+L560
+R62
+R619
+L56
+L30
+R30
+R13
+L65
+L17
+L85
+R29
+R55
+L60
+R633
+L70
+L84
+R68
+L17
+L47
+L53
+R65
+R801
+R949
+R61
+L60
+L16
+R82
+L16
+L66
+R81
+L24
+L62
+R5
+R77
+R23
+L72
+R34
+L89
+L57
+R28
+L47
+L97
+L99
+R899
+L53
+R47
+R66
+R11
+R829
+L59
+L41
+L57
+R545
+R36
+L24
+R714
+R86
+L628
+L72
+L648
+R76
+R63
+L691
+R32
+R35
+L42
+L99
+L87
+L39
+R92
+L82
+R27
+R63
+L38
+R804
+R34
+R95
+L95
+R67
+L41
+R74
+R46
+R737
+R17
+L43
+R943
+L48
+R48
+R19
+L56
+R89
+L52
+L32
+R732
+R40
+L57
+L8
+R306
+R619
+L32
+L7
+L661
+L72
+L591
+L37
+R74
+L74
+L65
+R22
+R42
+R1
+R12
+R94
+R90
+R78
+L74
+L26
+R26
+R87
+R21
+R10
+R59
+L66
+L540
+L71
+R82
+R51
+L33
+R80
+R20
+L213
+L78
+R42
+L8
+L143
+L21
+R21
+R78
+L16
+R70
+L32
+R79
+L79
+R70
+R30
+L98
+L73
+R60
+L37
+R48
+L50
+L23
+L27
+R410
+L55
+L55
+R94
+L20
+R26
+R40
+L433
+L824
+R39
+L53
+R477
+R10
+R8
+L972
+R95
+L87
+R90
+L911
+L779
+L484
+R48
+R36
+R63
+R10
+L825
+L570
+L58
+L20
+L853
+R53
+L97
+R2
+L58
+R54
+L95
+R99
+R50
+R78
+L33
+L76
+L32
+L792
+R44
+R64
+L48
+R30
+R10
+R766
+R48
+L74
+L40
+L75
+L48
+L60
+L417
+R75
+R17
+R808
+L70
+R25
+R95
+R782
+R198
+R70
+L78
+R46
+R44
+L12
+L82
+R781
+L896
+L37
+R34
+L79
+L39
+L25
+R43
+R699
+R16
+R48
+R14
+L77
+L98
+L20
+L82
+L39
+L51
+R90
+L14
+L973
+L52
+L22
+L1
+L38
+R87
+R39
+R2
+R64
+L10
+R18
+L57
+R2
+L345
+L78
+L84
+R62
+R13
+L799
+R1
+L76
+L539
+R7
+R93
+R51
+R49
+L99
+L1
+R57
+R98
+R75
+R70
+L78
+L555
+L66
+R3
+L92
+R488
+R165
+L50
+L16
+L899
+R5
+R95
+R34
+R75
+L707
+R98
+R12
+R53
+L28
+L71
+R34
+L88
+L12
+L30
+L70
+L28
+L89
+L80
+L95
+L8
+L51
+L190
+R95
+L98
+R44
+R627
+R56
+L39
+R91
+L35
+R904
+R76
+R21
+L53
+L49
+R901
+L48
+R48
+R81
+R91
+L25
+L83
+L20
+R56
+L81
+L19
+L39
+R39
+R97
+R3
+R72
+L83
+R80
+R31
+R73
+R96
+L69
+R93
+R7
+L302
+L98
+L46
+R50
+R96
+L59
+L42
+L28
+R81
+R53
+R20
+L22
+R97
+R87
+R13
+R627
+R59
+L11
+R25
+L28
+L60
+R126
+R67
+L15
+R10
+L84
+R84
+R89
+R75
+L64
+R71
+L74
+L516
+L91
+R10
+L32
+R32
+L12
+R12
+R35
+L85
+R74
+R22
+L46
+R9
+R91
+L76
+L488
+R614
+R50
+R12
+R88
+L807
+L64
+L31
+L17
+R43
+L98
+L826
+R6
+L50
+L1
+L64
+R109
+R40
+L40
+R52
+L252
+R78
+R422
+R749
+R43
+L92
+L18
+R718
+R75
+R6
+R19
+R39
+R54
+L29
+L65
+L99
+L11
+R54
+L89
+L73
+L74
+R93
+R801
+R99
+R36
+L62
+R51
+R578
+R397
+R55
+L240
+R12
+R73
+R7
+L67
+R38
+R96
+L71
+R40
+R43
+L44
+L42
+R59
+L87
+R28
+L256
+L944
+R28
+L587
+R7
+L948
+R93
+L93
+L18
+R18
+R32
+R762
+R49
+L43
+R12
+R46
+R42
+L808
+R8
+L90
+R90
+L40
+R63
+R77
+R61
+L599
+L1
+R39
+L40
+R30
+L17
+L85
+R12
+L86
+R241
+R78
+L85
+R6
+R206
+R5
+L65
+L41
+L59
+L158
+R58
+R66
+R49
+L75
+L59
+R74
+R45
+R85
+L45
+R60
+L7
+L889
+L1
+L349
+R746
+L72
+R72
+R17
+R83
+L517
+R73
+L89
+R33
+L25
+L214
+R3
+R91
+L55
+L88
+L14
+R147
+L3
+R74
+L40
+L76
+L26
+R60
+R57
+L83
+R192
+R51
+R49
+R49
+R451
+L74
+L49
+R10
+L85
+L63
+L316
+R82
+L5
+R85
+L85
+R19
+R481
+L330
+R30
+L64
+R64
+L74
+L54
+L802
+R95
+R35
+R29
+L276
+L999
+L16
+L964
+L374
+L49
+L94
+L42
+L507
+R41
+R73
+L9
+L20
+L93
+R5
+L14
+L91
+R23
+R881
+L4
+L62
+R505
+R46
+R11
+R5
+R95
+R17
+R65
+L82
+R31
+R50
+R579
+R40
+L38
+L18
+L66
+R72
+R37
+L76
+R64
+R25
+R65
+L865
+R75
+L42
+R67
+R34
+R97
+R45
+R136
+L12
+L52
+L48
+L30
+L70
+R407
+L27
+L44
+L57
+L84
+L47
+R52
+L66
+R66
+R70
+R30
+R55
+R345
+R63
+R37
+R4
+R878
+R744
+L26
+R7
+L507
+L26
+R24
+L51
+R557
+R951
+L67
+L88
+R640
+L10
+L876
+R798
+L52
+R41
+L41
+L30
+R57
+L27
+R2
+L4
+R2
+R92
+R34
+L48
+R448
+R97
+L101
+R78
+R635
+R65
+L67
+L65
+L68
+R163
+L63
+L8
+L892
+L131
+L69
+R910
+L10
+L10
+L30
+R25
+R795
+L79
+R99
+L21
+L79
+R148
+R52
+R64
+L64
+L84
+R77
+L82
+L62
+R53
+L2
+R1
+R52
+R47
+R12
+R55
+R133
+R71
+R40
+L909
+R98
+L777
+L23
+L80
+L7
+L13
+L682
+R28
+R79
+R65
+L65
+R34
+L78
+L890
+R69
+L5
+R45
+R73
+L75
+L69
+R19
+L59
+R94
+R17
+R54
+R38
+R8
+R37
+R793
+R770
+L86
+L30
+R16
+L58
+L42
+L71
+L44
+R291
+R24
+L56
+R39
+R590
+R10
+L983
+L20
+R73
+L58
+R88
+R18
+L1
+L81
+R81
+R97
+R41
+R88
+L67
+L359
+L13
+L72
+L94
+L21
+L97
+L62
+R67
+R92
+R56
+L56
+L65
+L35
+L22
+R48
+R856
+L81
+L404
+L42
+R45
+L303
+L42
+L55
+R429
+R71
+R86
+R14
+R820
+L92
+R58
+R14
+R73
+R27
+R62
+R38
+R63
+L11
+R58
+R32
+R4
+L346
+L56
+L51
+L767
+R63
+R56
+L45
+L65
+L35
+L30
+R15
+L90
+R98
+R88
+L61
+L80
+L6
+R66
+L88
+R20
+L66
+L466
+R470
+L94
+L60
+L416
+L14
+L86
+R6
+L82
+R60
+L84
+R46
+L46
+L85
+R44
+R41
+R69
+R989
+L158
+R445
+L45
+L73
+R64
+L26
+L9
+R85
+L41
+L36
+R236
+R40
+R39
+L48
+L97
+R66
+L31
+R61
+R98
+R32
+R33
+R7
+L25
+R525
+R471
+L71
+R14
+L14
+R49
+R633
+R30
+R88
+R75
+R39
+R10
+L836
+L15
+L83
+L44
+L12
+R35
+R38
+L532
+R24
+R19
+L18
+R6
+L560
+R34
+R1
+R19
+L76
+L6
+L18
+L17
+R52
+L35
+R78
+R19
+R3
+L488
+R68
+L80
+R84
+R350
+L57
+L77
+R931
+R13
+L83
+R39
+R841
+R40
+R130
+L70
+R991
+R68
+L35
+L65
+R40
+R46
+L86
+R48
+R752
+R8
+R56
+R97
+L361
+L72
+R8
+R31
+R33
+R75
+L17
+L88
+R63
+L3
+R87
+R29
+L46
+L129
+L971
+R77
+L57
+L478
+R58
+L27
+R30
+R69
+L72
+L41
+R58
+R83
+L15
+R67
+L65
+R24
+R13
+L29
+L32
+R37
+L14
+L372
+R98
+R604
+L49
+R90
+R843
+L367
+R467
+L21
+L79
+L276
+L63
+R39
+R2
+L2
+R6
+R96
+L55
+L47
+R69
+L11
+R64
+L522
+L78
+R80
+R798
+R856
+R78
+L5
+R71
+R54
+R346
+L59
+R87
+L70
+R42
+L46
+R46
+R22
+R78
+R387
+R13
+R51
+R16
+R33
+R14
+L62
+L2
+L93
+L10
+L107
+R14
+L981
+L73
+L56
+L44
+L50
+L50
+R8
+R586
+R6
+L71
+R71
+L79
+R79
+L182
+L43
+R925
+L95
+L5
+R49
+L349
+R67
+R92
+L8
+L51
+L85
+R85
+L3
+L97
+L34
+R183
+R471
+L12
+L8
+R99
+L35
+L461
+R97
+R85
+L85
+L58
+L7
+L35
+R75
+L22
+L701
+R41
+R747
+L47
+R59
+L52
+R18
+L18
+L836
+R36
+L5
+R5
+R79
+L82
+R41
+L328
+R4
+R86
+L31
+R31
+L38
+R13
+L375
+L76
+R594
+L112
+L6
+R193
+R45
+R62
+R267
+L85
+R18
+L51
+L542
+L807
+L68
+L765
+R528
+L61
+R66
+R40
+L240
+L16
+L84
+R37
+L58
+R21
+R68
+L796
+R24
+L68
+R66
+R9
+L379
+R495
+L19
+R37
+R8
+R40
+R14
+L42
+R43
+R41
+R21
+L67
+R46
+L25
+R84
+R52
+R48
+R419
+R383
+R30
+L3
+L34
+L95
+L21
+L79
+L842
+L803
+L62
+R7
+L49
+R67
+R39
+R43
+R7
+L74
+R67
+R90
+R10
+R6
+L16
+L62
+R68
+L9
+R58
+R34
+R66
+R79
+R10
+L82
+R48
+R869
+R31
+L94
+R6
+L38
+R26
+L75
+L86
+L5
+L1
+R74
+R16
+R77
+L34
+R72
+L67
+L47
+L762
+R234
+L53
+R96
+R53
+R55
+R20
+L67
+L861
+R89
+R772
+L262
+L638
+L52
+R52
+L81
+L64
+L55
+L466
+L60
+R615
+L769
+R80
+R17
+L92
+L68
+L57
+R50
+L50
+L13
+R30
+R82
+L97
+L586
+R17
+R63
+R732
+L66
+L62
+R14
+L14
+R95
+R53
+L105
+L6
+R19
+R85
+L38
+R20
+L958
+L68
+L52
+L71
+R26
+R45
+R47
+L956
+R64
+R65
+R135
+R68
+R41
+L48
+R42
+L508
+R89
+R97
+R308
+L97
+R848
+L40
+R42
+L42
+L606
+R6
+R8
+R92
+R3
+R368
+R18
+R36
+L788
+R76
+R87
+R94
+R892
+L86
+R59
+R41
+L420
+R46
+L24
+R98
+L77
+R977
+L47
+L67
+R8
+R64
+R42
+R59
+R40
+R501
+R86
+L366
+L83
+R63
+R633
+R7
+R23
+R99
+L10
+L77
+L95
+L90
+L72
+L50
+L40
+L654
+L74
+L57
+L74
+L69
+R33
+L830
+R52
+R586
+L17
+R49
+L91
+L22
+L78
+R653
+R65
+R19
+R91
+R89
+L46
+L67
+L264
+R80
+L396
+L47
+R31
+R26
+L69
+L53
+L57
+L837
+L82
+L32
+R39
+L312
+L29
+L22
+L62
+R87
+R35
+R78
+L90
+R90
+L27
+L14
+R41
+L68
+R68
+L67
+R44
+R66
+R96
+L44
+R5
+R777
+L68
+L19
+R10
+L12
+L36
+L48
+L24
+L4
+R92
+R32
+R73
+L6
+L22
+L87
+R77
+R91
+R56
+R65
+L65
+R71
+L93
+R70
+L430
+R389
+R4
+L283
+L12
+L193
+L14
+L91
+L94
+L23
+L37
+L32
+R787
+L1
+R811
+L22
+L27
+L54
+R92
+L9
+L13
+R22
+R896
+R47
+R12
+R952
+R87
+L59
+L35
+L91
+L9
+R1
+L201
+L96
+R78
+R33
+L15
+R10
+L219
+R9
+R72
+L72
+R67
+R53
+R80
+R78
+R63
+R73
+L14
+L53
+L47
+R57
+R50
+R793
+R99
+L61
+L56
+L64
+L68
+L21
+L29
+R2
+R82
+R16
+L975
+L85
+L42
+L70
+R72
+R62
+R26
+R74
+R38
+L790
+L10
+R78
+L89
+L89
+R520
+R48
+L68
+L48
+R30
+L601
+L81
+R994
+R6
+L48
+L62
+R28
+R782
+L181
+L19
+L49
+R49
+L67
+L872
+L60
+L62
+L38
+L47
+L54
+L19
+L60
+R68
+R6
+R78
+L4
+R7
+L576
+R14
+L6
+L49
+R58
+L960
+R33
+R12
+L2
+L67
+L21
+R88
+L7
+L241
+L77
+R925
+R21
+R79
+R71
+L971
+R17
+R83
+L65
+R55
+R21
+R87
+R50
+L505
+R298
+L60
+R88
+R30
+L52
+L47
+L59
+L37
+L80
+R3
+R497
+L253
+R29
+R54
+R46
+L61
+L39
+L29
+L321
+R380
+L96
+R66
+L5
+R5
+L78
+R179
+L382
+R7
+R74
+R31
+R14
+R87
+R81
+R79
+R11
+L574
+L81
+L85
+R810
+R27
+L59
+L443
+L62
+L36
+R90
+R10
+L810
+L553
+R587
+L5
+R21
+R31
+L71
+L35
+L58
+R77
+R22
+L6
+L63
+R9
+L420
+R15
+R459
+R634
+L63
+L63
+R74
+L40
+R58
+L62
+L60
+L321
+L57
+R51
+L49
+L71
+R969
+R62
+L62
+L56
+L639
+R95
+L33
+R37
+L804
+L585
+L20
+L95
+L242
+L40
+L728
+R43
+L573
+L60
+L78
+L147
+L75
+R29
+R53
+L37
+R55
+R14
+R86
+R82
+L46
+R64
+R52
+L52
+R58
+R42
+L90
+L2
+R18
+R74
+L78
+R78
+L38
+L62
+R16
+L410
+R33
+R90
+L50
+L51
+L62
+R34
+R14
+L714
+L85
+R85
+R253
+R40
+L30
+L37
+R674
+R27
+R873
+L49
+L44
+L60
+R64
+L66
+R55
+L16
+L20
+R88
+R48
+R83
+R96
+R70
+L9
+R564
+R67
+L784
+R969
+L19
+L11
+R399
+R62
+R78
+L65
+L45
+L55
+L855
+L45
+R977
+R34
+R89
+R80
+R320
+R87
+R76
+L46
+R483
+L92
+L74
+R45
+R768
+L5
+R58
+L78
+L8
+R886
+R43
+R57
+L89
+R55
+R448
+L86
+R50
+L78
+L36
+L85
+L57
+L718
+L30
+R26
+L45
+R45
+L604
+L73
+L4
+L33
+R14
+L261
+L6
+L33
+R847
+L21
+L1
+L25
+R123
+R50
+L818
+R53
+R77
+L417
+R31
+R70
+R239
+R944
+R40
+L92
+L93
+L94
+R98
+R84
+L95
+L53
+L47
+R31
+L61
+L26
+L44
+R20
+R80
+L85
+R88
+R42
+R18
+L73
+R10
+L39
+L87
+L32
+L22
+L77
+L43
+R67
+R33
+R623
+L58
+L98
+L18
+R51
+R207
+R93
+R39
+L39
+R55
+L70
+L86
+L99
+R41
+R59
+L74
+L11
+R93
+R92
+L68
+L89
+L383
+R40
+L98
+L19
+R91
+L74
+R821
+R959
+R76
+R94
+L412
+R6
+R56
+R41
+L41
+L16
+L84
+R6
+L445
+L230
+R55
+R14
+L77
+L15
+R90
+R402
+L68
+L28
+L4
+L44
+R744
+L61
+R43
+L67
+L101
+L58
+R905
+L89
+L78
+L94
+R797
+R3
+R83
+L98
+L85
+L32
+R32
+R42
+L42
+L98
+R205
+L7
+R87
+R513
+L91
+L563
+R31
+L44
+R72
+R995
+R631
+R369
+L57
+R92
+R65
+L54
+R31
+R72
+L788
+L668
+R81
+L74
+R26
+L26
+R24
+R752
+R13
+R64
+L53
+R26
+L38
+R12
+R29
+L243
+R34
+L92
+L62
+L14
+R948
+R69
+R73
+R63
+L75
+L131
+R72
+L54
+L303
+R55
+L369
+L70
+L30
+R44
+R707
+R43
+L442
+R72
+R25
+R35
+L84
+R841
+L50
+R9
+L95
+L5
+R99
+R55
+L54
+L4
+R4
+R72
+L21
+R67
+R63
+R16
+L97
+L98
+L402
+R43
+R5
+L95
+R197
+R150
+L74
+L26
+L12
+L20
+L12
+L70
+L44
+L42
+R79
+R21
+R22
+L22
+R839
+R38
+R23
+R99
+R1
+R19
+R56
+R13
+L38
+R60
+L18
+R8
+L37
+R60
+L23
+R37
+L33
+R473
+R23
+R24
+R21
+L815
+R17
+R53
+L23
+R811
+R12
+L61
+L58
+R24
+L44
+L136
+R575
+L84
+L16
+L53
+R53
+R85
+L191
+R681
+R84
+R41
+L74
+R21
+L383
+L29
+L902
+L33
+L92
+R75
+L83
+R96
+L57
+L21
+L81
+R584
+R79
+R66
+L66
+R21
+L21
+R15
+R55
+L69
+R99
+L57
+L191
+R342
+L1
+R7
+L87
+R415
+R45
+L61
+R403
+L136
+R30
+L54
+L66
+R65
+R98
+L50
+L2
+L9
+L52
+R74
+R387
+L17
+R17
+L212
+R12
+L68
+R67
+L27
+L37
+L35
+R76
+L676
+L39
+R39
+R27
+L23
+L13
+L91
+L474
+R74
+L48
+L52
+R19
+L49
+L70
+L143
+L21
+R64
+L72
+L28
+L76
+R29
+L88
+R35
+R96
+R133
+R71
+R96
+L96
+L738
+R22
+L22
+R87
+L993
+L56
+L27
+L131
+R58
+L71
+R71
+R94
+L94
+L47
+R26
+R21
+L66
+R382
+R84
+R19
+R75
+L94
+L38
+R46
+L112
+L38
+R79
+R82
+L61
+L21
+L39
+L69
+L1
+R87
+R7
+R78
+L36
+R48
+L68
+R9
+L94
+L59
+L458
+L932
+L24
+R96
+R15
+L97
+L21
+L79
+L36
+L76
+L49
+R61
+R21
+R79
+L84
+R70
+R79
+R32
+R61
+R43
+R712
+R487
+R509
+L50
+L59
+L57
+R57
+L921
+R16
+L95
+L74
+R74
+R44
+R892
+R21
+L27
+L30
+L52
+L248
+R98
+R2
+R38
+R60
+R421
+L92
+R95
+R82
+L25
+R27
+R36
+R62
+L4
+R31
+L68
+L88
+L75
+R36
+R65
+L1
+R75
+L41
+L34
+R92
+R14
+L13
+L54
+L64
+R88
+R10
+L73
+R243
+R57
+L6
+L94
+R32
+R31
+R55
+L118
+L49
+L51
+R58
+R42
+L3
+R3
+R270
+L72
+L85
+R87
+R56
+L56
+R73
+R79
+R90
+L42
+L32
+L83
+L6
+L33
+L51
+L18
+R78
+L55
+L16
+L64
+R280
+R10
+L48
+L40
+L574
+L848
+R747
+R70
+R58
+R28
+L3
+L473
+L50
+L79
+R602
+L88
+R14
+R4
+R70
+L122
+R22
+L34
+L466
+L52
+L29
+R81
+L991
+R55
+R574
+L82
+L543
+R87
+L53
+R835
+L82
+R97
+L84
+L93
+R42
+R73
+R454
+R11
+L76
+R76
+R662
+L23
+R38
+L498
+R63
+R58
+L1
+R227
+R874
+R75
+R76
+L41
+L9
+L329
+R50
+R78
+L30
+R927
+R49
+L228
+R782
+L68
+L32
+R715
+R57
+R28
+R74
+L78
+L69
+L72
+R15
+R45
+R10
+R43
+L14
+R95
+R51
+L409
+R44
+R989
+L24
+R43
+R57
+L55
+L45
+R71
+L14
+R843
+R295
+R13
+R92
+R97
+L62
+R86
+L21
+L254
+R725
+L87
+R16
+R43
+R70
+R75
+L13
+R125
+R69
+R21
+L90
+R34
+R17
+L6
+L14
+L1
+L8
+L245
+R23
+L111
+R85
+L517
+R66
+R67
+R5
+L19
+R294
+L70
+L94
+R63
+L97
+L72
+L99
+R29
+L30
+R65
+R37
+R21
+L88
+L35
+R14
+R86
+R65
+R72
+R963
+L88
+R88
+R14
+L14
+L24
+R94
+L964
+R39
+L45
+L32
+R32
+L438
+L28
+L34
+L47
+L46
+L55
+L652
+R62
+L507
+L89
+R87
+R5
+L61
+L39
+L665
+R82
+R670
+L445
+R50
+R93
+L43
+R42
+R21
+R37
+R76
+L34
+R25
+L18
+R44
+R52
+R69
+L205
+L77
+L232
+R63
+L463
+L235
+L167
+L798
+R51
+L45
+L57
+R51
+R2
+R498
+R59
+R1
+L60
+L41
+R76
+R740
+R53
+R72
+R59
+R41
+L98
+R5
+R93
+L314
+R41
+R25
+L52
+L93
+L76
+L326
+R33
+L227
+R791
+L735
+R72
+R57
+L13
+L583
+R50
+L99
+L875
+R35
+R86
+R2
+L17
+L185
+L261
+L636
+R95
+L37
+R417
+R25
+L50
+R8
+L258
+R12
+R74
+R42
+L28
+R63
+R54
+L2
+L21
+R79
+L63
+L10
+R88
+R63
+L78
+R69
+R758
+R55
+R92
+R25
+R28
+R9
+L99
+R89
+L550
+L28
+L21
+L18
+L54
+L63
+L65
+L89
+R7
+R541
+R41
+R81
+R784
+R231
+R67
+R37
+L81
+R554
+R227
+R42
+R158
+L30
+L44
+L51
+R67
+R458
+R89
+L973
+L31
+L49
+L21
+R78
+L10
+L98
+R15
+L12
+R12
+R26
+L26
+R3
+L3
+L95
+L749
+L64
+L27
+L65
+L82
+R82
+L72
+R3
+L31
+R93
+L974
+L542
+L677
+L24
+R624
+L64
+R64
+R445
+L45
+R23
+R26
+L594
+L23
+R20
+L52
+L46
+L63
+L569
+R78
+R89
+R27
+R19
+R65
+L473
+R73
+R76
+L676
+L586
+R43
+R43
+R59
+L29
+L30
+R54
+R46
+L79
+R36
+L52
+R38
+R41
+L84
+R47
+L19
+R72
+L49
+L951
+L31
+R31
+R17
+R83
+L78
+L41
+L54
+R61
+R672
+L49
+L611
+L41
+L59
+R44
+L44
+R11
+L11
+R59
+R41
+R99
+R34
+R67
+L76
+L24
+L89
+L11
+L89
+L26
+L59
+L26
+R18
+R82
+R43
+L43
+L84
+R784
+L76
+R89
+L13
+R20
+R59
+R26
+R96
+R8
+L37
+R28
+L2
+R2
+R27
+R73
+R23
+R72
+L995
+L922
+R22
+R8
+L38
+R71
+L541
+L90
+L91
+R93
+R26
+L738
+L99
+R79
+L98
+R18
+L37
+L78
+L2
+R83
+R34
+R994
+R306
+L29
+L96
+L99
+L69
+L7
+R65
+L74
+R78
+R22
+R639
+L61
+R31
+R320
+R49
+L17
+R48
+R43
+R60
+R71
+L75
+R10
+L809
+R73
+L73
+R88
+R56
+L564
+L50
+R527
+R83
+L719
+L50
+R459
+L30
+R54
+R89
+R68
+L127
+L86
+R32
+L30
+R99
+R20
+R234
+R806
+R41
+L40
+L2
+L58
+R9
+R36
+R87
+R58
+R310
+L48
+R48
+R22
+L622
+R43
+L23
+R92
+R87
+L60
+R84
+L71
+R47
+L24
+R25
+R76
+L40
+L36
+L39
+L61
+L671
+R71
+R749
+L45
+L4
+L24
+R96
+R88
+L60
+L36
+R43
+R93
+R67
+L79
+R33
+L21
+R638
+L43
+R98
+R15
+R72
+L62
+L18
+L60
+R60
+L72
+L28
+R39
+R76
+R3
+R83
+L47
+R46
+R47
+R96
+R85
+L11
+L15
+L55
+L47
+R11
+L11
+R30
+R59
+R11
+R36
+R96
+R28
+R63
+R13
+R36
+L40
+R68
+L58
+L29
+L13
+R26
+R49
+R60
+L13
+R73
+L56
+L51
+R49
+R37
+R26
+L8
+R23
+R8
+R59
+R18
+L5
+R77
+L72
+L82
+L18
+L17
+R17
+R11
+L39
+L76
+L96
+R25
+L33
+R23
+L13
+L17
+R5
+R47
+L33
+R46
+L16
+L33
+R12
+R15
+L46
+R26
+L32
+R38
+R42
+R33
+L48
+R38
+L46
+R47
+L23
+L41
+L11
+L18
+R49
+L23
+R45
+R48
+R34
+L3
+L20
+L20
+R28
+R16
+R22
+R50
+L2
+L42
+R17
+R35
+R43
+L25
+R28
+R18
+L42
+L25
+L30
diff --git a/2025/aa.rs b/2025/aa.rs
new file mode 100644
index 0000000..1982912
--- /dev/null
+++ b/2025/aa.rs
@@ -0,0 +1,75 @@
+use aoc::read::read;
+
+#[derive(Debug)]
+struct Ring {
+ inner: usize,
+ counter: usize,
+}
+
+impl Ring {
+ fn new() -> Self {
+ Self {
+ inner: 50, // start in 50
+ counter: Default::default(),
+ }
+ }
+
+ const MAX: usize = 99;
+ // minus
+ fn left(&mut self, num: usize) {
+ for _ in 0..num {
+ if self.inner == 0 {
+ self.inner = Self::MAX;
+ } else {
+ self.inner -= 1;
+ }
+ }
+ self.counter();
+ }
+
+ // plus
+ fn right(&mut self, num: usize) {
+ for _ in 0..num {
+ if self.inner == Self::MAX {
+ self.inner = 0;
+ } else {
+ self.inner += 1;
+ }
+ }
+ self.counter();
+ }
+
+ fn counter(&mut self) {
+ if self.inner == 0 {
+ self.counter += 1;
+ }
+ }
+}
+
+pub fn main() {
+ let mut ring = Ring::new();
+ let input = read("a");
+ for i in input {
+ let dir = i
+ .chars()
+ .next()
+ .unwrap();
+ let num = i[1..]
+ .parse()
+ .unwrap();
+
+ match dir {
+ 'L' => ring.left(num),
+ 'R' => ring.right(num),
+ _ => {}
+ }
+ println!(
+ "{}: {:#?}",
+ num, ring
+ )
+ }
+ println!(
+ "Result: {}",
+ ring.counter
+ );
+}
diff --git a/2025/ab.rs b/2025/ab.rs
new file mode 100644
index 0000000..0ba6efa
--- /dev/null
+++ b/2025/ab.rs
@@ -0,0 +1,75 @@
+use aoc::read::read;
+
+#[derive(Debug)]
+struct Ring {
+ inner: usize,
+ counter: usize,
+}
+
+impl Ring {
+ fn new() -> Self {
+ Self {
+ inner: 50, // start in 50
+ counter: Default::default(),
+ }
+ }
+
+ const MAX: usize = 99;
+ // minus
+ fn left(&mut self, num: usize) {
+ for _ in 0..num {
+ if self.inner == 0 {
+ self.inner = Self::MAX;
+ } else {
+ self.inner -= 1;
+ }
+ self.counter();
+ }
+ }
+
+ // plus
+ fn right(&mut self, num: usize) {
+ for _ in 0..num {
+ if self.inner == Self::MAX {
+ self.inner = 0;
+ } else {
+ self.inner += 1;
+ }
+ self.counter();
+ }
+ }
+
+ fn counter(&mut self) {
+ if self.inner == 0 {
+ self.counter += 1;
+ }
+ }
+}
+
+pub fn main() {
+ let mut ring = Ring::new();
+ let input = read("a");
+ for i in input {
+ let dir = i
+ .chars()
+ .next()
+ .unwrap();
+ let num = i[1..]
+ .parse()
+ .unwrap();
+
+ match dir {
+ 'L' => ring.left(num),
+ 'R' => ring.right(num),
+ _ => {}
+ }
+ println!(
+ "{}: {:#?}",
+ num, ring
+ )
+ }
+ println!(
+ "Result: {}",
+ ring.counter
+ );
+}
diff --git a/2025/fetch.rs b/2025/fetch.rs
new file mode 100644
index 0000000..6c02a8f
--- /dev/null
+++ b/2025/fetch.rs
@@ -0,0 +1,29 @@
+use std::{env, sync::Arc};
+
+use reqwest::{Url, blocking::Client, cookie::Jar};
+
+const YEAR: usize = 2025;
+
+pub fn fetch(lv: usize) -> Vec<String> {
+ let jar = Arc::new(Jar::default());
+ jar.add_cookie_str(
+ &format!(
+ "session={}",
+ env::var("AOC_SESSION").unwrap()
+ ),
+ &Url::parse("https:///adventofcode.com").unwrap(),
+ );
+
+ Client::builder()
+ .cookie_provider(jar)
+ .build()
+ .unwrap()
+ .get(format!("https://adventofcode.com/{YEAR}/day/{lv}"))
+ .send()
+ .unwrap()
+ .text()
+ .unwrap()
+ .lines()
+ .map(|s| s.to_string())
+ .collect()
+}
diff --git a/2025/lib.rs b/2025/lib.rs
new file mode 100644
index 0000000..fe134e7
--- /dev/null
+++ b/2025/lib.rs
@@ -0,0 +1,2 @@
+pub mod fetch;
+pub mod read;
diff --git a/2025/main.rs b/2025/main.rs
new file mode 100644
index 0000000..bc0b130
--- /dev/null
+++ b/2025/main.rs
@@ -0,0 +1,7 @@
+pub mod aa;
+pub mod ab;
+
+fn main() {
+ // aa::main();
+ ab::main();
+}
diff --git a/2025/read.rs b/2025/read.rs
new file mode 100644
index 0000000..a53a3a3
--- /dev/null
+++ b/2025/read.rs
@@ -0,0 +1,9 @@
+use std::{fs, path::Path};
+
+pub fn read(file: impl AsRef<Path>) -> Vec<String> {
+ fs::read_to_string(file)
+ .expect("Failed to read file")
+ .lines()
+ .map(|l| l.to_string())
+ .collect()
+}
diff --git a/2025/src/main.rs b/2025/src/main.rs
new file mode 100644
index 0000000..e7a11a9
--- /dev/null
+++ b/2025/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ println!("Hello, world!");
+}