├── .gitignore ├── .cargo └── config.toml ├── Cargo.toml ├── README.md ├── src └── main.rs └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /scrape -------------------------------------------------------------------------------- /.cargo/config.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | rustflags = [ 3 | "--cfg", 4 | "tokio_unstable", 5 | "--cfg", 6 | "reqwest_unstable", 7 | "-C", 8 | "target-feature=+sse3,+avx,+avx2,+fma", 9 | ] 10 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gelbooru-scraper" 3 | version = "0.3.1" 4 | authors = ["Jiftoo "] 5 | description = "CLI tool for downloading images from Gelbooru" 6 | edition = "2021" 7 | 8 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 9 | 10 | [dependencies] 11 | anyhow = "1.0.75" 12 | clap = { version = "4.4.7", features = ["derive"] } 13 | reqwest = { version = "0.11.22", features = ["json", "http3", "rustls-tls", "socks"], default-features = false} 14 | serde = { version = "1.0.190", features = ["derive"] } 15 | serde_json = "1.0.108" 16 | tokio = { version = "1.33.0", features = ["full"] } 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # a download tool for gelbooru.com 2 | 3 | Used daily by me for its intended purpose. For pickier users `gallery-dl` must be the better choice. 4 | 5 | ## Examples 6 | 7 | ```sh 8 | # Download 'touhou' tag to /home/user/gelbooru. 9 | # Note: There's 825k images tagged "touhou". All of the links likely won't fit into your ram. 10 | gelbooru-scraper -o "/home/user/gelbooru" touhou 11 | 12 | # Download 'touhou' tag and metadata about posts to the current directory. 13 | gelbooru-scraper -j -o . touhou 14 | 15 | # Download all general images of Kagerou or Nitori with a score of 20 or higher using HTTP/2. 16 | gelbooru-scraper -2 -o . {imaizumi_kagerou ~ kawashiro_nitori} score:>=20 rating:g 17 | ``` 18 | 19 | ## Usage 20 | 21 | Here's the help message as of 0.3.1: 22 | 23 | ``` 24 | Usage: gelbooru-scraper.exe [OPTIONS] -o [TAGS]... 25 | 26 | Arguments: 27 | [TAGS]... Whitespace-separated list of tags to search for. 28 | 29 | Options: 30 | -y 31 | 32 | -o 33 | 34 | --api-key 35 | Optional api key. Has to be specified with user_id. Can be found at https://gelbooru.com/index.php?page=account&s=options 36 | --user-id 37 | Optional user id. Has to be specified with api_key. Can be found at https://gelbooru.com/index.php?page=account&s=options 38 | -j, --write-json [] 39 | Write post metadata to a JSON file. If no path is specified, writes to /posts.json. 40 | Path is relative to . 41 | If path is '-', writes to stderr. 42 | -J, --write-pretty-json [] 43 | Makes the metadata JSON human-readable. Implies '--write-json'. 44 | -1, --http1 45 | Use HTTP/1.1. 46 | -2, --http2 47 | Use HTTP/2. 48 | -3, --http3 49 | Use HTTP/3. Enabled by default. 50 | -h, --help 51 | Print help 52 | -V, --version 53 | Print version 54 | ``` -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use anyhow::anyhow; 2 | use clap::{Args, Parser}; 3 | use std::{ 4 | collections::BTreeMap, 5 | io::Write, 6 | path::{Path, PathBuf}, 7 | sync::{ 8 | atomic::{AtomicUsize, Ordering}, 9 | Arc, 10 | }, 11 | time::Duration, 12 | }; 13 | use tokio::task::JoinSet; 14 | 15 | #[derive(Debug, clap::Parser)] 16 | #[command( 17 | name = env!("CARGO_PKG_NAME"), 18 | version = env!("CARGO_PKG_VERSION"), 19 | author = env!("CARGO_PKG_AUTHORS"), 20 | about = env!("CARGO_PKG_DESCRIPTION"), 21 | rename_all_env = "lowercase", 22 | )] 23 | struct Cli { 24 | #[arg(short)] 25 | yes: bool, 26 | #[arg(short)] 27 | output_dir: PathBuf, 28 | #[arg(help = "Whitespace-separated list of tags to search for.")] 29 | #[arg(allow_hyphen_values = true)] 30 | tags: Vec, 31 | #[arg(long)] 32 | #[arg( 33 | help = "Optional api key. Has to be specified with user_id. Can be found at https://gelbooru.com/index.php?page=account&s=options" 34 | )] 35 | api_key: Option, 36 | #[arg(long)] 37 | #[arg( 38 | help = "Optional user id. Has to be specified with api_key. Can be found at https://gelbooru.com/index.php?page=account&s=options" 39 | )] 40 | user_id: Option, 41 | #[arg(short = 'j')] 42 | #[arg(long)] 43 | #[arg( 44 | help = "Write post metadata to a JSON file. If no path is specified, writes to /posts.json. 45 | Path is relative to . 46 | If path is '-', writes to stderr." 47 | )] 48 | write_json: Option>, 49 | #[arg(short = 'J')] 50 | #[arg(long)] 51 | #[arg(help = "Makes the metadata JSON human-readable. Implies '--write-json'.")] 52 | write_pretty_json: Option>, 53 | 54 | #[arg(long, help = "Optional proxy to use for all requests (e.g., socks5://127.0.0.1:9050)")] 55 | proxy: Option, 56 | 57 | #[clap(flatten)] 58 | http_args: HttpArgs, 59 | } 60 | 61 | #[derive(Args, Debug)] 62 | #[group(required = false, multiple = false)] 63 | struct HttpArgs { 64 | #[arg(long)] 65 | #[arg(short = '1')] 66 | #[arg(help = "Use HTTP/1.1.")] 67 | http1: bool, 68 | #[arg(short = '2')] 69 | #[arg(long)] 70 | #[arg(help = "Use HTTP/2.")] 71 | #[clap(action)] 72 | http2: bool, 73 | #[arg(short = '3')] 74 | #[arg(long)] 75 | #[arg(help = "Use HTTP/3. Enabled by default.")] 76 | #[clap(action, default_value_t = true)] 77 | http3: bool, 78 | } 79 | 80 | fn main() { 81 | tokio::runtime::Builder::new_multi_thread() 82 | .max_blocking_threads(1) 83 | .worker_threads(2) 84 | .enable_all() 85 | .build() 86 | .unwrap() 87 | .block_on(_main()) 88 | .unwrap(); 89 | } 90 | 91 | async fn _main() -> anyhow::Result<()> { 92 | // console_subscriber::init(); 93 | 94 | let Cli { yes, output_dir, tags, api_key, user_id, write_json, write_pretty_json, proxy, http_args } = 95 | Cli::parse(); 96 | 97 | if api_key.as_ref().xor(user_id.as_ref()).is_some() { 98 | return Err(anyhow!("api_key and user_id must be specified together")); 99 | } 100 | 101 | if output_dir.exists() && !output_dir.is_dir() { 102 | return Err(anyhow!("Not a directory: {:?}", output_dir)); 103 | } 104 | 105 | println!("Searching for tags: {:?}", tags.join(" ")); 106 | 107 | let http = match http_args { 108 | HttpArgs { http1: true, .. } => HttpVersion::Http1, 109 | HttpArgs { http2: true, .. } => HttpVersion::Http2, 110 | HttpArgs { http3: true, .. } => HttpVersion::Http3, 111 | HttpArgs { http1, http2, http3 } => { 112 | println!( 113 | "Invalid combination of arguments: http1={http1}, http2={http2}, http3={http3}" 114 | ); 115 | std::process::exit(1); 116 | } 117 | }; 118 | 119 | let client = Arc::new(GelbooruClient::new(http, proxy.as_deref())?); 120 | 121 | let a = client.query_gelbooru(api_key.as_deref(), user_id.as_deref(), 1, 0, &tags).await; 122 | let GelbooruData { attributes, .. } = a?; 123 | 124 | if attributes.count == 0 { 125 | println!("No posts found."); 126 | return Ok(()); 127 | } 128 | 129 | if !yes { 130 | print!("Using {http:?}. About to download {} files [Y/n]? ", attributes.count); 131 | std::io::stdout().flush()?; 132 | let mut input = String::new(); 133 | std::io::stdin().read_line(&mut input)?; 134 | if input.trim().to_lowercase() == "n" { 135 | println!("Aborted."); 136 | return Ok(()); 137 | } 138 | } 139 | 140 | if !output_dir.exists() { 141 | std::fs::create_dir_all(&output_dir)?; 142 | } 143 | 144 | let mut json_printer = match (write_json, write_pretty_json) { 145 | (Some(Some(path)), _) if path.to_string_lossy() == "-" => { 146 | JsonPrinter::compact(Box::new(std::io::stderr())) 147 | } 148 | (Some(path), _) => JsonPrinter::compact(Box::new(std::fs::File::create( 149 | output_dir.join(path.unwrap_or_else(|| "posts.json".into())), 150 | )?)), 151 | (_, Some(Some(path))) if path.to_string_lossy() == "-" => { 152 | JsonPrinter::pretty(Box::new(std::io::stderr())) 153 | } 154 | (_, Some(path)) => JsonPrinter::pretty(Box::new(std::fs::File::create( 155 | output_dir.join(path.unwrap_or_else(|| "posts.json".into())), 156 | )?)), 157 | _ => JsonPrinter::noop(), 158 | }; 159 | 160 | let t1 = tokio::time::Instant::now(); 161 | 162 | let processed = Arc::new(AtomicUsize::new(0)); 163 | let written = Arc::new(AtomicUsize::new(0)); 164 | let mut page = 0; 165 | let mut tasks = Vec::with_capacity(attributes.count); 166 | while let GelbooruData { posts: Some(posts), .. } = 167 | client.query_gelbooru(api_key.as_deref(), user_id.as_deref(), 100, page, &tags).await? 168 | { 169 | json_printer.insert_posts(&posts); 170 | 171 | for post in posts { 172 | let actual_filename = post.file_url.split('/').last().unwrap().to_owned(); 173 | let path = output_dir.join(&actual_filename); 174 | if path.exists() { 175 | println!( 176 | "{}\talready exists {}/{}", 177 | actual_filename, 178 | processed.fetch_add(1, Ordering::Relaxed), 179 | attributes.count 180 | ); 181 | continue; 182 | } 183 | let processed = processed.clone(); 184 | let written = written.clone(); 185 | let client = client.clone(); 186 | let semaphore = client.semaphore.clone(); 187 | let task = async move { 188 | let _permit = semaphore.acquire().await; 189 | 190 | let res = client.download_image(&post, &path).await; 191 | let p = processed.fetch_add(1, Ordering::Relaxed) + 1; 192 | 193 | match res { 194 | Ok(()) => { 195 | println!("{}\tdownloaded {}/{}", actual_filename, p, attributes.count); 196 | written.fetch_add(1, Ordering::Relaxed); 197 | } 198 | Err(err) => { 199 | println!("{}\terror {err} {}/{}", actual_filename, p, attributes.count); 200 | } 201 | } 202 | 203 | anyhow::Ok(()) 204 | }; 205 | tasks.push(task); 206 | } 207 | page += 1; 208 | } 209 | 210 | let mut joins = JoinSet::new(); 211 | for x in tasks { 212 | joins.spawn(x); 213 | } 214 | while let Some(res) = joins.join_next().await { 215 | res??; 216 | } 217 | 218 | println!( 219 | "Wrote {} files. Skipped {}. Time taken: {:.2?}", 220 | written.load(Ordering::Relaxed), 221 | processed.load(Ordering::Relaxed) - written.load(Ordering::Relaxed), 222 | t1.elapsed() 223 | ); 224 | 225 | json_printer.write()?; 226 | 227 | Ok(()) 228 | } 229 | 230 | struct GelbooruClient { 231 | image_client: reqwest::Client, 232 | video_client: reqwest::Client, 233 | semaphore: Arc, 234 | 235 | } 236 | 237 | #[derive(Clone, Copy, Debug)] 238 | enum HttpVersion { 239 | Http1, 240 | Http2, 241 | Http3, 242 | } 243 | 244 | impl GelbooruClient { 245 | fn new(http: HttpVersion, proxy: Option<&str>) -> anyhow::Result { 246 | let proxy = match proxy { 247 | Some(url) => Some(reqwest::Proxy::all(url)?), 248 | None => None, 249 | }; 250 | 251 | let mut image_client_builder = reqwest::Client::builder() 252 | .user_agent(concat!(std::env!("CARGO_PKG_NAME"), "/", std::env!("CARGO_PKG_VERSION"))) 253 | .tcp_keepalive(Some(Duration::from_secs(60))) 254 | .danger_accept_invalid_certs(true); 255 | 256 | if let Some(p) = &proxy { 257 | image_client_builder = image_client_builder.proxy(p.clone()); 258 | } 259 | 260 | let image_client_builder = match http { 261 | HttpVersion::Http1 => image_client_builder, 262 | HttpVersion::Http2 => image_client_builder.http2_prior_knowledge(), 263 | HttpVersion::Http3 => image_client_builder.http3_prior_knowledge(), 264 | }; 265 | 266 | let mut video_client_builder = reqwest::Client::builder() 267 | .user_agent(concat!(std::env!("CARGO_PKG_NAME"), "/", std::env!("CARGO_PKG_VERSION"))) 268 | .tcp_keepalive(Some(Duration::from_secs(60))) 269 | .danger_accept_invalid_certs(true); 270 | 271 | if let Some(p) = &proxy { 272 | video_client_builder = video_client_builder.proxy(p.clone()); 273 | } 274 | 275 | Ok(GelbooruClient { 276 | image_client: image_client_builder.build()?, 277 | video_client: video_client_builder.build()?, 278 | semaphore: Arc::new(tokio::sync::Semaphore::new(24)), 279 | }) 280 | } 281 | 282 | async fn query_gelbooru( 283 | &self, 284 | api_key: Option<&str>, 285 | user_id: Option<&str>, 286 | limit: usize, 287 | page: usize, 288 | tags: &[String], 289 | ) -> anyhow::Result { 290 | let tags = tags.join(" "); 291 | Ok(self 292 | .image_client 293 | .get("https://gelbooru.com/index.php?page=dapi&s=post&q=index&json=1") 294 | .query(&[("limit", limit.to_string()), ("pid", page.to_string()), ("tags", tags)]) 295 | .query(&[ 296 | ("api_key", api_key.unwrap_or_default()), 297 | ("user_id", user_id.unwrap_or_default()), 298 | ]) 299 | .send() 300 | .await 301 | .map_err(|x| anyhow!("{x} at page {}", page))? 302 | .json::() 303 | .await?) 304 | } 305 | 306 | async fn download_image(&self, post: &GelbooruPost, path: &Path) -> anyhow::Result<()> { 307 | let client = if post.image.ends_with(".webm") || post.image.ends_with(".mp4") { 308 | &self.video_client 309 | } else { 310 | &self.image_client 311 | }; 312 | let bytes = client 313 | .get(&post.file_url) 314 | .send() 315 | .await? 316 | .bytes() 317 | .await 318 | .map_err(|x| anyhow!("{x} at {}", post.file_url))?; 319 | tokio::fs::write(path, bytes).await?; 320 | Ok(()) 321 | } 322 | } 323 | 324 | #[derive(serde::Deserialize)] 325 | struct GelbooruData { 326 | #[serde(rename = "@attributes")] 327 | attributes: GelbooruAttributes, 328 | #[serde(rename = "post")] 329 | posts: Option>, 330 | } 331 | 332 | #[derive(serde::Deserialize)] 333 | struct GelbooruAttributes { 334 | // limit: usize, 335 | // offset: usize, 336 | count: usize, 337 | } 338 | 339 | #[derive(serde::Deserialize, serde::Serialize, Clone)] 340 | pub struct GelbooruPost { 341 | pub id: i64, 342 | pub created_at: String, 343 | pub score: i64, 344 | pub width: i64, 345 | pub height: i64, 346 | pub md5: String, 347 | pub directory: String, 348 | pub image: String, 349 | pub rating: String, 350 | pub source: String, 351 | pub change: i64, 352 | pub owner: String, 353 | pub creator_id: i64, 354 | pub parent_id: i64, 355 | pub sample: i64, 356 | pub preview_height: i64, 357 | pub preview_width: i64, 358 | pub tags: String, 359 | pub title: String, 360 | pub has_notes: String, 361 | pub has_comments: String, 362 | pub file_url: String, 363 | pub preview_url: String, 364 | pub sample_url: String, 365 | pub sample_height: i64, 366 | pub sample_width: i64, 367 | pub status: String, 368 | pub post_locked: i64, 369 | pub has_children: String, 370 | } 371 | 372 | enum JsonPrinter { 373 | Compact(Box, BTreeMap), 374 | Pretty(Box, BTreeMap), 375 | NoOp, 376 | } 377 | 378 | impl JsonPrinter { 379 | fn compact(file: Box) -> Self { 380 | Self::Compact(file, BTreeMap::default()) 381 | } 382 | 383 | fn pretty(file: Box) -> Self { 384 | Self::Pretty(file, BTreeMap::default()) 385 | } 386 | 387 | fn noop() -> Self { 388 | Self::NoOp 389 | } 390 | 391 | fn insert_posts(&mut self, posts: &[GelbooruPost]) { 392 | match self { 393 | Self::Pretty(_, map) | Self::Compact(_, map) => { 394 | map.extend(posts.iter().map(|post| (post.md5.clone(), post.clone()))); 395 | } 396 | Self::NoOp => {} 397 | } 398 | } 399 | 400 | fn write(self) -> anyhow::Result<()> { 401 | match self { 402 | Self::Compact(file, posts) => { 403 | serde_json::to_writer(file, &posts)?; 404 | } 405 | Self::Pretty(file, posts) => { 406 | serde_json::to_writer_pretty(file, &posts)?; 407 | } 408 | Self::NoOp => {} 409 | } 410 | Ok(()) 411 | } 412 | } 413 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.21.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "anstream" 22 | version = "0.6.13" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" 25 | dependencies = [ 26 | "anstyle", 27 | "anstyle-parse", 28 | "anstyle-query", 29 | "anstyle-wincon", 30 | "colorchoice", 31 | "utf8parse", 32 | ] 33 | 34 | [[package]] 35 | name = "anstyle" 36 | version = "1.0.6" 37 | source = "registry+https://github.com/rust-lang/crates.io-index" 38 | checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" 39 | 40 | [[package]] 41 | name = "anstyle-parse" 42 | version = "0.2.3" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" 45 | dependencies = [ 46 | "utf8parse", 47 | ] 48 | 49 | [[package]] 50 | name = "anstyle-query" 51 | version = "1.0.2" 52 | source = "registry+https://github.com/rust-lang/crates.io-index" 53 | checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" 54 | dependencies = [ 55 | "windows-sys 0.52.0", 56 | ] 57 | 58 | [[package]] 59 | name = "anstyle-wincon" 60 | version = "3.0.2" 61 | source = "registry+https://github.com/rust-lang/crates.io-index" 62 | checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" 63 | dependencies = [ 64 | "anstyle", 65 | "windows-sys 0.52.0", 66 | ] 67 | 68 | [[package]] 69 | name = "anyhow" 70 | version = "1.0.81" 71 | source = "registry+https://github.com/rust-lang/crates.io-index" 72 | checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" 73 | 74 | [[package]] 75 | name = "autocfg" 76 | version = "1.1.0" 77 | source = "registry+https://github.com/rust-lang/crates.io-index" 78 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 79 | 80 | [[package]] 81 | name = "backtrace" 82 | version = "0.3.69" 83 | source = "registry+https://github.com/rust-lang/crates.io-index" 84 | checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" 85 | dependencies = [ 86 | "addr2line", 87 | "cc", 88 | "cfg-if", 89 | "libc", 90 | "miniz_oxide", 91 | "object", 92 | "rustc-demangle", 93 | ] 94 | 95 | [[package]] 96 | name = "base64" 97 | version = "0.21.7" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 100 | 101 | [[package]] 102 | name = "bitflags" 103 | version = "1.3.2" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 106 | 107 | [[package]] 108 | name = "bumpalo" 109 | version = "3.15.4" 110 | source = "registry+https://github.com/rust-lang/crates.io-index" 111 | checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" 112 | 113 | [[package]] 114 | name = "bytes" 115 | version = "1.5.0" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" 118 | 119 | [[package]] 120 | name = "cc" 121 | version = "1.0.90" 122 | source = "registry+https://github.com/rust-lang/crates.io-index" 123 | checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" 124 | 125 | [[package]] 126 | name = "cfg-if" 127 | version = "1.0.0" 128 | source = "registry+https://github.com/rust-lang/crates.io-index" 129 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 130 | 131 | [[package]] 132 | name = "clap" 133 | version = "4.5.2" 134 | source = "registry+https://github.com/rust-lang/crates.io-index" 135 | checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651" 136 | dependencies = [ 137 | "clap_builder", 138 | "clap_derive", 139 | ] 140 | 141 | [[package]] 142 | name = "clap_builder" 143 | version = "4.5.2" 144 | source = "registry+https://github.com/rust-lang/crates.io-index" 145 | checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" 146 | dependencies = [ 147 | "anstream", 148 | "anstyle", 149 | "clap_lex", 150 | "strsim", 151 | ] 152 | 153 | [[package]] 154 | name = "clap_derive" 155 | version = "4.5.0" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" 158 | dependencies = [ 159 | "heck", 160 | "proc-macro2", 161 | "quote", 162 | "syn", 163 | ] 164 | 165 | [[package]] 166 | name = "clap_lex" 167 | version = "0.7.0" 168 | source = "registry+https://github.com/rust-lang/crates.io-index" 169 | checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" 170 | 171 | [[package]] 172 | name = "colorchoice" 173 | version = "1.0.0" 174 | source = "registry+https://github.com/rust-lang/crates.io-index" 175 | checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" 176 | 177 | [[package]] 178 | name = "core-foundation" 179 | version = "0.9.4" 180 | source = "registry+https://github.com/rust-lang/crates.io-index" 181 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 182 | dependencies = [ 183 | "core-foundation-sys", 184 | "libc", 185 | ] 186 | 187 | [[package]] 188 | name = "core-foundation-sys" 189 | version = "0.8.6" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 192 | 193 | [[package]] 194 | name = "either" 195 | version = "1.15.0" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 198 | 199 | [[package]] 200 | name = "encoding_rs" 201 | version = "0.8.33" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" 204 | dependencies = [ 205 | "cfg-if", 206 | ] 207 | 208 | [[package]] 209 | name = "equivalent" 210 | version = "1.0.1" 211 | source = "registry+https://github.com/rust-lang/crates.io-index" 212 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 213 | 214 | [[package]] 215 | name = "fastrand" 216 | version = "2.0.1" 217 | source = "registry+https://github.com/rust-lang/crates.io-index" 218 | checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" 219 | 220 | [[package]] 221 | name = "fnv" 222 | version = "1.0.7" 223 | source = "registry+https://github.com/rust-lang/crates.io-index" 224 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 225 | 226 | [[package]] 227 | name = "form_urlencoded" 228 | version = "1.2.1" 229 | source = "registry+https://github.com/rust-lang/crates.io-index" 230 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 231 | dependencies = [ 232 | "percent-encoding", 233 | ] 234 | 235 | [[package]] 236 | name = "futures" 237 | version = "0.3.30" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" 240 | dependencies = [ 241 | "futures-channel", 242 | "futures-core", 243 | "futures-executor", 244 | "futures-io", 245 | "futures-sink", 246 | "futures-task", 247 | "futures-util", 248 | ] 249 | 250 | [[package]] 251 | name = "futures-channel" 252 | version = "0.3.30" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 255 | dependencies = [ 256 | "futures-core", 257 | "futures-sink", 258 | ] 259 | 260 | [[package]] 261 | name = "futures-core" 262 | version = "0.3.30" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 265 | 266 | [[package]] 267 | name = "futures-executor" 268 | version = "0.3.30" 269 | source = "registry+https://github.com/rust-lang/crates.io-index" 270 | checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" 271 | dependencies = [ 272 | "futures-core", 273 | "futures-task", 274 | "futures-util", 275 | ] 276 | 277 | [[package]] 278 | name = "futures-io" 279 | version = "0.3.30" 280 | source = "registry+https://github.com/rust-lang/crates.io-index" 281 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 282 | 283 | [[package]] 284 | name = "futures-macro" 285 | version = "0.3.30" 286 | source = "registry+https://github.com/rust-lang/crates.io-index" 287 | checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" 288 | dependencies = [ 289 | "proc-macro2", 290 | "quote", 291 | "syn", 292 | ] 293 | 294 | [[package]] 295 | name = "futures-sink" 296 | version = "0.3.30" 297 | source = "registry+https://github.com/rust-lang/crates.io-index" 298 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 299 | 300 | [[package]] 301 | name = "futures-task" 302 | version = "0.3.30" 303 | source = "registry+https://github.com/rust-lang/crates.io-index" 304 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 305 | 306 | [[package]] 307 | name = "futures-util" 308 | version = "0.3.30" 309 | source = "registry+https://github.com/rust-lang/crates.io-index" 310 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 311 | dependencies = [ 312 | "futures-channel", 313 | "futures-core", 314 | "futures-io", 315 | "futures-macro", 316 | "futures-sink", 317 | "futures-task", 318 | "memchr", 319 | "pin-project-lite", 320 | "pin-utils", 321 | "slab", 322 | ] 323 | 324 | [[package]] 325 | name = "gelbooru-scraper" 326 | version = "0.3.1" 327 | dependencies = [ 328 | "anyhow", 329 | "clap", 330 | "reqwest", 331 | "serde", 332 | "serde_json", 333 | "tokio", 334 | ] 335 | 336 | [[package]] 337 | name = "getrandom" 338 | version = "0.2.12" 339 | source = "registry+https://github.com/rust-lang/crates.io-index" 340 | checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" 341 | dependencies = [ 342 | "cfg-if", 343 | "libc", 344 | "wasi", 345 | ] 346 | 347 | [[package]] 348 | name = "gimli" 349 | version = "0.28.1" 350 | source = "registry+https://github.com/rust-lang/crates.io-index" 351 | checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" 352 | 353 | [[package]] 354 | name = "h2" 355 | version = "0.3.24" 356 | source = "registry+https://github.com/rust-lang/crates.io-index" 357 | checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" 358 | dependencies = [ 359 | "bytes", 360 | "fnv", 361 | "futures-core", 362 | "futures-sink", 363 | "futures-util", 364 | "http", 365 | "indexmap", 366 | "slab", 367 | "tokio", 368 | "tokio-util", 369 | "tracing", 370 | ] 371 | 372 | [[package]] 373 | name = "h3" 374 | version = "0.0.3" 375 | source = "registry+https://github.com/rust-lang/crates.io-index" 376 | checksum = "b83e1915177ea624b5bbbdb16bc54f0c106c9664892c695f995e53f5c6793b80" 377 | dependencies = [ 378 | "bytes", 379 | "fastrand", 380 | "futures-util", 381 | "http", 382 | "pin-project-lite", 383 | "tokio", 384 | "tracing", 385 | ] 386 | 387 | [[package]] 388 | name = "h3-quinn" 389 | version = "0.0.4" 390 | source = "registry+https://github.com/rust-lang/crates.io-index" 391 | checksum = "ac9675014d703c3d516a121757bbc02e53f1ee838e0729fc7534b35024a81ae4" 392 | dependencies = [ 393 | "bytes", 394 | "futures", 395 | "h3", 396 | "quinn", 397 | "quinn-proto", 398 | "tokio", 399 | "tokio-util", 400 | ] 401 | 402 | [[package]] 403 | name = "hashbrown" 404 | version = "0.14.3" 405 | source = "registry+https://github.com/rust-lang/crates.io-index" 406 | checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" 407 | 408 | [[package]] 409 | name = "heck" 410 | version = "0.4.1" 411 | source = "registry+https://github.com/rust-lang/crates.io-index" 412 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 413 | 414 | [[package]] 415 | name = "hermit-abi" 416 | version = "0.3.9" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 419 | 420 | [[package]] 421 | name = "http" 422 | version = "0.2.12" 423 | source = "registry+https://github.com/rust-lang/crates.io-index" 424 | checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 425 | dependencies = [ 426 | "bytes", 427 | "fnv", 428 | "itoa", 429 | ] 430 | 431 | [[package]] 432 | name = "http-body" 433 | version = "0.4.6" 434 | source = "registry+https://github.com/rust-lang/crates.io-index" 435 | checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 436 | dependencies = [ 437 | "bytes", 438 | "http", 439 | "pin-project-lite", 440 | ] 441 | 442 | [[package]] 443 | name = "httparse" 444 | version = "1.8.0" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 447 | 448 | [[package]] 449 | name = "httpdate" 450 | version = "1.0.3" 451 | source = "registry+https://github.com/rust-lang/crates.io-index" 452 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 453 | 454 | [[package]] 455 | name = "hyper" 456 | version = "0.14.28" 457 | source = "registry+https://github.com/rust-lang/crates.io-index" 458 | checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" 459 | dependencies = [ 460 | "bytes", 461 | "futures-channel", 462 | "futures-core", 463 | "futures-util", 464 | "h2", 465 | "http", 466 | "http-body", 467 | "httparse", 468 | "httpdate", 469 | "itoa", 470 | "pin-project-lite", 471 | "socket2", 472 | "tokio", 473 | "tower-service", 474 | "tracing", 475 | "want", 476 | ] 477 | 478 | [[package]] 479 | name = "hyper-rustls" 480 | version = "0.24.2" 481 | source = "registry+https://github.com/rust-lang/crates.io-index" 482 | checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 483 | dependencies = [ 484 | "futures-util", 485 | "http", 486 | "hyper", 487 | "rustls", 488 | "tokio", 489 | "tokio-rustls", 490 | ] 491 | 492 | [[package]] 493 | name = "idna" 494 | version = "0.5.0" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 497 | dependencies = [ 498 | "unicode-bidi", 499 | "unicode-normalization", 500 | ] 501 | 502 | [[package]] 503 | name = "indexmap" 504 | version = "2.2.5" 505 | source = "registry+https://github.com/rust-lang/crates.io-index" 506 | checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" 507 | dependencies = [ 508 | "equivalent", 509 | "hashbrown", 510 | ] 511 | 512 | [[package]] 513 | name = "ipnet" 514 | version = "2.9.0" 515 | source = "registry+https://github.com/rust-lang/crates.io-index" 516 | checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 517 | 518 | [[package]] 519 | name = "itoa" 520 | version = "1.0.10" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" 523 | 524 | [[package]] 525 | name = "js-sys" 526 | version = "0.3.69" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" 529 | dependencies = [ 530 | "wasm-bindgen", 531 | ] 532 | 533 | [[package]] 534 | name = "libc" 535 | version = "0.2.153" 536 | source = "registry+https://github.com/rust-lang/crates.io-index" 537 | checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" 538 | 539 | [[package]] 540 | name = "lock_api" 541 | version = "0.4.11" 542 | source = "registry+https://github.com/rust-lang/crates.io-index" 543 | checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" 544 | dependencies = [ 545 | "autocfg", 546 | "scopeguard", 547 | ] 548 | 549 | [[package]] 550 | name = "log" 551 | version = "0.4.21" 552 | source = "registry+https://github.com/rust-lang/crates.io-index" 553 | checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" 554 | 555 | [[package]] 556 | name = "memchr" 557 | version = "2.7.1" 558 | source = "registry+https://github.com/rust-lang/crates.io-index" 559 | checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" 560 | 561 | [[package]] 562 | name = "mime" 563 | version = "0.3.17" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 566 | 567 | [[package]] 568 | name = "miniz_oxide" 569 | version = "0.7.2" 570 | source = "registry+https://github.com/rust-lang/crates.io-index" 571 | checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" 572 | dependencies = [ 573 | "adler", 574 | ] 575 | 576 | [[package]] 577 | name = "mio" 578 | version = "0.8.11" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" 581 | dependencies = [ 582 | "libc", 583 | "wasi", 584 | "windows-sys 0.48.0", 585 | ] 586 | 587 | [[package]] 588 | name = "num_cpus" 589 | version = "1.16.0" 590 | source = "registry+https://github.com/rust-lang/crates.io-index" 591 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 592 | dependencies = [ 593 | "hermit-abi", 594 | "libc", 595 | ] 596 | 597 | [[package]] 598 | name = "object" 599 | version = "0.32.2" 600 | source = "registry+https://github.com/rust-lang/crates.io-index" 601 | checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" 602 | dependencies = [ 603 | "memchr", 604 | ] 605 | 606 | [[package]] 607 | name = "once_cell" 608 | version = "1.19.0" 609 | source = "registry+https://github.com/rust-lang/crates.io-index" 610 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 611 | 612 | [[package]] 613 | name = "parking_lot" 614 | version = "0.12.1" 615 | source = "registry+https://github.com/rust-lang/crates.io-index" 616 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 617 | dependencies = [ 618 | "lock_api", 619 | "parking_lot_core", 620 | ] 621 | 622 | [[package]] 623 | name = "parking_lot_core" 624 | version = "0.9.9" 625 | source = "registry+https://github.com/rust-lang/crates.io-index" 626 | checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" 627 | dependencies = [ 628 | "cfg-if", 629 | "libc", 630 | "redox_syscall", 631 | "smallvec", 632 | "windows-targets 0.48.5", 633 | ] 634 | 635 | [[package]] 636 | name = "percent-encoding" 637 | version = "2.3.1" 638 | source = "registry+https://github.com/rust-lang/crates.io-index" 639 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 640 | 641 | [[package]] 642 | name = "pin-project-lite" 643 | version = "0.2.13" 644 | source = "registry+https://github.com/rust-lang/crates.io-index" 645 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 646 | 647 | [[package]] 648 | name = "pin-utils" 649 | version = "0.1.0" 650 | source = "registry+https://github.com/rust-lang/crates.io-index" 651 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 652 | 653 | [[package]] 654 | name = "ppv-lite86" 655 | version = "0.2.17" 656 | source = "registry+https://github.com/rust-lang/crates.io-index" 657 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 658 | 659 | [[package]] 660 | name = "proc-macro2" 661 | version = "1.0.79" 662 | source = "registry+https://github.com/rust-lang/crates.io-index" 663 | checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" 664 | dependencies = [ 665 | "unicode-ident", 666 | ] 667 | 668 | [[package]] 669 | name = "quinn" 670 | version = "0.10.2" 671 | source = "registry+https://github.com/rust-lang/crates.io-index" 672 | checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" 673 | dependencies = [ 674 | "bytes", 675 | "futures-io", 676 | "pin-project-lite", 677 | "quinn-proto", 678 | "quinn-udp", 679 | "rustc-hash", 680 | "rustls", 681 | "thiserror", 682 | "tokio", 683 | "tracing", 684 | ] 685 | 686 | [[package]] 687 | name = "quinn-proto" 688 | version = "0.10.6" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" 691 | dependencies = [ 692 | "bytes", 693 | "rand", 694 | "ring 0.16.20", 695 | "rustc-hash", 696 | "rustls", 697 | "slab", 698 | "thiserror", 699 | "tinyvec", 700 | "tracing", 701 | ] 702 | 703 | [[package]] 704 | name = "quinn-udp" 705 | version = "0.4.1" 706 | source = "registry+https://github.com/rust-lang/crates.io-index" 707 | checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" 708 | dependencies = [ 709 | "bytes", 710 | "libc", 711 | "socket2", 712 | "tracing", 713 | "windows-sys 0.48.0", 714 | ] 715 | 716 | [[package]] 717 | name = "quote" 718 | version = "1.0.35" 719 | source = "registry+https://github.com/rust-lang/crates.io-index" 720 | checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" 721 | dependencies = [ 722 | "proc-macro2", 723 | ] 724 | 725 | [[package]] 726 | name = "rand" 727 | version = "0.8.5" 728 | source = "registry+https://github.com/rust-lang/crates.io-index" 729 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 730 | dependencies = [ 731 | "libc", 732 | "rand_chacha", 733 | "rand_core", 734 | ] 735 | 736 | [[package]] 737 | name = "rand_chacha" 738 | version = "0.3.1" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 741 | dependencies = [ 742 | "ppv-lite86", 743 | "rand_core", 744 | ] 745 | 746 | [[package]] 747 | name = "rand_core" 748 | version = "0.6.4" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 751 | dependencies = [ 752 | "getrandom", 753 | ] 754 | 755 | [[package]] 756 | name = "redox_syscall" 757 | version = "0.4.1" 758 | source = "registry+https://github.com/rust-lang/crates.io-index" 759 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 760 | dependencies = [ 761 | "bitflags", 762 | ] 763 | 764 | [[package]] 765 | name = "reqwest" 766 | version = "0.11.26" 767 | source = "registry+https://github.com/rust-lang/crates.io-index" 768 | checksum = "78bf93c4af7a8bb7d879d51cebe797356ff10ae8516ace542b5182d9dcac10b2" 769 | dependencies = [ 770 | "base64", 771 | "bytes", 772 | "encoding_rs", 773 | "futures-channel", 774 | "futures-core", 775 | "futures-util", 776 | "h2", 777 | "h3", 778 | "h3-quinn", 779 | "http", 780 | "http-body", 781 | "hyper", 782 | "hyper-rustls", 783 | "ipnet", 784 | "js-sys", 785 | "log", 786 | "mime", 787 | "once_cell", 788 | "percent-encoding", 789 | "pin-project-lite", 790 | "quinn", 791 | "rustls", 792 | "rustls-pemfile", 793 | "serde", 794 | "serde_json", 795 | "serde_urlencoded", 796 | "sync_wrapper", 797 | "system-configuration", 798 | "tokio", 799 | "tokio-rustls", 800 | "tokio-socks", 801 | "tower-service", 802 | "url", 803 | "wasm-bindgen", 804 | "wasm-bindgen-futures", 805 | "web-sys", 806 | "webpki-roots", 807 | "winreg", 808 | ] 809 | 810 | [[package]] 811 | name = "ring" 812 | version = "0.16.20" 813 | source = "registry+https://github.com/rust-lang/crates.io-index" 814 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 815 | dependencies = [ 816 | "cc", 817 | "libc", 818 | "once_cell", 819 | "spin 0.5.2", 820 | "untrusted 0.7.1", 821 | "web-sys", 822 | "winapi", 823 | ] 824 | 825 | [[package]] 826 | name = "ring" 827 | version = "0.17.8" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" 830 | dependencies = [ 831 | "cc", 832 | "cfg-if", 833 | "getrandom", 834 | "libc", 835 | "spin 0.9.8", 836 | "untrusted 0.9.0", 837 | "windows-sys 0.52.0", 838 | ] 839 | 840 | [[package]] 841 | name = "rustc-demangle" 842 | version = "0.1.23" 843 | source = "registry+https://github.com/rust-lang/crates.io-index" 844 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 845 | 846 | [[package]] 847 | name = "rustc-hash" 848 | version = "1.1.0" 849 | source = "registry+https://github.com/rust-lang/crates.io-index" 850 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 851 | 852 | [[package]] 853 | name = "rustls" 854 | version = "0.21.10" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" 857 | dependencies = [ 858 | "log", 859 | "ring 0.17.8", 860 | "rustls-webpki", 861 | "sct", 862 | ] 863 | 864 | [[package]] 865 | name = "rustls-pemfile" 866 | version = "1.0.4" 867 | source = "registry+https://github.com/rust-lang/crates.io-index" 868 | checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 869 | dependencies = [ 870 | "base64", 871 | ] 872 | 873 | [[package]] 874 | name = "rustls-webpki" 875 | version = "0.101.7" 876 | source = "registry+https://github.com/rust-lang/crates.io-index" 877 | checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 878 | dependencies = [ 879 | "ring 0.17.8", 880 | "untrusted 0.9.0", 881 | ] 882 | 883 | [[package]] 884 | name = "ryu" 885 | version = "1.0.17" 886 | source = "registry+https://github.com/rust-lang/crates.io-index" 887 | checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" 888 | 889 | [[package]] 890 | name = "scopeguard" 891 | version = "1.2.0" 892 | source = "registry+https://github.com/rust-lang/crates.io-index" 893 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 894 | 895 | [[package]] 896 | name = "sct" 897 | version = "0.7.1" 898 | source = "registry+https://github.com/rust-lang/crates.io-index" 899 | checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 900 | dependencies = [ 901 | "ring 0.17.8", 902 | "untrusted 0.9.0", 903 | ] 904 | 905 | [[package]] 906 | name = "serde" 907 | version = "1.0.197" 908 | source = "registry+https://github.com/rust-lang/crates.io-index" 909 | checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" 910 | dependencies = [ 911 | "serde_derive", 912 | ] 913 | 914 | [[package]] 915 | name = "serde_derive" 916 | version = "1.0.197" 917 | source = "registry+https://github.com/rust-lang/crates.io-index" 918 | checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" 919 | dependencies = [ 920 | "proc-macro2", 921 | "quote", 922 | "syn", 923 | ] 924 | 925 | [[package]] 926 | name = "serde_json" 927 | version = "1.0.114" 928 | source = "registry+https://github.com/rust-lang/crates.io-index" 929 | checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" 930 | dependencies = [ 931 | "itoa", 932 | "ryu", 933 | "serde", 934 | ] 935 | 936 | [[package]] 937 | name = "serde_urlencoded" 938 | version = "0.7.1" 939 | source = "registry+https://github.com/rust-lang/crates.io-index" 940 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 941 | dependencies = [ 942 | "form_urlencoded", 943 | "itoa", 944 | "ryu", 945 | "serde", 946 | ] 947 | 948 | [[package]] 949 | name = "signal-hook-registry" 950 | version = "1.4.1" 951 | source = "registry+https://github.com/rust-lang/crates.io-index" 952 | checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" 953 | dependencies = [ 954 | "libc", 955 | ] 956 | 957 | [[package]] 958 | name = "slab" 959 | version = "0.4.9" 960 | source = "registry+https://github.com/rust-lang/crates.io-index" 961 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 962 | dependencies = [ 963 | "autocfg", 964 | ] 965 | 966 | [[package]] 967 | name = "smallvec" 968 | version = "1.13.1" 969 | source = "registry+https://github.com/rust-lang/crates.io-index" 970 | checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" 971 | 972 | [[package]] 973 | name = "socket2" 974 | version = "0.5.6" 975 | source = "registry+https://github.com/rust-lang/crates.io-index" 976 | checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" 977 | dependencies = [ 978 | "libc", 979 | "windows-sys 0.52.0", 980 | ] 981 | 982 | [[package]] 983 | name = "spin" 984 | version = "0.5.2" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 987 | 988 | [[package]] 989 | name = "spin" 990 | version = "0.9.8" 991 | source = "registry+https://github.com/rust-lang/crates.io-index" 992 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 993 | 994 | [[package]] 995 | name = "strsim" 996 | version = "0.11.0" 997 | source = "registry+https://github.com/rust-lang/crates.io-index" 998 | checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" 999 | 1000 | [[package]] 1001 | name = "syn" 1002 | version = "2.0.52" 1003 | source = "registry+https://github.com/rust-lang/crates.io-index" 1004 | checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" 1005 | dependencies = [ 1006 | "proc-macro2", 1007 | "quote", 1008 | "unicode-ident", 1009 | ] 1010 | 1011 | [[package]] 1012 | name = "sync_wrapper" 1013 | version = "0.1.2" 1014 | source = "registry+https://github.com/rust-lang/crates.io-index" 1015 | checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" 1016 | 1017 | [[package]] 1018 | name = "system-configuration" 1019 | version = "0.5.1" 1020 | source = "registry+https://github.com/rust-lang/crates.io-index" 1021 | checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 1022 | dependencies = [ 1023 | "bitflags", 1024 | "core-foundation", 1025 | "system-configuration-sys", 1026 | ] 1027 | 1028 | [[package]] 1029 | name = "system-configuration-sys" 1030 | version = "0.5.0" 1031 | source = "registry+https://github.com/rust-lang/crates.io-index" 1032 | checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 1033 | dependencies = [ 1034 | "core-foundation-sys", 1035 | "libc", 1036 | ] 1037 | 1038 | [[package]] 1039 | name = "thiserror" 1040 | version = "1.0.58" 1041 | source = "registry+https://github.com/rust-lang/crates.io-index" 1042 | checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" 1043 | dependencies = [ 1044 | "thiserror-impl", 1045 | ] 1046 | 1047 | [[package]] 1048 | name = "thiserror-impl" 1049 | version = "1.0.58" 1050 | source = "registry+https://github.com/rust-lang/crates.io-index" 1051 | checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" 1052 | dependencies = [ 1053 | "proc-macro2", 1054 | "quote", 1055 | "syn", 1056 | ] 1057 | 1058 | [[package]] 1059 | name = "tinyvec" 1060 | version = "1.6.0" 1061 | source = "registry+https://github.com/rust-lang/crates.io-index" 1062 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 1063 | dependencies = [ 1064 | "tinyvec_macros", 1065 | ] 1066 | 1067 | [[package]] 1068 | name = "tinyvec_macros" 1069 | version = "0.1.1" 1070 | source = "registry+https://github.com/rust-lang/crates.io-index" 1071 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 1072 | 1073 | [[package]] 1074 | name = "tokio" 1075 | version = "1.36.0" 1076 | source = "registry+https://github.com/rust-lang/crates.io-index" 1077 | checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" 1078 | dependencies = [ 1079 | "backtrace", 1080 | "bytes", 1081 | "libc", 1082 | "mio", 1083 | "num_cpus", 1084 | "parking_lot", 1085 | "pin-project-lite", 1086 | "signal-hook-registry", 1087 | "socket2", 1088 | "tokio-macros", 1089 | "windows-sys 0.48.0", 1090 | ] 1091 | 1092 | [[package]] 1093 | name = "tokio-macros" 1094 | version = "2.2.0" 1095 | source = "registry+https://github.com/rust-lang/crates.io-index" 1096 | checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" 1097 | dependencies = [ 1098 | "proc-macro2", 1099 | "quote", 1100 | "syn", 1101 | ] 1102 | 1103 | [[package]] 1104 | name = "tokio-rustls" 1105 | version = "0.24.1" 1106 | source = "registry+https://github.com/rust-lang/crates.io-index" 1107 | checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 1108 | dependencies = [ 1109 | "rustls", 1110 | "tokio", 1111 | ] 1112 | 1113 | [[package]] 1114 | name = "tokio-socks" 1115 | version = "0.5.2" 1116 | source = "registry+https://github.com/rust-lang/crates.io-index" 1117 | checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f" 1118 | dependencies = [ 1119 | "either", 1120 | "futures-util", 1121 | "thiserror", 1122 | "tokio", 1123 | ] 1124 | 1125 | [[package]] 1126 | name = "tokio-util" 1127 | version = "0.7.10" 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" 1129 | checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" 1130 | dependencies = [ 1131 | "bytes", 1132 | "futures-core", 1133 | "futures-sink", 1134 | "pin-project-lite", 1135 | "tokio", 1136 | "tracing", 1137 | ] 1138 | 1139 | [[package]] 1140 | name = "tower-service" 1141 | version = "0.3.2" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 1144 | 1145 | [[package]] 1146 | name = "tracing" 1147 | version = "0.1.40" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 1150 | dependencies = [ 1151 | "pin-project-lite", 1152 | "tracing-attributes", 1153 | "tracing-core", 1154 | ] 1155 | 1156 | [[package]] 1157 | name = "tracing-attributes" 1158 | version = "0.1.27" 1159 | source = "registry+https://github.com/rust-lang/crates.io-index" 1160 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 1161 | dependencies = [ 1162 | "proc-macro2", 1163 | "quote", 1164 | "syn", 1165 | ] 1166 | 1167 | [[package]] 1168 | name = "tracing-core" 1169 | version = "0.1.32" 1170 | source = "registry+https://github.com/rust-lang/crates.io-index" 1171 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 1172 | dependencies = [ 1173 | "once_cell", 1174 | ] 1175 | 1176 | [[package]] 1177 | name = "try-lock" 1178 | version = "0.2.5" 1179 | source = "registry+https://github.com/rust-lang/crates.io-index" 1180 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 1181 | 1182 | [[package]] 1183 | name = "unicode-bidi" 1184 | version = "0.3.15" 1185 | source = "registry+https://github.com/rust-lang/crates.io-index" 1186 | checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" 1187 | 1188 | [[package]] 1189 | name = "unicode-ident" 1190 | version = "1.0.12" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 1193 | 1194 | [[package]] 1195 | name = "unicode-normalization" 1196 | version = "0.1.23" 1197 | source = "registry+https://github.com/rust-lang/crates.io-index" 1198 | checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" 1199 | dependencies = [ 1200 | "tinyvec", 1201 | ] 1202 | 1203 | [[package]] 1204 | name = "untrusted" 1205 | version = "0.7.1" 1206 | source = "registry+https://github.com/rust-lang/crates.io-index" 1207 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 1208 | 1209 | [[package]] 1210 | name = "untrusted" 1211 | version = "0.9.0" 1212 | source = "registry+https://github.com/rust-lang/crates.io-index" 1213 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 1214 | 1215 | [[package]] 1216 | name = "url" 1217 | version = "2.5.0" 1218 | source = "registry+https://github.com/rust-lang/crates.io-index" 1219 | checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" 1220 | dependencies = [ 1221 | "form_urlencoded", 1222 | "idna", 1223 | "percent-encoding", 1224 | ] 1225 | 1226 | [[package]] 1227 | name = "utf8parse" 1228 | version = "0.2.1" 1229 | source = "registry+https://github.com/rust-lang/crates.io-index" 1230 | checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" 1231 | 1232 | [[package]] 1233 | name = "want" 1234 | version = "0.3.1" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 1237 | dependencies = [ 1238 | "try-lock", 1239 | ] 1240 | 1241 | [[package]] 1242 | name = "wasi" 1243 | version = "0.11.0+wasi-snapshot-preview1" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1246 | 1247 | [[package]] 1248 | name = "wasm-bindgen" 1249 | version = "0.2.92" 1250 | source = "registry+https://github.com/rust-lang/crates.io-index" 1251 | checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" 1252 | dependencies = [ 1253 | "cfg-if", 1254 | "wasm-bindgen-macro", 1255 | ] 1256 | 1257 | [[package]] 1258 | name = "wasm-bindgen-backend" 1259 | version = "0.2.92" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" 1262 | dependencies = [ 1263 | "bumpalo", 1264 | "log", 1265 | "once_cell", 1266 | "proc-macro2", 1267 | "quote", 1268 | "syn", 1269 | "wasm-bindgen-shared", 1270 | ] 1271 | 1272 | [[package]] 1273 | name = "wasm-bindgen-futures" 1274 | version = "0.4.42" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" 1277 | dependencies = [ 1278 | "cfg-if", 1279 | "js-sys", 1280 | "wasm-bindgen", 1281 | "web-sys", 1282 | ] 1283 | 1284 | [[package]] 1285 | name = "wasm-bindgen-macro" 1286 | version = "0.2.92" 1287 | source = "registry+https://github.com/rust-lang/crates.io-index" 1288 | checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" 1289 | dependencies = [ 1290 | "quote", 1291 | "wasm-bindgen-macro-support", 1292 | ] 1293 | 1294 | [[package]] 1295 | name = "wasm-bindgen-macro-support" 1296 | version = "0.2.92" 1297 | source = "registry+https://github.com/rust-lang/crates.io-index" 1298 | checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" 1299 | dependencies = [ 1300 | "proc-macro2", 1301 | "quote", 1302 | "syn", 1303 | "wasm-bindgen-backend", 1304 | "wasm-bindgen-shared", 1305 | ] 1306 | 1307 | [[package]] 1308 | name = "wasm-bindgen-shared" 1309 | version = "0.2.92" 1310 | source = "registry+https://github.com/rust-lang/crates.io-index" 1311 | checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" 1312 | 1313 | [[package]] 1314 | name = "web-sys" 1315 | version = "0.3.69" 1316 | source = "registry+https://github.com/rust-lang/crates.io-index" 1317 | checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" 1318 | dependencies = [ 1319 | "js-sys", 1320 | "wasm-bindgen", 1321 | ] 1322 | 1323 | [[package]] 1324 | name = "webpki-roots" 1325 | version = "0.25.4" 1326 | source = "registry+https://github.com/rust-lang/crates.io-index" 1327 | checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" 1328 | 1329 | [[package]] 1330 | name = "winapi" 1331 | version = "0.3.9" 1332 | source = "registry+https://github.com/rust-lang/crates.io-index" 1333 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1334 | dependencies = [ 1335 | "winapi-i686-pc-windows-gnu", 1336 | "winapi-x86_64-pc-windows-gnu", 1337 | ] 1338 | 1339 | [[package]] 1340 | name = "winapi-i686-pc-windows-gnu" 1341 | version = "0.4.0" 1342 | source = "registry+https://github.com/rust-lang/crates.io-index" 1343 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1344 | 1345 | [[package]] 1346 | name = "winapi-x86_64-pc-windows-gnu" 1347 | version = "0.4.0" 1348 | source = "registry+https://github.com/rust-lang/crates.io-index" 1349 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1350 | 1351 | [[package]] 1352 | name = "windows-sys" 1353 | version = "0.48.0" 1354 | source = "registry+https://github.com/rust-lang/crates.io-index" 1355 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 1356 | dependencies = [ 1357 | "windows-targets 0.48.5", 1358 | ] 1359 | 1360 | [[package]] 1361 | name = "windows-sys" 1362 | version = "0.52.0" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 1365 | dependencies = [ 1366 | "windows-targets 0.52.4", 1367 | ] 1368 | 1369 | [[package]] 1370 | name = "windows-targets" 1371 | version = "0.48.5" 1372 | source = "registry+https://github.com/rust-lang/crates.io-index" 1373 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 1374 | dependencies = [ 1375 | "windows_aarch64_gnullvm 0.48.5", 1376 | "windows_aarch64_msvc 0.48.5", 1377 | "windows_i686_gnu 0.48.5", 1378 | "windows_i686_msvc 0.48.5", 1379 | "windows_x86_64_gnu 0.48.5", 1380 | "windows_x86_64_gnullvm 0.48.5", 1381 | "windows_x86_64_msvc 0.48.5", 1382 | ] 1383 | 1384 | [[package]] 1385 | name = "windows-targets" 1386 | version = "0.52.4" 1387 | source = "registry+https://github.com/rust-lang/crates.io-index" 1388 | checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" 1389 | dependencies = [ 1390 | "windows_aarch64_gnullvm 0.52.4", 1391 | "windows_aarch64_msvc 0.52.4", 1392 | "windows_i686_gnu 0.52.4", 1393 | "windows_i686_msvc 0.52.4", 1394 | "windows_x86_64_gnu 0.52.4", 1395 | "windows_x86_64_gnullvm 0.52.4", 1396 | "windows_x86_64_msvc 0.52.4", 1397 | ] 1398 | 1399 | [[package]] 1400 | name = "windows_aarch64_gnullvm" 1401 | version = "0.48.5" 1402 | source = "registry+https://github.com/rust-lang/crates.io-index" 1403 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 1404 | 1405 | [[package]] 1406 | name = "windows_aarch64_gnullvm" 1407 | version = "0.52.4" 1408 | source = "registry+https://github.com/rust-lang/crates.io-index" 1409 | checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" 1410 | 1411 | [[package]] 1412 | name = "windows_aarch64_msvc" 1413 | version = "0.48.5" 1414 | source = "registry+https://github.com/rust-lang/crates.io-index" 1415 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 1416 | 1417 | [[package]] 1418 | name = "windows_aarch64_msvc" 1419 | version = "0.52.4" 1420 | source = "registry+https://github.com/rust-lang/crates.io-index" 1421 | checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" 1422 | 1423 | [[package]] 1424 | name = "windows_i686_gnu" 1425 | version = "0.48.5" 1426 | source = "registry+https://github.com/rust-lang/crates.io-index" 1427 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 1428 | 1429 | [[package]] 1430 | name = "windows_i686_gnu" 1431 | version = "0.52.4" 1432 | source = "registry+https://github.com/rust-lang/crates.io-index" 1433 | checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" 1434 | 1435 | [[package]] 1436 | name = "windows_i686_msvc" 1437 | version = "0.48.5" 1438 | source = "registry+https://github.com/rust-lang/crates.io-index" 1439 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 1440 | 1441 | [[package]] 1442 | name = "windows_i686_msvc" 1443 | version = "0.52.4" 1444 | source = "registry+https://github.com/rust-lang/crates.io-index" 1445 | checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" 1446 | 1447 | [[package]] 1448 | name = "windows_x86_64_gnu" 1449 | version = "0.48.5" 1450 | source = "registry+https://github.com/rust-lang/crates.io-index" 1451 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 1452 | 1453 | [[package]] 1454 | name = "windows_x86_64_gnu" 1455 | version = "0.52.4" 1456 | source = "registry+https://github.com/rust-lang/crates.io-index" 1457 | checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" 1458 | 1459 | [[package]] 1460 | name = "windows_x86_64_gnullvm" 1461 | version = "0.48.5" 1462 | source = "registry+https://github.com/rust-lang/crates.io-index" 1463 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 1464 | 1465 | [[package]] 1466 | name = "windows_x86_64_gnullvm" 1467 | version = "0.52.4" 1468 | source = "registry+https://github.com/rust-lang/crates.io-index" 1469 | checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" 1470 | 1471 | [[package]] 1472 | name = "windows_x86_64_msvc" 1473 | version = "0.48.5" 1474 | source = "registry+https://github.com/rust-lang/crates.io-index" 1475 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 1476 | 1477 | [[package]] 1478 | name = "windows_x86_64_msvc" 1479 | version = "0.52.4" 1480 | source = "registry+https://github.com/rust-lang/crates.io-index" 1481 | checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" 1482 | 1483 | [[package]] 1484 | name = "winreg" 1485 | version = "0.50.0" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 1488 | dependencies = [ 1489 | "cfg-if", 1490 | "windows-sys 0.48.0", 1491 | ] 1492 | --------------------------------------------------------------------------------