commit b2f78d33e769ee27b12aaf3b4edc9f4e66f1f7d4 Author: RingOfStorms (Joshua Bell) Date: Fri Dec 1 20:09:57 2023 -0600 day 1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5f6d1fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +.env.local diff --git a/.rtx.toml b/.rtx.toml new file mode 100644 index 0000000..7612a64 --- /dev/null +++ b/.rtx.toml @@ -0,0 +1,4 @@ +env_file = ".env.local" + +[env] +# AOC_SESSION = "set in .env.local" diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..e48ae7a --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,2010 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[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 = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "aoc23" +version = "0.1.0" +dependencies = [ + "async-recursion", + "expanduser", + "futures", + "regex", + "reqwest", + "reqwest-middleware", + "reqwest-retry", + "serde", + "serde_json", + "tiktoken-rs", + "tokio", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "async-compression" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc2d0cfb2a7388d34f590e76686704c494ed7aaceed62ee1ba35cbf363abc2a5" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-recursion" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-trait" +version = "0.1.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + +[[package]] +name = "blake2b_simd" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "brotli" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bstr" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" +dependencies = [ + "memchr", + "regex-automata", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-targets 0.48.5", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d606d0fba62e13cf04db20536c05cb7f13673c161cb47a47a82b9b9e7d3f1daa" +dependencies = [ + "cookie", + "idna 0.2.3", + "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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "deranged" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "dirs" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "expanduser" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14e0b79235da57db6b6c2beed9af6e5de867d63a973ae3e91910ddc33ba40bc0" +dependencies = [ + "dirs", + "lazy_static", + "pwd", +] + +[[package]] +name = "fancy-regex" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" +dependencies = [ + "bit-set", + "regex", +] + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +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 = "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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" + +[[package]] +name = "futures-executor" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" + +[[package]] +name = "futures-macro" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" + +[[package]] +name = "futures-task" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" + +[[package]] +name = "futures-util" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "h2" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[package]] +name = "hermit-abi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" + +[[package]] +name = "http" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.4.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[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 = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" + +[[package]] +name = "linux-raw-sys" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "openssl" +version = "0.10.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800" +dependencies = [ + "bitflags 2.4.1", + "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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[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.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro2" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +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.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a8c1bda5ae1af7f99a2962e49df150414a43d62404644d98dd5c3a93d07457" +dependencies = [ + "idna 0.3.0", + "psl-types", +] + +[[package]] +name = "pwd" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c71c0c79b9701efe4e1e4b563b2016dd4ee789eb99badcb09d61ac4b92e4a2" +dependencies = [ + "libc", + "thiserror", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[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.11", +] + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[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_users" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +dependencies = [ + "getrandom 0.1.16", + "redox_syscall 0.1.57", + "rust-argon2", +] + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "reqwest" +version = "0.11.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +dependencies = [ + "async-compression", + "base64 0.21.5", + "bytes", + "cookie", + "cookie_store", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "mime_guess", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "winreg", +] + +[[package]] +name = "reqwest-middleware" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a3e86aa6053e59030e7ce2d2a3b258dd08fc2d337d52f73f6cb480f5858690" +dependencies = [ + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "task-local-extensions", + "thiserror", +] + +[[package]] +name = "reqwest-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9af20b65c2ee9746cc575acb6bd28a05ffc0d15e25c992a8f4462d8686aacb4f" +dependencies = [ + "anyhow", + "async-trait", + "chrono", + "futures", + "getrandom 0.2.11", + "http", + "hyper", + "parking_lot 0.11.2", + "reqwest", + "reqwest-middleware", + "retry-policies", + "task-local-extensions", + "tokio", + "tracing", + "wasm-timer", +] + +[[package]] +name = "retry-policies" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17dd00bff1d737c40dbcd47d4375281bf4c17933f9eef0a185fc7bacca23ecbd" +dependencies = [ + "anyhow", + "chrono", + "rand", +] + +[[package]] +name = "rust-argon2" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +dependencies = [ + "base64 0.13.1", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.38.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a" +dependencies = [ + "bitflags 2.4.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[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 = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "syn" +version = "2.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "task-local-extensions" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba323866e5d033818e3240feeb9f7db2c4296674e4d9e16b97b7bf8f490434e8" +dependencies = [ + "pin-utils", +] + +[[package]] +name = "tempfile" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +dependencies = [ + "cfg-if", + "fastrand", + "redox_syscall 0.4.1", + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "thiserror" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tiktoken-rs" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4427b6b1c6b38215b92dd47a83a0ecc6735573d0a5a4c14acc0ac5b33b28adb" +dependencies = [ + "anyhow", + "base64 0.21.5", + "bstr", + "fancy-regex", + "lazy_static", + "parking_lot 0.12.1", + "rustc-hash", +] + +[[package]] +name = "time" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +dependencies = [ + "deranged", + "itoa", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.5", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[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-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna 0.5.0", + "percent-encoding", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[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.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" + +[[package]] +name = "wasm-streams" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasm-timer" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.11.2", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[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-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[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.0", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..a37db83 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "aoc23" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +async-recursion = "1.0.5" +expanduser = "1.2.2" +futures = "0.3" +regex = "1.9" +reqwest = { version = "0.11", features = [ + "json", + "gzip", + "brotli", + "deflate", + "stream", + "cookies", +] } +reqwest-middleware = "0.2" +reqwest-retry = "0.3" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +tiktoken-rs = "0.5" +tokio = { version = "1", features = ["full"] } diff --git a/aoc_puzzle_cache/day_1 b/aoc_puzzle_cache/day_1 new file mode 100644 index 0000000..9427a8d --- /dev/null +++ b/aoc_puzzle_cache/day_1 @@ -0,0 +1,1000 @@ +hcpjssql4kjhbcqzkvr2fivebpllzqbkhg +4threethreegctxg3dmbm1 +1lxk2hfmcgxtmps89mdvkl +sixbfjblhsjr3 +soneighttwo39ktl132 +sqd1fivenfsmpsmjtscfivedzxfhnbbj8six +9oneonetwofiveseven42 +7mhpslddjtwo9sixkzdvqzvggvfoursdvd +onetwothreextbtpkrcphhp4kfplhqdvp9 +89l991eightttxtj3 +7znvzpdnnnfsevennrvlhseven16b +5eight8579 +6twotwo18eightthreeeight +5fourthreesbgsix6two +nineoneh841dxnrvcmtwo +9one7three9kbrdcdeighttqmgg +vsrsixfiveninestndvtfqmr7 +six5eight +prvdoneqmsnstjgq7bdshdninenine9 +3715nineeighthxnqxhg4ch +zvdhmnvnineqjghs93bmmxrtxhrvsksqgfive +6hznsq5qjcjsvgnl +51gzmkn5 +2rscfiveonetwoonexndftfive +5gkxjcskc89eight +onethreeoneeightqskd4zhr +8dnkzpsfzrqljhkx6one +threenine41tczlqlsjjrkhsjm3jqhgscgspx +sevennine4dkkqrrjcpfourckzxj71one +nineseven2sixnineqd +eight72threefivefour9onefive +gprffive3kksp +qcl27four4 +sfdreight4ninesix5 +1756gvjdggpchc9 +threerzcxhlvdjkhtlxlg6ninetwonine1 +thnine5 +twoninejxxm1one +nc73threetwoeight +s2sixbnsmngsclg +6tplzllbthreecljqhtgqlkxnl +4four4 +ntxmgvkm9 +5fourslt8gqdrdsseven6six +fourfour26 +263eightfivefthkfxfxnfms2 +716 +twodgksqsdtrsrpeight8five1 +jdhtxp1nine8jrxrrkc12six3 +2gmmtgzstg1rbsix +threemhmfivevg6sixlppbjmmninej +9eighthvxnlvthqjtpsjnleightwokq +three8threeeightmcnvlmj7 +sixmn5 +8jctlksix +fkrxrsseven6dcxzhdmvtg +sixxgrnqk8qvgrqbs +skprzqrt3h65eighteightdlpljhnjdp +onelpfdt669hrzninethree +3ninehgveightzppzljfourfour4 +838onejonehznckplj5nine +lrdtwo61 +niner5kqzqg +4eight8seventwo3 +fvbrtpbcfive24 +twoczldjcsix1six +9fourklmzjmnlgtvh +five7nine2nvjbprppthnine8 +tmht6mfjnnpznrv6jscqfjxkvtgklmprsix +svpqzpj9sixsixxnvbprh1 +eight8two47g11 +7qxbfj5c +2hzcmzl7 +4gbkshmmksfseven +8sevenone +oneseven1three +9three2fjldqmdhv +3vfsqqzrpzq38twotwondxrc +sixbgz1four +trzvzjzeight7sixdgq41 +94rj2 +twofour3tkjjvjsfourz3 +cxtgfmqddm9five61f +ninesfvfmrk7vrgddhzvh11onethree +zhdbmjhsfv5nkkllpthree88seven +69zlsvkk2six +576dqcspgvd +7flqjn9 +eightqxsix4fiveeightfive +oneeight9onemll8ccgrrqvrp +7qdscnine5two +eightfive5threekkrb741xgnndtvzd +6xpdgng622cplsixone +ninesix4jxxgjppthree9six +87sixtwotcjlss +njlfxvcxbpmk6ttdng +sevenzcprvz4eightnk6ninefourtwo +2twomvdjvrhrsgrqhp +eightonehtmvfvxeight2onettnkt +ngbtlr8five5fourtwotwojsdl +39sixthree9 +4ntgdsbshd32 +ninetwo5htqnmctjkxrttgtdfone +bckgxxpreight4eightbpchtxv8seven +twoeight2sxnxsfkxqkbsix +one8kjtgoneeightsdcmrllcfiveqxsj7 +gsfmgl4one43 +zthm8cmmb83twotwothree +seventgd6 +sixphptdkzcqsixlgztbffhs5 +2onenine9sevenonefourfvd +1djkqqd +slfldflseven6five85tvxbzvmjvjhpbnqtfxtvcfc +six2kseven +seven7464 +zcslbttpgk3foureightone5 +4oneone4453 +fivex6lz +zceightwobvhfqqzngtctgsq3rjzmtnmbx7xtc +zxrxseven7ncr5m4 +7ninelzrrzmlfourpssbjpkckj9 +6vbrpprjfive3twovfklfh7 +9cgkqfgccl5fivezlhcfgvm +bttvvjkgp6clntnrksthreeeight7 +threesix8eight4foureightkjxjfgxlcfqnh +three5foursevenlhlmrzrdvxthreeglfvksgmxlrz +c48seventhree +sevenddgcqkgkr9fourppxqzpqxpkzjpcc51rh +3rn2zhhth +628nine +seven86four +7bdqmrbdnzbnine +nine621rlqzseven +73two +rnbchhfk6884fivejtr5twonet +qpjlhpnxpnszsrgglpnlclml5qone +3threeninesixdsdsjvz +vmeightbtzkbvdjbcqsx5mfqft8sevensl +jzvqqfzxrbfbhonetwo2knrhfl +1hjkmdchmone2twotwosix +sixseven9 +9two8zlkph +7twoz +ninergqldrlxvn148zdpvgdrptvpg9nbbhgk +szcspm5sixtwovtrmvrthreefour7oneightqqj +foursixthreetwo7vjjdgcqrbh7 +qgqhpnkzgrfivenine7foursixlgqcxzkcjr +phhljpb4zsixpxt22four3 +twogjbhrdrnl9six +znbkscjpxnjzninesevenjnkdvckhgtwo5five +xfkgbhrrpckrftonenxghthree2mz +fivefdgxmb894ztnrljrr7kxzrvlxjcq2 +nqblpkxmzcnhplrhcpv4 +tq3nine9 +bqxh6nine57 +nine5fgvfmthreethree2 +2bqvhb79rrczpptxbb4lmcdgkqm6 +seven1eightnine3seventhreeeightlcsspsb +one7llljbvzngchlnineoneeight +dcztsfgsix8sixjlghbxslpd +4v365 +5fiveqsgkf63fivefmp9seven +2gpnfjrnmcvjfninelmdzkvrmkjqvcp +2lznfour1threerqjtphnine +nzvvxdbb8cpxjdlqxxfour +joneight9nlqrzbthreeonenine +four5hhnbcc8eight4eightbvhsfktmk +sixfpnzsixgksix2s +9onefmkkgvzlzqpl7eight5 +p8vceight1 +dnkzmnvffthreefive7sevenxthdvzxxg +nine4seven38mbhpcdfour +4seventwo7nine +tqxhpxmgllzvbxlfvrmvsgkk3four6 +xgvvninensvnjhglfng8ninefive +threecqccjxnfournineeight7 +fkone9bstvjhmrzh9qfhnxdld1 +72gxqrns94 +8xkqjdvone1339dgdzj +61zvcqrbdlgfivefourdcvpfpspbgxsmjbmblkz +4ninethreelbjtv89xnrt +honeightfivegjbghjfbvlv78vcg +sixjg5dbhkr2sevenjsbrvfv +6onenineone +688ninetwo +7tworbz +jthreesixsixfive7fiveseven +slnsnqn1glrhtrltdlvqmmgfrvckhkbxtsixxjlzqh +msj8 +pqz759rdgv2fourfjvdqvtn3 +gscbthreethree3five7five68 +3seven2 +5llpcgxpcv85d39qqkxltchpc +2vflrsvfive7hnkmgfvnnsqz +7lfdthreegbkqsevenninefive5nj +3dsddfournine +2gghdftbmm9three +jnfxg762 +pgrzbonenine3eight959nine +4phpncp2six +hvdvhprnsplknvdqlx9eightgcxvphpv4687 +5ninembmxsppthreefour3 +tworgvxntpjhr7xftlhponehzqdggmbhp62 +sseven5two +rhtzskrlvtmzgkszone1eightone +1tjrchtrxknstbmxh2zdpglqsxpdbnx4 +8vvpsixbjxxkxclxchjvlvvqqdspqrgh +2six1gfzlrvxgfntqhjqd +8onenineeightsevendfhgbbmc1 +six12three81vfive +four153one +1dfbkfpnqvthreemqzlvcvdnsxgfourtwovhmf +tll5xhqgfvq1hsphkgclrzhmlsqeight8 +2three9sixkprzkzrdzjndjtptbmbsfjzplss +36onepntjtvpjfour4eightnine +8t2ninefour6sixjx +gpnfthree16xj8fqx8n +seven42eight5pzxvx +6ninefour +zrmgttjv3vtnlmrkdtjgsdhc +8plhvcl8sblzgsd +one77phjchvd5six +6gfour8bvgcxsrslrqf +36jllpvdrzqkdjvcts1fjkbfttbeightseven +4nine663mjtdlmqqrvsxnlhcz3six +ftzqhxjvstrz18threepzrjkkqxrd4 +mtbvkvsq38rzk +xtldnjzthree7 +3eightfive83nine32 +3qpdkkdfxgvlktkkbtptnzqnzxl7four5 +nine97eight212 +mcvj6 +sixninefkgntpsboneskphgqmvfq81 +six7mdntzshzr6two81bklxmvcv +qs7ft +fiveqzpcskcrlninebnkvgthreengfbfhln3sevenfour +spjqtwo4seventwo +8fqq +4eightgltkrzs64spgdrhf35 +ffckrhfjb9 +lv128sixninefive +6th +sevenfive19eightninenine9seven +jhmfcj6foursevenmszfjthree8gkpdpnnxbhj +8gvjzvvthreeseven33 +threexnfjlnkmkt9seven949sixgsfdkzzk +eightvfdjxhcvonebnzhrrqpvxdmnqxtzf7tzl +fivesjkthreem6twokhdrsk1hz +641pqhdbzk99onetwofour +sevenxsskzhcppdthree48 +2two49qcnine +sevenseventhreemqcgvbr8onernnone +rkclvq4seven446dkjfpgtseightwobc +two11pzzzxlqqqnfxxqg +5911four4three6six +7jsvdgx +dvdffj2 +8fourfourdbrbbnsjrzhj7 +pzkckdkmfonefivetwozmdxrdmztwo6xd +48sevenninexqglbmcnbgsdtjtkcp +nine4rbbnhlbmfseventwobqbrpvqssxcxqsmcg +7lgzfznxpspthreedgreightwopmf +zmlhnk9bhtdqmxzvgdssixtvvrkpznvjpn +11five16snqbrtqbx +gnvmgninenine83 +onehnmbqdhtpmone29vhhxsxzkrnsix +9dpcdfxp3qtcktbbxglrfp2dsjdhbdncbtxj +fouronezh9ninethreenine +6lrbthreemplnineseven +five6onefourthree +3twoseven +8sixxtmqfxnp234twohsfr +6seven5ninenine3 +sevenfivectsglsqstxjmgdsjrzfveight7 +four9sevensixs7onergssqzfmbvbspmr +jjeightwosix9fklkfxrfhjxksznine +39six +ndbbqgqf3gvzczcdkpzxlxfjshr9 +fourxmnjvrbkln8mnzvpthree5 +foureight94 +ztjplxlksevenseven8ktlb +94ngctc1hnvkpgxnmxxsp1 +qchqnmstcsevenmkkmkxltzjtfsc798 +97zkqgmsfive8 +nqkjxjvvb7nqbgtr45sixsixgczfive +pvrjzqpfoureightfivetwo4zcmmcffnlthree +xktoneighttwoqljrsctbzxxqjtwo1ftsjczrsevenzqcdxtnktwo +eightjbxnnhscg5seven +gpjxfmgpdcmbc6 +six1two9 +g8fivethree +kv5nine9fzkvznlfive +1ts86 +75five6 +threepbhr81 +ninek2xhmcmtnrf +eightkntlndvjskzfour5c +threehpg7kgnjkgqzs87 +4bnnpbgqpmfour2rjpthreeqmjrb9four +four24three +2chsixsixqfcksfpqbt +2ztjdqjr4kpbxmcdpd +xfive79two775eightwohm +cpcjzmltqbtljgqqvnine78three +5sevenl +6tqsvxbbqx +two9zkvfcllbpmmsscvn2fivecndc4 +zqmz46fivejfljvptwosix +4zmhnjftwo1qmtqnhbtt +sixsevenlknss2gzcvfshvfpkfcq9four6 +81mjbktphdjfv6glzl +five6cpctwofiveccsvlshnj +three8lninexhlqmrhm +225onecrjvgckdbk6 +nine154fivemtgvpfnlgx +rtmpvkpdtgtm67five +seventmcrfpsfpx9seven9five1seven9 +rpftkjkhfive858mgjjgcpcsevenxrjfsxrr +kvcthrfkcjvq3659 +kxnbtm5 +three7mmqmcpkz7sixhpzsxpknszbdr +nine92csvcxhcr7 +7fouronefive6qfml9eight5 +489hdvzxfsgjngkzkdvfiveone3 +6sgnbhjqqxqeightgmvtqdcfivesix +dfphtx3 +four8mcrszfpbbsjdmqpkjdgftqhskp9 +7763tqbgpfltbrcgm6 +9onevrnmrhtb5onethree3zbpdfznxbkbscjtjb +pninethreetwo76tclssnpz +9fournine +63nxvsmhbngseventwosix +djnine3jzghptvbpbseven9 +2six16one +4eight2 +four85nzfour69one +6625lbssixkrxsfshjp +2133eightzmfxcrlhngthree +four7fcszmcs +gtfqrjqxkxjkblfstrcszcrz3one1mjhbv +vbpseven2four +2bngj8rdxvdcxdvj7four +2pqnineeighttworps +twoszzrbzlqb8sixq +six54bgrpn +17five +8threefrvhj19fivethree42 +eightltpcssixtwoxms5ghf +sevenonefive57mdpqbsdttdxxzctcqonethree +threersqkhmgbsnlszskhslp57oneightlm +six9threerzdsfkzj +rskvrvxrxntspzstworpxfxqjrvnmhgsvcdthree21zvjlxd +3gdkcg +vvvxkxhzeight295seven +1hqzbfzdzrbnz3x6 +9fiveeightpvjpvdrl +7jcgbkthree3pqxlsixfour +rxeightwonineqntwocpstsl3rtfbzzf5 +trlsqtls9nxstgtnthree89 +glxnkkssflcttone73 +3drvbgb8eight +4937fouronemnqb +63vjtwo1fourcmvkmzpcsh +four8119sixonedjmsqnxtwo +296544 +ninefj3 +three4ninefour8two +fiveninethreethree3jss8lzlk +gsjfrnhggktwobcnxfp96bt +27onerbtz4fourfour1 +88three6five +ffckjftkbrxfvzphmx4 +2nqbxnqhxonesevengsxfspghjnglnl2 +7hqtrhpdtnrhjx1sixeightknhzpmt +five29xb1xhdf6bxbxptxfnrmmvn +2sixmmdkrzkgmvjvp1six9four +414fournine2kcjss +7kgb5twonine +66five3threerhx +qzh9 +ninexsdkngnzffourljrhrsrkx9sevenseven +five6eightninetnonesix +6prgtmxjlztstbkcfour +th9 +jmtgprnslgn5 +7twoeightgngmcqnpd +92eight8 +twolvxlvg57 +3ninethreeeightvgvbnk2f +nsmeightwo8vjbgfhhrsixoneclzeight +9sixeight3nrbxqhtgskeightvmh8 +threelsqvpd99chmlmtj +xeightwo8 +5pjjjkxxkfourjvgshnffjfjzd4 +1px +three8twoneh +sevenfivephvqsqrzl524 +2seven3 +five45pktjrjnckjsixninezrcjxdrsmdc +rxgxctwobtwo9ngbrhfjhqc +six153bq +2qltqxkzeightonevxhsbglxk +hjpltpcf1blmcfourtwonine467 +42five9eight +sixxhlfqh1ttp +threetwosgbvsprq7j5threelcbx +npgrkbnhbsmpbnshg46 +ninenine9five8m +pjdxpnddndfiveqjlsp5dtlstrlz +tvc57krtsmhqqvfqxfpjkfbbddpg3five +1jkcfxpgmeight4qmhxrxjlghjsgnjptltvtwones +eightkpgvbmlpfmrpfncnlb6rtltdbk4 +3fxcmvxfivemntgvphgsspeightzsdjdrpxnlxs +shsdpncrxhlxsevenmkjpznnkdjr5fournine +four8qdrjtt1eightnineonefour3 +three82gnpljsnbcn5 +1ggfivethreefour75 +one6vhx +5fivetwo2529 +six2b2 +fourninefiveseven9 +fourfvrglnpdqfhsnine6zpsccbone1h +1eight8mzdtwofour +8eightwoq +ninesixfivecpmlvqkk9three +kgcmvpjvjbmnqbstwo45fiveoneightqhn +xjrcgdblffour5onefive +hqtxjnineqngjvsfour4gbt2 +9sevenlxzlrvzln +brcptklplkfj1vqdpbvbdsix96 +four9oneldsvbfivesix +145tdpvphfbqknine +ljflbdvxqhvmtsevensix4eight +6onefive8zlplrvfour +6mzhddbtg8sevennine48rnc +fivesix3fivehtpdghxhm62 +87123 +fivethree43seven5pztchmt +onegzqbbzm6vpm5 +952eight +6four2srtnppsttwoninegvhctmqftp +5threethreeqxvspthn612phhseven +73four35pgtvz +5four29 +79fiveeightone1 +bgblfdstmvbsgsjgn281sevenzlrpmtxbeightwohcq +9sixpqttnvjmlscone5 +6threesfourfivebkkx +fivesixsevendlmldl3 +bqvpfzghfoursxbndvlxzgbs5eighteight +fbmcgpz83pztlsevenmjbxbpcxx +three61rrthjdzs +8mx57sevennines7 +3rmcfbldjhtcfhfnqsixkkpclcb5z +ttsm16gzcqninetzkjzcrmcbkrn +qkvonetwoseven486 +lnqnbkpsix84 +5sixrzl1hlgjcnzxsevenone7 +99hcznvbnbnhssk +2cccbmqtzkfivenine7gnhjvcg5 +8gxkkrgnpsx38kbxeightwonzm +8kdv +pmxninecqeightfour1bgpqrrkjnhjfhtn +nineseventwo6nine +fpftlgd33sevenseven417 +fourt3fivethree +tfive8jzbjf5nkvttwonzpbplthc +41nineninethreeone8two +31mdlfvreightwotr +6twosixsixjlmcdqrpjthree4four +g2 +eightjjzh3ntlglxxpmcdrfnvkone +ht6 +eight9threehmbfnsjtpl5threergldqjfjheightdhbz +vssqqrmvpnpjthreetwo8bhbbrfckmzvbc4 +klgl8nntkkvhsixsixfour47fivetwonel +ttwospnvbcr2ktkzcmftpfqxbbrfjxpxthree +six7jcfjpjt6lgclnzonebzlbfsdbgbpzdkhx +six824czjxvvkghdvzbzql6 +vfivecjlm8seven +fiveeightcrn6ldxqdqxkvntwo4 +lzcqrfkct4ninesixfour5onenjqx +ninenine1ttjjjmvrbs +4xcmqggjhts +8nkd1six +mldzcxznine4seight +eighthdthqc56 +zhjffivefshkbqttwo5 +lgngmclkjjvhncffivetwo5stcjnzlfjb2 +glpflvjx6 +one863sixfivenineninejrbvqlz +9fttbspxxtgbeight +sglfjndn8mcfcftwotwo +fxzsrvxhpvkseven3fivejmtjlpmb +9kphnine31ddxztph +s39lffour3lkdbrks +3fhhth5hgsmh8vqspmmqcteight +6sevenhtclc +26njgdfive7onejtglghzlj +kktgkzfcpd6nlfcvxvvfnine +8ccnhdd4czfgsevennineqszfqd +onefour194xkj9eight8 +onesixkvjr52 +eightfive1rnrqjbfdck9hp8klq +five69bcg +threefivet136pfivefive +seven7mhdhlhnmghklbbjcbseven93mgltsvnbx +9762threefive +ctdssd25qnrztptmr +13fxdptkcgmxjfdccgcrj545gfzdlmcrpp +sixjrlmbcfournrsvjltwo5sbbvsfxsr5 +grkkhhpmx9 +vbvmkmxnmvdxfive8jd +41141722 +91xngpn3sfjkkfmjnthree +zxsix17brp7twotwo +nine39six6 +llq7 +83threethreeeightninethree +svdbjstvsix6zqbppsfour +two76fxzdss3sevenzg9htmnflgq +fourtwotwo2ptb +cbrv9 +vrvdvq1psq2fourgvmqk +42sevendmdsonetwom75 +fourhxr4ntppb +14btwo18 +vzx8two +3sdmnlqsqkb9324xfdhptnine +6n4 +5twoltmoneseven +xmqdjlz5seveneightonetwoseven9 +7three4eightzxlgpxhnrb4667 +5nine39eight +one1twojxjnb +eightkmlhjvhhgd5pqkblcr +jddsgdgdf16231sixmzfnpgvnqp +hgkss234five691 +kxzvnbnnine3n438xrt +lhnfour9 +fourrqktqhglbh3sevensevenfive89 +xdrtgjlstwothreeqdhnpxhqtjkldfcbkqgxmlktfour7 +fqoneightftbxksztshxssevensq1 +3rtsnzspqrrqsfive +213 +nine6three53bzrhpg6nine +t3sxccdtzvhvfive +7762 +7gxvmb +644eight5448two +8hxnqrqknththree3 +3sevenfive9six +fiveseven3threemkppbkpxhqgn +czseven6418mqkjdlftcjfbjsd4 +971ponenckqqv1 +ninesevenmqqtcnl151seven2 +7cmrgqbzfour +3six6fourdxbxngjonelzhjl +txtfxpsmmlninefour8q8 +pqhpzfive3four +7bggjsjrsv +49ninefive1fivenstnfcm5 +seven2lrkhzgkj5fourtwo +eightone7717eight9 +fld3threetwo1three +1fourfive34onetszfour +mxfdscrkbr8nine53seven +onethree4fivemxlchhzqbzpvszj7 +cjzhpqseven1fivetwofour78 +9vsnhq22ksrrjmkhvdtwo +2lzkxtvseventhreeseventwo +three8fourfivetwozgcrbrxdjk +87vqrqfvxrkdsix3 +two3ccsix +spjtwo5four +53gvzvzrnr29mrxljz +onefourone1ninethreeeight66 +6kbt +3nc5eight +sevennkbjttdjv216m9djcrntqxx +jzs333tjlhhroneklmmhflgvb +two9seven2eight834five +fivetwo4two3five +five76 +9sevenljjrrrrvfg +tlttwonermnfrl94 +xpbjpfzbkcgseven36fiveseven +7fivefourhvjf6seven +5three765nkj +eight8nine8eighttwonine3 +2fivesixvfhninehbsfklrhgzfourjdjgb +cdthree6vbntwo9 +sevenfpnmvftmpn8 +qcbhgzqtrbcc6 +ntvtxbdkcvtxdkzdz5kvkvdbxhdj5twojxfivekxvdtmg +pzlxrnsqlfour9hdpllf9sxjtxntwo +7prlzzkninenxthqdk4nine +twothhhbfourbsdbmsixczrhddqdt1 +nineninefivetwo6eightfour74 +foureightghgrjtwo5zvnrxttwo4 +two8five +hltjz5two1seven19 +sixcfz1jpfp3onesix57 +544 +7626 +fhzhpfivebbkvsix71 +xtwonefive1eight7cfss18 +threeninefmlbfznine6sixtwohfxnfffive +szpgrtwo7 +3xsixtwo1nzlpb +5three1rhcczoneg +onefourz3tff6htmmqk +mfclgcvn8fourkxjdtwohsxphnftsn +392one29 +2hpflkrtwo +8ncfncgvtcgxd3rkfqb3twodlldrzqsix +3three63eighttwovgsdkx18 +6sixfour +zksq2xdxkz1onebtbmbmmlc71vldqsk +r2 +1ncdcsbq +8cbdqgbcc1six5pxdbkgzjhq +tltwopsjsgtvvftc2six +fournvseight3two3 +four57cphtrbghtscdhkhjttr +qninesixtrrjxgbvms9five28six +one8qsixthree75csc +8pqd4threefivephpkqcgnine +nkfjpxqhsjmbbx64rpdfqksmfq877 +677sixbgg1 +4six3mzzrgcrms5six +gzcmlrqvktstnjmrzqx36pmftnbvr5 +honemvzkfbkvxsjnlkhfrs6seven3six +8onemmcjp +sixseventhree8threetwo3six +7sevengdjqlx12three +chgvllfqlfninetwo7twotkntcpls6four +6lvxcqzcfmg9mcjjlnbr9 +onelfjdbnntlvndktceight42 +95rfdnllb3pqtnpmgbtssbbx +sixkntcqsnmg3eightldfkeight8six +vonexcchsdssblsqd8dsmggkzjsdfclmbpthree7 +4msevenfivesevenljxtkxhdfbnine +fksf6 +lmmqndlfthree17397 +fourninemrr8cljkkqbseven +336six4blbbpxcbdd +ninetwo1threefggtvbrsczftcrthkcmxhtseven +sevensixone4three2 +one4four +bc2 +qhgndzxpdmonecbjqtwojvkftdlfvnhqrtpdb4lbkgffvlp +324fiveninenzp +c54 +482799 +6ninemd +kd3ljjxmmckrcbrcshxflgs6llvvthrhvd2 +hjlxsksix2eight +one12twotzchrdfpg +3dfksprqsvzmr2eight4 +sftsktwofjxbhhvseven76sevengtptwonej +seven2threefour4two +2tdzxcbnpnx4 +2b6six4lsglzkbjxk2 +kfrntpdnl6sixvs3lxcrpjmkkff +ninesix8xkhmmnplggvng +3jjd5onevssix +nine2cfbhdmgptwo4xz8 +sdjtzbzm1threethreedhvhshgvnn3 +sevenone534bgjmzlpcmxfz +pvvbcnlq8djdp21lhdgkfkleightoneightlxv +4xgjzmcbkn2jgb41 +4pmfbgqrjdrkmxfjthreeone2 +eight7ninefqxjvm3oneightx +1ntbgttnbfive8 +6nqfive +fourpdxvg1dqhtbc +8ninemrdtwo +8onesbdp +34kxkvvdkfourmktjbzqpktwo5 +8jjnjvzrzkmkj8qqsevenfjkqnbvlrqdnbfnxvb +ljhpqnqfdkstssrptpq1hhv +dsix7df4qhsvjp53vlnhthp +fourpq9 +dcvlmlvbtwo5jlfkhmxxrldsqqhkztx1sevenfive +1rgnhdjrcvhnxhk5ndfxprfmmgff +8jhqfm3bonen7 +2eight2km7kjdkltnfivesixnine +8j5onecmbceightoneseven +nvvskqrjfz77four21tvclspzgjq8 +fhdlvm52seven5ninethclsbhbmcsixtx +8btlvsfpz +sevenonepsxfdhqck5fzvftnsix +five4twoone56 +rzgxzdzqrmseven1rrkpbp +vvhpzfcbchtwo3seven8nine3 +three7zqxvhmbnrsdxvnpjsevenninefour2 +6fivesblnqfjtrninekrxvzd927 +sixfp2xfdqqkblc9 +nlvxkslrgjrsfive2 +kvxtdkfvxntwo7hvqlzz +3five4twolvxnmzltcbthree +2sevenfive6 +sixseven3113ncgzrjjkr +2gppmh39dmmgjks +363czlhjeight95 +zk1sixsix6twosix +8fourtc5 +sixeight1three2twonine87 +5vvnh +fhnvvkhsx3 +one9nine +jnrk8r +zhjqc66oneightxf +three72cpzhp2pmgzkddb8 +6sixtcxqcv +three3mdqgkhjdbc1nine76nvht +dqbk6fourfssthlnjmgmjfjf72 +fjgjfbv2dlmqgtssnmonesevenfoureighttwo +66gqffpzqfs +zpmslbnm75foureightspkjssseventwo +81xjd3 +t2three7zqcnklffivefive +kfdkflvrgkfour6threevhdm +gpjdrtm2sbttvbcxdvfmc3one5three +xcpjgnninenineonenine3fourfourqghsvqfn +hvxtnvtn9twot +svftdtjhlone5twosevenonekjxtnnnrg5 +2ninesixthree +88twofourf +14brpnzhmlljgxxc +rzzmsskzbsonelts28 +34ninerft5 +rzvlkjvone142oneightpv +onenzeightvcgzhpkmfn3rxninenstzzbv +78xtwo3qmjvnlmvslqftd +twoeightnine4ctzmjrfjtqpv8g4 +9pcfive7four7nine +7kjnfhncjxcdhmsptr9srht9 +89548szcgrnvfive +xdtgbmkknmoneseven6jtzmlbpcktncfcllvfgckqbpxtwo +nfjqcnine68eight +61fqhc +bljszntg1hchhb +eight331qs5drzfn +75733 +sevenfour7fourfive3 +qhn7jrcxzxm +72fournpppvgzxhfkz15pbcvhlqm +kzktsfzq5dhhmzfbx55 +sjcqgjnxrcxhnineninemzpmczrxbppp5 +three8dqhstsgpc78 +g46zlqxtn4 +fivegzddrsevenseven9xmztgpjprxseven3 +9nqdflnboneeightnineone2 +3hxlf8nine9 +6sx9eight4 +77two121 +two31ltrbfrsix1 +sevenone575jxgcvqjzcrthktczhqnq1 +53phstwo +5sixkgmvkxcf +3mlcvx +164vpmdfeightzqsddcd +55jcqcfthtgsssbc +kmfsxjv4mrpvceight857zdqtqb6 +bdms1czcpxgcgb1jsjhpzncxdrqcbhkfivexgzlq +ninenineeightfivedhthreelfour5 +mbsmkshmsbnxbflmrz7qzqz87qqqxbhphgbvgseven +9sevenldstrnjtkdkjtlspsjmzzttzdzsix +5lsrdqxghnl1 +64twoninethreeqqfrzcmmrfqnbp +khoneightsevenrflbbdmfourm6nhfdxzpkhlbsdqgvtctlp +eighteightfive5 +eightrfourrbscmnrsxg9kjj +ninexpbbmlsevenfour9 +ntnckzcfour9twosrff +rnxdgvfivesix1psstntffn +cbcxxst47three2ninevkpbcspcj +16seven5qbpnhqxrcjvtwo +849two8185 +seven2seven2one8fourfourseven +fourdjjmtvfbr12 +sevennvrfqzl9lhgsflkk +cdhklbhntwosgbpqmljhsevensfff1onesixvmdxcglt +6pcqhlzzzone +eightqkthfivesevenfpxbrnkphfttgstdv3 +48fivesevenfivetwo +n5fivefour +4gnnbznfour +1threefivebcgxzpd +ttmeightwo19mrnhbgxz2gjdctxvhtzpkq +sevenmtlmpzlzgzq5one29 +314threehdmtckfgtxbvdg +1fivefour4jninevgdxthreeone +bhkjl84fiveeight +sgtbgcrplgfqqqkkxsveightseven2 +twonine9 +3nineqffxrtthree98spldqjdrqzzcs +one9fpgbcdsldpfour +6two1sevenmrxbvkp22 +ctdsninethree5 +cszlntkkq4prfcrdsx4 +cmvxcgtgrsbjsd8189 +4sixrshzpspnzvftftwotk8bmcrpn +four5pbqqpdgcmkspsccmgffive939 +j3eight2 +6twosixeightfkfftzthree +hhjn7ccfxjl3eight +2fiveseven +four9rt +7ffflzh5zrqftwonehht +4qfive +four7h +six8four149six8 +nine74six1hblnnrone +sixtlrmmckxgsmskqdmtnvvmncmdtqtmpfive4 +5seven95bmrtd +17cgstgbcjsixvlzkqh3fgsvmcssjvsevenffrjtt +6576bkmbjplfive7seven9 +nrbmhmkbxdntb17qbncrtmvjcsix4 +8dckvflvm +33seven7nmjlctwovrpjpvmrgr +2eighttwo7mdv9 +vk9gone +9cdxlcxgvoneseveneight +8five7one +sevendtslgtkcrs1rqpkl4mq5five8 +3thhhqplbqczvkg67 +7661dqjcnsix7knccb +four3eightbslcfbsbvj4 +2fivegfvhsvsj4fourqxd +six35smmsqtnmtwo3threeeighttwo +9fchjtgvfvpxlvpbghn +threefoureighttwo1q +fiveeighttwo6 +25three9eighteightsix +cjhbnineone342xjvfour +sixnine3 +1nine53 +5fouronevzstmptgrgffrprbbjnrhfzmfour +fnlvqxgbseven3qdbsvqcm8sixthreerfp +foureighteight2 +foureight82dx8gdqzrpssd4jqkzm +dpthree2565cqgthree4 +cjjjkftntjq4 +1qdmmfivetwo +lb4four +two6hjgqt +ddjchjglpbcsfourdtvtcbzb3five +6twojqffjcbxone +4gc6cskjfptjxbpone +32gfttjsdtfvsixone +oneffjrrtrx4xlscjrpcdzv +hznvzf59jfsftctzh1343 +pkxpqnbvgscseventhreeeight2two3 +tgsrfcseight5four +9three5 +njddsqsix5three +drpksbtwo6jgxmphdnvjbxc951 +dltwone554rrczft9four +ninethreeghlldqbtl69bvpbmxx +four6spcfqgvvcvz6ninedtltbcnhsj +7lfnzntzjxvthreeonefourthreevssnvvgzc +3fourxxqbfdjxjdmrbxxzgxjhmvxh +pkxjxrszx4 +onetwoqpzltxj4threetwokzlcqrvmpq +mpfslkxeighttdfcbpvdjbfb84hsbz +twosixeight72gdvmqbnpq +threefivenndkfive4lqhkxqfthree +92cpsgjonefivethreefourvnqmrn +8eightbtcskqbl +8eightqcqcfrtdc8sixtwomfdg +5z14 +7sevenfiveonefbsgzzf5ninevjhqx +57eighttcspqjtxponeightffd +5ninenxthreeonectxfqmrlskzkxclghth +97ttkhsvqfivez6 +lvkkp9jkkxrmph1 +jfnfpzqttgzmcrhn3nvbddtnrtxfoursix +7ff7tgdzfour +3four8kggghfzmcq1 +onefour4xfnpgfrfp +43pbxbjp6vqvrvkvc +twofournkcj56nine5 +one9qzkptjmeight +f86ninen24twothree +three2ffqzzzzbdm837qtczrbpd +6five49 +399ffk +825pbghkzmz +27eighteight38sixfive +2fivepqqcnphkfc19xnqfljkrqt +769clhcfmcbnntlrrtg21 +323jmphjone +lpgvnlqtwo8 +97onesix5 +99dccchbdfdlczdfxtfbh4 +8tkqfsdsevenfour11 +4klm3fiveeightcszvlftm1 +eight6foureightfouronefht6 +qpfive1 +32nrjhnnldb +7ninefourhpbfivermgkkxqsixnjkrntfv +9mzjsevenghctqjcbjz +two95gdfive +5flpvgjsmbbxgsgh2threesqjnoneightdt +mtpcvjlq2891rnine8 +srhrgtwonine4 +fivesixninenkkrnpthreeseven6mffive +qrmtfour8 +eightfourfive4 +558 +15sixbfdsgrdmponefour +5threepfqbrkcgrv +twolxzdhfourqjeightfour55zjvconeightnf +hmscktxrthreeqrp26 +27kzbhxzfiverrzkdrxqfd3two +765eight748vzflchf +6fourljfoursix3 +nineone9 +dtwone672fiveqzzcfrpzfjmhttninetgm +clkseveneight8jcgmtmkrv +fourfive4vqtqtngssone +rkjjcbgsxfzxjfd2hjonerqkkhnxpboneh +one3mbccxfv7rgtxbnvs7 +61pxsixpztmvfr5eight4ntgl +63kmhbdgdbnbctkrtwotmd4tx +fiveseven4eightwolq +4three2fivecnlzgone3 +7mmmfrrdcqs +fivegfk5sixeight7pt14 +19two +1gqsqnmbvlzklsxdbmeight1six4fourgztmkqsl +sevenzbqdzlmthree7two381eight +eight7nxzvrpxl +fourtwothreeqjvqgsbtlmgqnb9sevenrxn +5eight4sixeightbggshzhjtwo2dsvhtsgg +3oneeightrhzktblfcp5 +339bfrsfdbbxv32zxjxkflknlvsq +51 +34eightcvgm +gb944hzjhdtdcg9 +seven2khjt +sixpgsvqxdgd8813rrzv +six1eightrksvzhltnnfivefqvnxcsjzzthree1 +89xz +jxzccq8eighteight +rn4ncmgllzht +nhrptztv2eightseven +sixbztt3sevenjnhzxkgsbsvmq +eightsixeight9two5four +5kgkrnbplph7 +fivefour3one37sevenbhd +one6onepkpnfhqmp +1sevenqzcgsnine1zkone +1vbbppvtxonefive +vpxlbcqfivejhxh69six14six +54kzqzvfshddq +zk124jcgnc3three1 +fbkvqqbhmkfiveone9kctfour7 +jkzgeightfour7nine6 +cdvxvmtwofourgbsk9kmfrtv +x9one +gsixfourzkmnmvk41djssgh +threehvpdzlhnzpthree9 +2z +vttbsmn1seven9nine4 +xtht483fivet +threehgxlkzrd1 +sevensixmb68sixthreefive1 +5sfqxpx2fiveone +38zdpcljqkf +two32ndxvvqpnn5 +1fourprmkdzqxqsonedlkhxbqplx +3nine5two8three +4sbvcnsjdmktwofourseven +moneeight2jjrfvfxztcseven +two8three3twoljpzzshzgfqjpb +twosix7nineseven +seight3qvmq2f1kkfone +xtwonezkxhsdkqvmp2fmcmqxcczpeight +5sixthree22fourfoursix +fivezqpspcbzkdmmtwo3ssgpfgkhnrpplt +lbtsdpgjp73 +3rccfnineffpgrmh +5bsnjxljdcsixtwo53 +fivefour4fourg9 +98seven +sevenninemskq8 +dhpbgtkmjfourone6rsgnpvsbjtkfqsvrs9threethree +one5nine +ninelnsmgk3seven27eightsshhpqpb +fourtwoqscffdv4nmvngxbqht +ndtvfive2brkzntrjjl179 +8six82one +nine5fivecgfsbvbtsn57five7djxlclnfv +2gzqrfldtlpeight3fivencmlmffivevqkhncfm +7bbfbcvh6 +ffnrprtnine1tjznmckv5sixczv diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..3b925cd --- /dev/null +++ b/readme.md @@ -0,0 +1,6 @@ +# AOC 23 + +# Day 1 Trebuchet?! + +`cr --bin d1_0` + diff --git a/src/bin/day1.rs b/src/bin/day1.rs new file mode 100644 index 0000000..7bc8c99 --- /dev/null +++ b/src/bin/day1.rs @@ -0,0 +1,94 @@ +use aoc23::prelude::*; + +fn d1_0(input: String) -> Result { + let mut sum = 0; + for line in input.lines().into_iter() { + let chars = line.chars(); + let first_num: usize = chars.clone().into_iter().skip_while(|c| !c.is_digit(10)).take(1) + // This would get continuous digits: .take_while(|c| c.is_digit(10)) + .collect::().parse()?; + let last_num: usize = + chars.into_iter().rev().skip_while(|c| !c.is_digit(10)).take(1).collect::().parse()?; + let value = first_num * 10 + last_num; + sum += value; + } + + // println!("Answer: {}", sum); + Ok(sum) +} + +fn num_to_word(num: u32) -> Option<&'static str> { + match num { + 1 => Some("one"), + 2 => Some("two"), + 3 => Some("three"), + 4 => Some("four"), + 5 => Some("five"), + 6 => Some("six"), + 7 => Some("seven"), + 8 => Some("eight"), + 9 => Some("nine"), + _ => None, + } +} + +fn first_occurrence(str: &str, reversed: bool) -> Option { + if reversed { + for (i, char) in str.chars().rev().enumerate() { + let digit = char.to_digit(10).or_else(|| { + for num in 1 ..= 9 { + if let Some(num_word) = num_to_word(num) { + if i + 1 >= num_word.len() && + &str[str.len() - i - 1 .. str.len()][..num_word.len()] == num_word { + return Some(num); + } + } + } + None + }); + if digit.is_some() { + return digit; + } + } + } else { + for (i, char) in str.chars().enumerate() { + let digit = char.to_digit(10).or_else(|| { + for num in 1 ..= 9 { + if let Some(num_word) = num_to_word(num) { + if i + 1 >= num_word.len() && &str[i + 1 - num_word.len() ..= i] == num_word { + return Some(num); + } + } + } + None + }); + if digit.is_some() { + return digit; + } + } + } + None +} + +fn d1_1(input: String) -> Result { + let mut sum = 0; + for line in input.lines().into_iter() { + let first_num = first_occurrence(line, false).ok_or("No number found in line")?; + let last_num = first_occurrence(line, true).ok_or("No number found in line reversed")?; + let value = first_num * 10 + last_num; + sum += value; + } + + Ok(sum) +} + +#[tokio::main] +async fn main() -> Result<()> { + println!("Day 1"); + println!("====="); + let input = utils::aoc::get_puzzle_input(1).await?; + + println!("Day 1, 0: {}", d1_0(input.clone())?); + println!("Day 1, 1: {}", d1_1(input.clone())?); + Ok(()) +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..9b344b0 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,14 @@ +pub mod utils; + +pub mod prelude { + pub use super::utils::{ + self, + common::{ + BoxE, + Result, + SError, + SResult, + }, + config::get_config, + }; +} diff --git a/src/utils/aoc.rs b/src/utils/aoc.rs new file mode 100644 index 0000000..fd06dbe --- /dev/null +++ b/src/utils/aoc.rs @@ -0,0 +1,61 @@ +use crate::prelude::*; +use reqwest::{ + header::{self, COOKIE}, + Client, +}; +use reqwest_middleware::{ClientBuilder as MiddlewareClientBuilder, ClientWithMiddleware}; +use reqwest_retry::{policies::ExponentialBackoff, RetryTransientMiddleware}; +use std::fs::{self, File}; +use std::io::{Read, Write}; +use std::path::PathBuf; + +static AOC_PUZZLE_INPUT_CACHE: &str = "aoc_puzzle_cache"; + +pub async fn get_puzzle_input(day: i8) -> Result { + let file_name = format!("day_{}", day); + let cache_path = PathBuf::from(AOC_PUZZLE_INPUT_CACHE).join(file_name); + if cache_path.exists() { + // Read from the cache file + let mut cache_file = File::open(cache_path)?; + let mut contents = String::new(); + cache_file.read_to_string(&mut contents)?; + Ok(contents) + } else { + // Fetch the content from the URL + let response = aoc_client() + .await? + .get(format!("https://adventofcode.com/2023/day/{}/input", day)) + .send() + .await? + .text() + .await?; + + // Cache the content to a file Ensure the cache directory exists + fs::create_dir_all(AOC_PUZZLE_INPUT_CACHE)?; + let mut cache_file = File::create(cache_path)?; + cache_file.write_all(response.as_bytes())?; + Ok(response) + } +} + +pub async fn aoc_client() -> Result { + let session = &get_config().aoc_session; + let mut session_cookie = header::HeaderValue::from_str(&format!("session={}", session)) + .expect("failed to create header with api_key."); + session_cookie.set_sensitive(true); + let mut headers = header::HeaderMap::new(); + headers.insert(COOKIE, session_cookie); + let client = Client::builder() + .default_headers(headers) + .gzip(true) + .brotli(true) + .deflate(true) + .https_only(false) + .build()?; + let client = MiddlewareClientBuilder::new(client) + .with(RetryTransientMiddleware::new_with_policy( + ExponentialBackoff::builder().build_with_max_retries(2), + )) + .build(); + Ok(client) +} diff --git a/src/utils/common.rs b/src/utils/common.rs new file mode 100644 index 0000000..767919a --- /dev/null +++ b/src/utils/common.rs @@ -0,0 +1,4 @@ +pub type SResult = std::result::Result; +pub type SError = dyn std::error::Error; +pub type BoxE = Box; +pub type Result = SResult; diff --git a/src/utils/config.rs b/src/utils/config.rs new file mode 100644 index 0000000..80ab8fa --- /dev/null +++ b/src/utils/config.rs @@ -0,0 +1,21 @@ +use std::{ + env::var, + sync::OnceLock, +}; + +static CONFIG: OnceLock = OnceLock::new(); + +pub struct Config { + pub aoc_session: String, +} + +impl Config { } + +fn get_var(var_name: &str) -> String { + var(var_name).unwrap_or("".to_owned()) +} + +pub fn get_config() -> &'static Config { + let config = CONFIG.get_or_init(|| Config { aoc_session: get_var("AOC_SESSION") }); + config +} diff --git a/src/utils/mod.rs b/src/utils/mod.rs new file mode 100644 index 0000000..0bc176b --- /dev/null +++ b/src/utils/mod.rs @@ -0,0 +1,3 @@ +pub mod common; +pub mod config; +pub mod aoc;