From 407c34a871ba32fc1e8613fbe2efb22a887c92aa Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Fri, 25 Aug 2023 11:42:00 -0700 Subject: [PATCH 01/22] updates Signed-off-by: Jess Frazelle --- src/cmd_file.rs | 8 +++--- src/cmd_kcl.rs | 76 +++++++++++++++++++++++++++++++++++++++++++++++++ src/main.rs | 2 ++ 3 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 src/cmd_kcl.rs diff --git a/src/cmd_file.rs b/src/cmd_file.rs index 0722d215..2909da20 100644 --- a/src/cmd_file.rs +++ b/src/cmd_file.rs @@ -6,7 +6,7 @@ use clap::Parser; /// Perform operations on CAD files. /// /// # convert a step file to an obj file -/// $ kittycad file convert ./input.step ./output.obj +/// $ kittycad file convert --output-format=obj ./input.step ./ #[derive(Parser, Debug, Clone)] #[clap(verbatim_doc_comment)] pub struct CmdFile { @@ -45,14 +45,14 @@ impl crate::cmd::Command for CmdFile { /// `kittycad api-call status ` command. /// /// # convert step to obj -/// $ kittycad file convert my-file.step my-file.obj +/// $ kittycad file convert --output-format=obj my-file.step output_dir /// /// # convert obj to step -/// $ kittycad file convert my-obj.obj thing.step +/// $ kittycad file convert --output-format=step my-obj.obj . /// /// # pass a file to convert from stdin /// # when converting from stdin, the original file type is required -/// $ cat my-obj.obj | kittycad file convert - thing.step --src-format=obj +/// $ cat my-obj.obj | kittycad file convert --output-format=step - output_dir #[derive(Parser, Debug, Clone)] #[clap(verbatim_doc_comment)] pub struct CmdFileConvert { diff --git a/src/cmd_kcl.rs b/src/cmd_kcl.rs new file mode 100644 index 00000000..bf1d901e --- /dev/null +++ b/src/cmd_kcl.rs @@ -0,0 +1,76 @@ +use anyhow::{anyhow, Result}; +use clap::Parser; + +/// Perform actions on `kcl` files. +#[derive(Parser, Debug, Clone)] +#[clap(verbatim_doc_comment)] +pub struct CmdKcl { + #[clap(subcommand)] + subcmd: SubCommand, +} + +#[derive(Parser, Debug, Clone)] +enum SubCommand { + Export(CmdKclExport), +} + +#[async_trait::async_trait] +impl crate::cmd::Command for CmdKcl { + async fn run(&self, ctx: &mut crate::context::Context) -> Result<()> { + match &self.subcmd { + SubCommand::Export(cmd) => cmd.run(ctx).await, + } + } +} + +/// Export a `kcl` file as any other supported CAD file format. +/// +/// # convert kcl to obj +/// $ kittycad kcl export --output-format=obj my-file.kcl output_dir +/// +/// # convert kcl to step +/// $ kittycad kcl export --output-format=step my-obj.kcl . +/// +/// # pass a file to convert from stdin +/// $ cat my-obj.kcl | kittycad kcl export --output-format=step - output_dir +#[derive(Parser, Debug, Clone)] +#[clap(verbatim_doc_comment)] +pub struct CmdKclExport { + /// The path to the input file to convert. + /// If you pass `-` as the path, the file will be read from stdin. + #[clap(name = "input", required = true)] + pub input: std::path::PathBuf, + + /// The path to a directory to output the files. + #[clap(name = "output-dir", required = true)] + pub output_dir: std::path::PathBuf, + + /// A valid output file format. + #[clap(short = 't', long = "output-format", value_enum)] + output_format: kittycad::types::FileExportFormat, + + /// Command output format. + #[clap(long, short, value_enum)] + pub format: Option, +} + +#[async_trait::async_trait] +impl crate::cmd::Command for CmdKclExport { + async fn run(&self, ctx: &mut crate::context::Context) -> Result<()> { + // Make sure the output dir is a directory. + if !self.output_dir.is_dir() { + anyhow::bail!( + "output directory `{}` does not exist or is not a directory", + self.output_dir.to_str().unwrap_or("") + ); + } + + // Get the contents of the input file. + let input = ctx.read_file(self.input.to_str().unwrap_or(""))?; + + // Spin up websockets and do the conversion. + todo!(); + + Ok(()) + } +} diff --git a/src/main.rs b/src/main.rs index 5e8e4c1b..b635c986 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,6 +23,8 @@ pub mod cmd_drake; pub mod cmd_file; /// The generate command. pub mod cmd_generate; +/// The kcl command. +pub mod cmd_kcl; /// The open command. pub mod cmd_open; /// The say command. From ab82034cf62001a332798c10ef5f25056337b060 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Fri, 25 Aug 2023 15:16:42 -0700 Subject: [PATCH 02/22] start Signed-off-by: Jess Frazelle --- Cargo.lock | 191 +++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/cmd_kcl.rs | 20 +++++- src/context.rs | 92 ++++++++++++++++++++++++ src/main.rs | 2 + 5 files changed, 304 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ace94e93..0a52e779 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -393,6 +393,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + [[package]] name = "bytes" version = "1.4.0" @@ -622,6 +628,25 @@ dependencies = [ "windows-sys 0.45.0", ] +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.4" @@ -735,6 +760,18 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +[[package]] +name = "derive-docs" +version = "0.1.0" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "serde", + "serde_tokenstream", + "syn 2.0.29", +] + [[package]] name = "dialoguer" version = "0.10.4" @@ -1378,6 +1415,33 @@ dependencies = [ "treediff", ] +[[package]] +name = "kcl" +version = "0.1.0" +dependencies = [ + "anyhow", + "bincode", + "derive-docs", + "futures", + "http", + "httparse", + "js-sys", + "kittycad 0.2.20", + "lazy_static", + "parse-display", + "regex", + "schemars", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-tungstenite", + "ts-rs", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", +] + [[package]] name = "kittycad" version = "0.2.0" @@ -1402,6 +1466,7 @@ dependencies = [ "heck 0.4.1", "http", "itertools 0.11.0", + "kcl", "kittycad 0.2.20", "log", "num-traits", @@ -1811,6 +1876,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + [[package]] name = "opentelemetry" version = "0.17.0" @@ -2432,6 +2503,18 @@ dependencies = [ "sct", ] +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pemfile" version = "1.0.3" @@ -2472,6 +2555,15 @@ dependencies = [ "winapi-util", ] +[[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 = "schemars" version = "0.8.12" @@ -2517,6 +2609,29 @@ dependencies = [ "untrusted", ] +[[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 = "semver" version = "0.11.0" @@ -2679,6 +2794,17 @@ dependencies = [ "syn 2.0.29", ] +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sha2" version = "0.10.7" @@ -3228,6 +3354,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-tungstenite" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2dbec703c26b00d74844519606ef15d09a7d6857860f84ad223dec002ddea2" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-native-certs", + "tokio", + "tokio-rustls", + "tungstenite", +] + [[package]] name = "tokio-util" version = "0.7.8" @@ -3388,6 +3529,49 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +[[package]] +name = "ts-rs" +version = "7.0.0" +source = "git+https://github.com/kittycad/ts-rs.git?branch=serde_json#94e2a19c41194e47009fafc7b5a2c28ae544a6e8" +dependencies = [ + "serde_json", + "thiserror", + "ts-rs-macros", + "uuid", +] + +[[package]] +name = "ts-rs-macros" +version = "7.0.0" +source = "git+https://github.com/kittycad/ts-rs.git?branch=serde_json#94e2a19c41194e47009fafc7b5a2c28ae544a6e8" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.29", + "termcolor", +] + +[[package]] +name = "tungstenite" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e862a1c4128df0112ab625f55cd5c934bcb4312ba80b39ae4b4835a3fd58e649" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "rustls", + "sha1", + "thiserror", + "url", + "utf-8", +] + [[package]] name = "typenum" version = "1.16.0" @@ -3466,6 +3650,12 @@ dependencies = [ "serde", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + [[package]] name = "utf8parse" version = "0.2.1" @@ -3480,6 +3670,7 @@ checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" dependencies = [ "getrandom", "serde", + "wasm-bindgen", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 39144d53..5bbc20e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,7 @@ git_rev = "0.1.0" heck = "0.4.0" http = "0.2.6" itertools = "0.11.0" +kcl = { path = "../modeling-app/src/wasm-lib/kcl" } kittycad = { version = "0.2.20", features = ["clap", "tabled", "requests", "retry"] } log = "0.4.20" regex = "1" diff --git a/src/cmd_kcl.rs b/src/cmd_kcl.rs index bf1d901e..a350ba09 100644 --- a/src/cmd_kcl.rs +++ b/src/cmd_kcl.rs @@ -1,4 +1,4 @@ -use anyhow::{anyhow, Result}; +use anyhow::Result; use clap::Parser; /// Perform actions on `kcl` files. @@ -67,9 +67,25 @@ impl crate::cmd::Command for CmdKclExport { // Get the contents of the input file. let input = ctx.read_file(self.input.to_str().unwrap_or(""))?; + // Parse the input as a string. + let input = std::str::from_utf8(&input)?; // Spin up websockets and do the conversion. - todo!(); + let engine = ctx + .export_kcl_file("", input, &self.output_dir, &self.output_format) + .await?; + + // Now we need to wait for the engine to finish. + // Sleep for a bit to give the engine time to start. + tokio::time::sleep(std::time::Duration::from_secs(120)).await; + + // Check if we have files in our output directory. + let files = std::fs::read_dir(&self.output_dir)? + .map(|res| res.map(|e| e.path())) + .collect::, std::io::Error>>()?; + println!("files: {:?}", files); + + drop(engine); Ok(()) } diff --git a/src/context.rs b/src/context.rs index c0f724e3..e41fa39b 100644 --- a/src/context.rs +++ b/src/context.rs @@ -81,6 +81,59 @@ impl Context<'_> { Ok(client) } + pub async fn export_kcl_file( + &self, + hostname: &str, + code: &str, + output_dir: &std::path::Path, + format: &kittycad::types::FileExportFormat, + ) -> Result { + // Use the host passed in if it's set. + // Otherwise, use the default host. + let host = if hostname.is_empty() { + self.config.default_host()? + } else { + hostname.to_string() + }; + + // Change the baseURL to the one we want. + let mut baseurl = host.to_string(); + if !host.starts_with("http://") && !host.starts_with("https://") { + baseurl = format!("https://{host}"); + if host.starts_with("localhost") { + baseurl = format!("http://{host}") + } + } + + baseurl = baseurl.replace("http", "ws"); + + // Get the token for that host. + let auth_token = self.config.get(&host, "token")?; + + let tokens = kcl::tokeniser::lexer(code); + let program = kcl::parser::abstract_syntax_tree(&tokens)?; + let mut mem: kcl::executor::ProgramMemory = Default::default(); + let mut engine = kcl::engine::EngineConnection::new( + &baseurl, + &auth_token, + "kittycad-cli", + output_dir.display().to_string().as_str(), + ) + .await?; + let _ = kcl::executor::execute(program, &mut mem, kcl::executor::BodyType::Root, &mut engine)?; + // Send an export request to the engine. + engine.send_modeling_cmd( + uuid::Uuid::new_v4(), + kcl::executor::SourceRange::default(), + kittycad::types::ModelingCmd::Export { + entity_ids: vec![], + format: get_output_format(format), + }, + )?; + + Ok(engine) + } + /// This function opens a browser that is based on the configured /// environment to the specified path. /// @@ -153,6 +206,45 @@ impl Context<'_> { } } +fn get_output_format(format: &kittycad::types::FileExportFormat) -> kittycad::types::OutputFormat { + // KittyCAD co-ordinate system. + // + // * Forward: -Y + // * Up: +Z + // * Handedness: Right + let coords = kittycad::types::System { + forward: kittycad::types::AxisDirectionPair { + axis: kittycad::types::Axis::Y, + direction: kittycad::types::Direction::Negative, + }, + up: kittycad::types::AxisDirectionPair { + axis: kittycad::types::Axis::Z, + direction: kittycad::types::Direction::Positive, + }, + }; + + match format { + kittycad::types::FileExportFormat::Glb => kittycad::types::OutputFormat::Gltf { + storage: kittycad::types::Storage::Binary, + presentation: kittycad::types::Presentation::Compact, + }, + kittycad::types::FileExportFormat::Gltf => kittycad::types::OutputFormat::Gltf { + storage: kittycad::types::Storage::Embedded, + presentation: kittycad::types::Presentation::Pretty, + }, + kittycad::types::FileExportFormat::Obj => kittycad::types::OutputFormat::Obj { coords }, + kittycad::types::FileExportFormat::Ply => kittycad::types::OutputFormat::Ply { + storage: kittycad::types::Storage::Binary, + coords, + }, + kittycad::types::FileExportFormat::Step => kittycad::types::OutputFormat::Step { coords }, + kittycad::types::FileExportFormat::Stl => kittycad::types::OutputFormat::Stl { + storage: kittycad::types::Storage::Binary, + coords, + }, + } +} + #[cfg(test)] mod test { use pretty_assertions::assert_eq; diff --git a/src/main.rs b/src/main.rs index b635c986..1be67174 100644 --- a/src/main.rs +++ b/src/main.rs @@ -132,6 +132,7 @@ enum SubCommand { Drake(cmd_drake::CmdDrake), File(cmd_file::CmdFile), Generate(cmd_generate::CmdGenerate), + Kcl(cmd_kcl::CmdKcl), Say(cmd_say::CmdSay), Open(cmd_open::CmdOpen), Update(cmd_update::CmdUpdate), @@ -249,6 +250,7 @@ async fn do_main(mut args: Vec, ctx: &mut crate::context::Context<'_>) - SubCommand::Drake(cmd) => run_cmd(&cmd, ctx).await, SubCommand::File(cmd) => run_cmd(&cmd, ctx).await, SubCommand::Generate(cmd) => run_cmd(&cmd, ctx).await, + SubCommand::Kcl(cmd) => run_cmd(&cmd, ctx).await, SubCommand::Say(cmd) => run_cmd(&cmd, ctx).await, SubCommand::Open(cmd) => run_cmd(&cmd, ctx).await, SubCommand::Update(cmd) => run_cmd(&cmd, ctx).await, From 11e8f9773e5a50fe4c74080d3de72caddd9c1203 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Fri, 25 Aug 2023 17:36:13 -0700 Subject: [PATCH 03/22] bincode error Signed-off-by: Jess Frazelle --- Cargo.lock | 4065 ---------------- src/cmd_kcl.rs | 10 +- src/context.rs | 56 +- tests/gear.kcl | 67 + tests/output.gltf | 11279 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 11373 insertions(+), 4104 deletions(-) delete mode 100644 Cargo.lock create mode 100644 tests/gear.kcl create mode 100644 tests/output.gltf diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index 0a52e779..00000000 --- a/Cargo.lock +++ /dev/null @@ -1,4065 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "addr2line" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" -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.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" -dependencies = [ - "memchr", -] - -[[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 = "ansi-colors-macro" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c2afa84a2916e88ff06df6fd84e7c89e374a726e392f72dc5e32d6db3c3cf6" - -[[package]] -name = "ansi-str" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cf4578926a981ab0ca955dc023541d19de37112bc24c1a197bd806d3d86ad1d" -dependencies = [ - "ansitok", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "ansitok" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "220044e6a1bb31ddee4e3db724d29767f352de47445a6cd75e1a173142136c83" -dependencies = [ - "nom", - "vte", -] - -[[package]] -name = "anstream" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" - -[[package]] -name = "anstyle-parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" -dependencies = [ - "windows-sys 0.48.0", -] - -[[package]] -name = "anstyle-wincon" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" -dependencies = [ - "anstyle", - "windows-sys 0.48.0", -] - -[[package]] -name = "anyhow" -version = "1.0.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" -dependencies = [ - "backtrace", -] - -[[package]] -name = "arc-swap" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-executor" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" -dependencies = [ - "async-lock", - "async-task", - "concurrent-queue", - "fastrand 1.9.0", - "futures-lite", - "slab", -] - -[[package]] -name = "async-global-executor" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" -dependencies = [ - "async-channel", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", - "once_cell", -] - -[[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite", - "log", - "parking", - "polling", - "rustix 0.37.23", - "slab", - "socket2 0.4.9", - "waker-fn", -] - -[[package]] -name = "async-lock" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-std" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" -dependencies = [ - "async-channel", - "async-global-executor", - "async-io", - "async-lock", - "crossbeam-utils", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", - "wasm-bindgen-futures", -] - -[[package]] -name = "async-task" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" - -[[package]] -name = "async-trait" -version = "0.1.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] - -[[package]] -name = "atomic-waker" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - -[[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.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" -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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" - -[[package]] -name = "bigdecimal" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blocking" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" -dependencies = [ - "async-channel", - "async-lock", - "async-task", - "atomic-waker", - "fastrand 1.9.0", - "futures-lite", - "log", -] - -[[package]] -name = "built" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b99c4cdc7b2c2364182331055623bdf45254fcb679fea565c40c3c11c101889a" -dependencies = [ - "cargo-lock", -] - -[[package]] -name = "bumpalo" -version = "3.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" - -[[package]] -name = "bytecount" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-lock" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11c675378efb449ed3ce8de78d75d0d80542fc98487c26aba28eb3b82feac72" -dependencies = [ - "semver 1.0.18", - "serde", - "toml 0.7.6", - "url", -] - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" - -[[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.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f56b4c72906975ca04becb8a30e102dfecddd0c06181e3e95ddc444be28881f8" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "time 0.1.45", - "wasm-bindgen", - "windows-targets 0.48.1", -] - -[[package]] -name = "chrono-humanize" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" -dependencies = [ - "chrono", -] - -[[package]] -name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_derive 3.2.25", - "clap_lex 0.2.4", - "indexmap 1.9.3", - "once_cell", - "strsim", - "termcolor", - "textwrap", - "unicase", -] - -[[package]] -name = "clap" -version = "4.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c8d502cbaec4595d2e7d5f61e318f05417bd2b66fdc3809498f0d3fdf0bea27" -dependencies = [ - "clap_builder", - "clap_derive 4.4.0", - "once_cell", -] - -[[package]] -name = "clap_builder" -version = "4.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5891c7bc0edb3e1c2204fc5e94009affabeb1821c9e5fdc3959536c5c0bb984d" -dependencies = [ - "anstream", - "anstyle", - "clap_lex 0.5.0", - "once_cell", - "strsim", - "terminal_size", - "unicase", - "unicode-width", -] - -[[package]] -name = "clap_complete" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce" -dependencies = [ - "clap 4.4.1", -] - -[[package]] -name = "clap_derive" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" -dependencies = [ - "heck 0.4.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "clap_derive" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 2.0.29", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", -] - -[[package]] -name = "clap_lex" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" - -[[package]] -name = "cli-macro" -version = "0.1.0" -dependencies = [ - "cli-macro-impl", -] - -[[package]] -name = "cli-macro-impl" -version = "0.1.0" -dependencies = [ - "Inflector", - "anyhow", - "expectorate", - "openapitor", - "openapiv3", - "proc-macro2", - "quote", - "regex", - "rustfmt-wrapper", - "serde", - "serde_json", - "serde_tokenstream", - "syn 2.0.29", -] - -[[package]] -name = "colorchoice" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" - -[[package]] -name = "colored" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" -dependencies = [ - "is-terminal", - "lazy_static", - "windows-sys 0.48.0", -] - -[[package]] -name = "colored_json" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74cb9ce6b86f6e54bfa9518df2eeeef65d424ec7244d083ed97229185e366a91" -dependencies = [ - "is-terminal", - "serde", - "serde_json", - "yansi", -] - -[[package]] -name = "concurrent-queue" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "console" -version = "0.15.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" -dependencies = [ - "encode_unicode", - "lazy_static", - "libc", - "unicode-width", - "windows-sys 0.45.0", -] - -[[package]] -name = "convert_case" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "cpufeatures" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" -dependencies = [ - "libc", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[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 = "crossterm" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c36c10130df424b2f3552fcc2ddcd9b28a27b1e54b358b45874f88d1ca6888c" -dependencies = [ - "bitflags 1.3.2", - "crossterm_winapi 0.7.0", - "lazy_static", - "libc", - "mio 0.7.14", - "parking_lot 0.11.2", - "signal-hook 0.1.17", - "winapi", -] - -[[package]] -name = "crossterm" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85525306c4291d1b73ce93c8acf9c339f9b213aef6c1d85c3830cbf1c16325c" -dependencies = [ - "bitflags 1.3.2", - "crossterm_winapi 0.9.1", - "libc", - "mio 0.7.14", - "parking_lot 0.11.2", - "signal-hook 0.3.17", - "signal-hook-mio", - "winapi", -] - -[[package]] -name = "crossterm_winapi" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da8964ace4d3e4a044fd027919b2237000b24315a37c916f61809f1ff2140b9" -dependencies = [ - "winapi", -] - -[[package]] -name = "crossterm_winapi" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" -dependencies = [ - "winapi", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "dashmap" -version = "5.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6943ae99c34386c84a470c499d3414f66502a41340aa895406e0d2e4a207b91d" -dependencies = [ - "cfg-if", - "hashbrown 0.14.0", - "lock_api", - "once_cell", - "parking_lot_core 0.9.8", -] - -[[package]] -name = "data-encoding" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" - -[[package]] -name = "derive-docs" -version = "0.1.0" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "serde", - "serde_tokenstream", - "syn 2.0.29", -] - -[[package]] -name = "dialoguer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" -dependencies = [ - "console", - "shell-words", - "tempfile", - "zeroize", -] - -[[package]] -name = "diff" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.48.0", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "dyn-clone" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272" - -[[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - -[[package]] -name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - -[[package]] -name = "encoding_rs" -version = "0.8.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" -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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "expectorate" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "710ab6a2d57038a835d66f78d5af3fa5d27c1ec4682f823b9203c48826cb0591" -dependencies = [ - "console", - "newline-converter", - "similar", -] - -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fastrand" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "form_urlencoded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "format_serde_error" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5837b8e6a4001f99fe4746767fb7379e8510c508a843caa136cc12ed9c0bad0" -dependencies = [ - "colored", - "serde", - "serde_json", - "serde_yaml 0.8.26", - "unicode-segmentation", -] - -[[package]] -name = "futures" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - -[[package]] -name = "futures-executor" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - -[[package]] -name = "futures-macro" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] - -[[package]] -name = "futures-sink" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" - -[[package]] -name = "futures-task" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getopts" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "getrandom" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.27.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" - -[[package]] -name = "git_rev" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60884563ea313b5037683cd5d44f1e14e9cb07b08543756242a65887f9cff48e" - -[[package]] -name = "gloo-timers" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "h2" -version = "0.3.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 1.9.3", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" - -[[package]] -name = "home" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" -dependencies = [ - "windows-sys 0.48.0", -] - -[[package]] -name = "http" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - -[[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.9", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" -dependencies = [ - "futures-util", - "http", - "hyper", - "rustls", - "tokio", - "tokio-rustls", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows", -] - -[[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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" -dependencies = [ - "equivalent", - "hashbrown 0.14.0", -] - -[[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 = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.2", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "ipnet" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" - -[[package]] -name = "is-docker" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" -dependencies = [ - "once_cell", -] - -[[package]] -name = "is-terminal" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" -dependencies = [ - "hermit-abi 0.3.2", - "rustix 0.38.4", - "windows-sys 0.48.0", -] - -[[package]] -name = "is-wsl" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" -dependencies = [ - "is-docker", - "once_cell", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[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.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "json-patch" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce" -dependencies = [ - "serde", - "serde_json", - "treediff", -] - -[[package]] -name = "kcl" -version = "0.1.0" -dependencies = [ - "anyhow", - "bincode", - "derive-docs", - "futures", - "http", - "httparse", - "js-sys", - "kittycad 0.2.20", - "lazy_static", - "parse-display", - "regex", - "schemars", - "serde", - "serde_json", - "thiserror", - "tokio", - "tokio-tungstenite", - "ts-rs", - "uuid", - "wasm-bindgen", - "wasm-bindgen-futures", -] - -[[package]] -name = "kittycad" -version = "0.2.0" -dependencies = [ - "ansi_term", - "anyhow", - "async-trait", - "atty", - "built", - "chrono", - "chrono-humanize", - "clap 4.4.1", - "clap_complete", - "cli-macro", - "colored_json", - "data-encoding", - "dialoguer", - "dirs", - "expectorate", - "futures", - "git_rev", - "heck 0.4.1", - "http", - "itertools 0.11.0", - "kcl", - "kittycad 0.2.20", - "log", - "num-traits", - "oauth2", - "open", - "parse-display", - "pretty_assertions", - "pulldown-cmark", - "pulldown-cmark-to-cmark", - "regex", - "reqwest", - "ring", - "roff", - "serde", - "serde_json", - "serde_yaml 0.9.25", - "serial_test", - "shlex", - "slog", - "slog-async", - "slog-scope", - "slog-stdlog", - "slog-term", - "tabled", - "tabwriter", - "tempfile", - "termbg", - "terminal-spinners", - "terminal_size", - "test-context", - "thiserror", - "tokio", - "toml 0.7.6", - "toml_edit", - "url", - "uuid", - "version-compare", -] - -[[package]] -name = "kittycad" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e71916b50966110cb9f70aa6c310748a153fdcb0183a02615324a6f457fd18e8" -dependencies = [ - "anyhow", - "async-trait", - "base64 0.21.2", - "bytes", - "chrono", - "clap 4.4.1", - "data-encoding", - "format_serde_error", - "futures", - "http", - "itertools 0.10.5", - "log", - "parse-display", - "phonenumber", - "rand", - "reqwest", - "reqwest-conditional-middleware", - "reqwest-middleware 0.2.3", - "reqwest-retry", - "reqwest-tracing", - "schemars", - "serde", - "serde_json", - "serde_urlencoded", - "tabled", - "thiserror", - "tracing", - "url", - "uuid", -] - -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - -[[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.147" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "linux-raw-sys" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" - -[[package]] -name = "lock_api" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" -dependencies = [ - "serde", - "value-bag", -] - -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] - -[[package]] -name = "matchit" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed1202b2a6f884ae56f04cff409ab315c5ce26b5e58d7412e484f01fd52f52ef" - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[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 = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[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.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" -dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "winapi", -] - -[[package]] -name = "mio" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" -dependencies = [ - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", -] - -[[package]] -name = "newline-converter" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b6b097ecb1cbfed438542d16e84fd7ad9b0c76c8a65b7f9039212a3d14dc7f" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "ntapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" -dependencies = [ - "winapi", -] - -[[package]] -name = "num-bigint" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" -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 0.3.2", - "libc", -] - -[[package]] -name = "num_threads" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" -dependencies = [ - "libc", -] - -[[package]] -name = "numeral" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "049950a25a8f69e9673ed52fc58749548cee71194f6c3a8a04b80863637ce722" - -[[package]] -name = "oauth2" -version = "4.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a6e2a2b13a56ebeabba9142f911745be6456163fd6c3d361274ebcd891a80c" -dependencies = [ - "base64 0.13.1", - "chrono", - "getrandom", - "http", - "rand", - "reqwest", - "serde", - "serde_json", - "serde_path_to_error", - "sha2", - "thiserror", - "url", -] - -[[package]] -name = "object" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "oncemutex" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d11de466f4a3006fe8a5e7ec84e93b79c70cb992ae0aa0eb631ad2df8abfe2" - -[[package]] -name = "open" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfabf1927dce4d6fdf563d63328a0a506101ced3ec780ca2135747336c98cef8" -dependencies = [ - "is-wsl", - "libc", - "pathdiff", -] - -[[package]] -name = "openapitor" -version = "0.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120168eae5b6485690af708bd1030547df62cca10a643763d416ab0e6831decb" -dependencies = [ - "Inflector", - "anyhow", - "chrono", - "clap 3.2.25", - "data-encoding", - "format_serde_error", - "futures-util", - "http", - "indexmap 1.9.3", - "json-patch", - "log", - "numeral", - "openapiv3", - "phonenumber", - "proc-macro2", - "quote", - "rand", - "regex", - "reqwest", - "reqwest-middleware 0.1.6", - "rustfmt-wrapper", - "schemars", - "serde", - "serde_json", - "serde_yaml 0.9.25", - "slog", - "slog-async", - "slog-json", - "slog-scope", - "slog-stdlog", - "slog-term", - "thiserror", - "tokio", - "url", - "uuid", -] - -[[package]] -name = "openapiv3" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1a9f106eb0a780abd17ba9fca8e0843e3461630bcbe2af0ad4d5d3ba4e9aa4" -dependencies = [ - "indexmap 1.9.3", - "serde", - "serde_json", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand", - "thiserror", -] - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "os_str_bytes" -version = "6.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" - -[[package]] -name = "papergrid" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ccbe15f2b6db62f9a9871642746427e297b0ceb85f9a7f1ee5ff47d184d0c8" -dependencies = [ - "ansi-str", - "ansitok", - "bytecount", - "fnv", - "unicode-width", -] - -[[package]] -name = "parking" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" - -[[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.8", -] - -[[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.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.3.5", - "smallvec", - "windows-targets 0.48.1", -] - -[[package]] -name = "parse-display" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6509d08722b53e8dafe97f2027b22ccbe3a5db83cb352931e9716b0aa44bc5c" -dependencies = [ - "once_cell", - "parse-display-derive", - "regex", -] - -[[package]] -name = "parse-display-derive" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68517892c8daf78da08c0db777fcc17e07f2f63ef70041718f8a7630ad84f341" -dependencies = [ - "once_cell", - "proc-macro2", - "quote", - "regex", - "regex-syntax 0.7.5", - "structmeta", - "syn 2.0.29", -] - -[[package]] -name = "pathdiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" - -[[package]] -name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "pest" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d2d1d55045829d65aad9d389139882ad623b33b904e7c9f1b10c5b8927298e5" -dependencies = [ - "thiserror", - "ucd-trie", -] - -[[package]] -name = "phonenumber" -version = "0.3.2+8.13.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34749f64ea9d76f10cdc8a859588b57775f59177c7dd91f744d620bd62982d6f" -dependencies = [ - "bincode", - "either", - "fnv", - "itertools 0.10.5", - "lazy_static", - "nom", - "quick-xml", - "regex", - "regex-cache", - "serde", - "serde_derive", - "thiserror", -] - -[[package]] -name = "pin-project" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "polling" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "pretty_assertions" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" -dependencies = [ - "diff", - "yansi", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "pulldown-cmark" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" -dependencies = [ - "bitflags 1.3.2", - "getopts", - "memchr", - "unicase", -] - -[[package]] -name = "pulldown-cmark-to-cmark" -version = "11.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3118a235a72ced8a51669699d9febd97c0d6e23b3bd3a1d9d0fdaa995082099" -dependencies = [ - "pulldown-cmark", -] - -[[package]] -name = "quick-xml" -version = "0.28.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" -dependencies = [ - "memchr", -] - -[[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", -] - -[[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.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" -dependencies = [ - "getrandom", - "redox_syscall 0.2.16", - "thiserror", -] - -[[package]] -name = "regex" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax 0.7.5", -] - -[[package]] -name = "regex-automata" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.7.5", -] - -[[package]] -name = "regex-cache" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f7b62d69743b8b94f353b6b7c3deb4c5582828328bcb8d5fedf214373808793" -dependencies = [ - "lru-cache", - "oncemutex", - "regex", - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" - -[[package]] -name = "reqwest" -version = "0.11.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" -dependencies = [ - "base64 0.21.2", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-rustls", - "ipnet", - "js-sys", - "log", - "mime", - "mime_guess", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-rustls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots", - "winreg", -] - -[[package]] -name = "reqwest-conditional-middleware" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e50a2e70970896c99d1b8f20ddc30a70b30d3ac6e619a03a8353b64a49b277" -dependencies = [ - "async-trait", - "reqwest", - "reqwest-middleware 0.2.3", - "task-local-extensions", -] - -[[package]] -name = "reqwest-middleware" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69539cea4148dce683bec9dc95be3f0397a9bb2c248a49c8296a9d21659a8cdd" -dependencies = [ - "anyhow", - "async-trait", - "futures", - "http", - "reqwest", - "serde", - "task-local-extensions", - "thiserror", -] - -[[package]] -name = "reqwest-middleware" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff44108c7925d082f2861e683a88618b68235ad9cdc60d64d9d1188efc951cdb" -dependencies = [ - "anyhow", - "async-trait", - "http", - "reqwest", - "serde", - "task-local-extensions", - "thiserror", -] - -[[package]] -name = "reqwest-retry" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d0fd6ef4c6d23790399fe15efc8d12cd9f3d4133958f9bd7801ee5cbaec6c4" -dependencies = [ - "anyhow", - "async-trait", - "chrono", - "futures", - "getrandom", - "http", - "hyper", - "parking_lot 0.11.2", - "reqwest", - "reqwest-middleware 0.2.3", - "retry-policies", - "task-local-extensions", - "tokio", - "tracing", - "wasm-timer", -] - -[[package]] -name = "reqwest-tracing" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b1e66540e0cac90acadaf7109bf99c90d95abcc94b4c096bfa16a2d7aa7a71" -dependencies = [ - "anyhow", - "async-trait", - "getrandom", - "matchit", - "opentelemetry", - "reqwest", - "reqwest-middleware 0.2.3", - "task-local-extensions", - "tracing", - "tracing-opentelemetry", -] - -[[package]] -name = "retry-policies" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e09bbcb5003282bcb688f0bae741b278e9c7e8f378f561522c9806c58e075d9b" -dependencies = [ - "anyhow", - "chrono", - "rand", -] - -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi", -] - -[[package]] -name = "roff" -version = "0.1.0" -source = "git+https://github.com/sondr3/roff-rs?branch=updates#54018979aed7ce313d8d6f7b2abdd95950df5b9d" - -[[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] -name = "rustfmt-wrapper" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed729e3bee08ec2befd593c27e90ca9fdd25efdc83c94c3b82eaef16e4f7406e" -dependencies = [ - "serde", - "tempfile", - "thiserror", - "toml 0.5.11", - "toolchain_find", -] - -[[package]] -name = "rustix" -version = "0.37.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustix" -version = "0.38.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" -dependencies = [ - "bitflags 2.3.3", - "errno", - "libc", - "linux-raw-sys 0.4.3", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustls" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" -dependencies = [ - "log", - "ring", - "rustls-webpki", - "sct", -] - -[[package]] -name = "rustls-native-certs" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" -dependencies = [ - "openssl-probe", - "rustls-pemfile", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" -dependencies = [ - "base64 0.21.2", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" - -[[package]] -name = "ryu" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schannel" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" -dependencies = [ - "windows-sys 0.48.0", -] - -[[package]] -name = "schemars" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" -dependencies = [ - "bigdecimal", - "bytes", - "chrono", - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", - "url", - "uuid", -] - -[[package]] -name = "schemars_derive" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 1.0.109", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sct" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" -dependencies = [ - "ring", - "untrusted", -] - -[[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 = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" -dependencies = [ - "serde", -] - -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.188" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.188" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] - -[[package]] -name = "serde_derive_internals" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "serde_json" -version = "1.0.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" -dependencies = [ - "itoa", - "serde", -] - -[[package]] -name = "serde_spanned" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_tokenstream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a00ffd23fd882d096f09fcaae2a9de8329a328628e86027e049ee051dc1621f" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "syn 2.0.29", -] - -[[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 = "serde_yaml" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" -dependencies = [ - "indexmap 1.9.3", - "ryu", - "serde", - "yaml-rust", -] - -[[package]] -name = "serde_yaml" -version = "0.9.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" -dependencies = [ - "indexmap 2.0.0", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] -name = "serial_test" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" -dependencies = [ - "dashmap", - "futures", - "lazy_static", - "log", - "parking_lot 0.12.1", - "serial_test_derive", -] - -[[package]] -name = "serial_test_derive" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] - -[[package]] -name = "sha1" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha2" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shell-words" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" - -[[package]] -name = "shlex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" - -[[package]] -name = "signal-hook" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e31d442c16f047a671b5a71e2161d6e68814012b7f5379d269ebd915fac2729" -dependencies = [ - "libc", - "mio 0.7.14", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-mio" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" -dependencies = [ - "libc", - "mio 0.7.14", - "signal-hook 0.3.17", -] - -[[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 = "similar" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" - -[[package]] -name = "slab" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg", -] - -[[package]] -name = "slog" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" - -[[package]] -name = "slog-async" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c8038f898a2c79507940990f05386455b3a317d8f18d4caea7cbc3d5096b84" -dependencies = [ - "crossbeam-channel", - "slog", - "take_mut", - "thread_local", -] - -[[package]] -name = "slog-json" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e1e53f61af1e3c8b852eef0a9dee29008f55d6dd63794f3f12cef786cf0f219" -dependencies = [ - "serde", - "serde_json", - "slog", - "time 0.3.23", -] - -[[package]] -name = "slog-scope" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f95a4b4c3274cd2869549da82b57ccc930859bdbf5bcea0424bc5f140b3c786" -dependencies = [ - "arc-swap", - "lazy_static", - "slog", -] - -[[package]] -name = "slog-stdlog" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6706b2ace5bbae7291d3f8d2473e2bfab073ccd7d03670946197aec98471fa3e" -dependencies = [ - "log", - "slog", - "slog-scope", -] - -[[package]] -name = "slog-term" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87d29185c55b7b258b4f120eab00f48557d4d9bc814f41713f449d35b0f8977c" -dependencies = [ - "atty", - "slog", - "term", - "thread_local", - "time 0.3.23", -] - -[[package]] -name = "smallvec" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" - -[[package]] -name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "socket2" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" -dependencies = [ - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "structmeta" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ad9e09554f0456d67a69c1584c9798ba733a5b50349a6c0d0948710523922d" -dependencies = [ - "proc-macro2", - "quote", - "structmeta-derive", - "syn 2.0.29", -] - -[[package]] -name = "structmeta-derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a60bcaff7397072dca0017d1db428e30d5002e00b6847703e2e42005c95fbe00" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tabled" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe9c3632da101aba5131ed63f9eed38665f8b3c68703a6bb18124835c1a5d22" -dependencies = [ - "ansi-str", - "ansitok", - "papergrid", - "tabled_derive", - "unicode-width", -] - -[[package]] -name = "tabled_derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99f688a08b54f4f02f0a3c382aefdb7884d3d69609f785bd253dc033243e3fe4" -dependencies = [ - "heck 0.4.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tabwriter" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08e1173ee641651a3095fe95d86ae314cd1f959888097debce3e0f9ca532eef1" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "take_mut" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" - -[[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.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" -dependencies = [ - "cfg-if", - "fastrand 2.0.0", - "redox_syscall 0.3.5", - "rustix 0.38.4", - "windows-sys 0.48.0", -] - -[[package]] -name = "term" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" -dependencies = [ - "dirs-next", - "rustversion", - "winapi", -] - -[[package]] -name = "termbg" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af8f790306d97b7453a170f39f4b99d8f5faa7e9f7a312e77681e205a72dcbd2" -dependencies = [ - "async-std", - "crossterm 0.19.0", - "thiserror", - "winapi", -] - -[[package]] -name = "termcolor" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "terminal-emoji" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8143568e8d5270b3b8f573ab8bb11a556a5c9e4becdc12241a7eef4c54a55170" -dependencies = [ - "terminal-supports-emoji", -] - -[[package]] -name = "terminal-log-symbols" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7569386670bad024a2729d194542c42500615fca75f1139c99b697704f7e46f" -dependencies = [ - "ansi-colors-macro", - "terminal-emoji", -] - -[[package]] -name = "terminal-spinner-data" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3aadcf9cbc909865c51ff9ced167a1065201b9b35d7254d530c9520b687ef3f4" -dependencies = [ - "anyhow", - "heck 0.3.3", - "quote", - "serde", - "serde_json", -] - -[[package]] -name = "terminal-spinners" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a1f23d549659993743823e9f54d6dd0502e6e6466894a0e1c254262c0e0e93" -dependencies = [ - "crossterm 0.22.1", - "terminal-log-symbols", - "terminal-spinner-data", -] - -[[package]] -name = "terminal-supports-emoji" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8873a7a1f2d286cfedc10663a722309b1c74092852cf149aee738cbe901c6eb" -dependencies = [ - "atty", - "lazy_static", -] - -[[package]] -name = "terminal_size" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" -dependencies = [ - "rustix 0.37.23", - "windows-sys 0.48.0", -] - -[[package]] -name = "test-context" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "055831a02a4f5aa28fede67f2902014273eb8c21b958ac5ebbd59b71ef30dbc3" -dependencies = [ - "async-trait", - "futures", - "test-context-macros", -] - -[[package]] -name = "test-context-macros" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901a55b0a7a06ebc4a674dcca925170da8e613fa3b163a1df804ed10afb154d" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "textwrap" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446" -dependencies = [ - "itoa", - "libc", - "num_threads", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" - -[[package]] -name = "time-macros" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96ba15a897f3c86766b757e5ac7221554c6750054d74d5b28844fce5fb36a6c4" -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.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio 0.8.8", - "num_cpus", - "parking_lot 0.12.1", - "pin-project-lite", - "signal-hook-registry", - "socket2 0.5.3", - "tokio-macros", - "windows-sys 0.48.0", -] - -[[package]] -name = "tokio-macros" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] - -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2dbec703c26b00d74844519606ef15d09a7d6857860f84ad223dec002ddea2" -dependencies = [ - "futures-util", - "log", - "rustls", - "rustls-native-certs", - "tokio", - "tokio-rustls", - "tungstenite", -] - -[[package]] -name = "tokio-util" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.19.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" -dependencies = [ - "indexmap 2.0.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "toolchain_find" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e85654a10e7a07a47c6f19d93818f3f343e22927f2fa280c84f7c8042743413" -dependencies = [ - "home", - "lazy_static", - "regex", - "semver 0.11.0", - "walkdir", -] - -[[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.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] - -[[package]] -name = "tracing-core" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-log", - "tracing-subscriber", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - -[[package]] -name = "treediff" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff" -dependencies = [ - "serde_json", -] - -[[package]] -name = "try-lock" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" - -[[package]] -name = "ts-rs" -version = "7.0.0" -source = "git+https://github.com/kittycad/ts-rs.git?branch=serde_json#94e2a19c41194e47009fafc7b5a2c28ae544a6e8" -dependencies = [ - "serde_json", - "thiserror", - "ts-rs-macros", - "uuid", -] - -[[package]] -name = "ts-rs-macros" -version = "7.0.0" -source = "git+https://github.com/kittycad/ts-rs.git?branch=serde_json#94e2a19c41194e47009fafc7b5a2c28ae544a6e8" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn 2.0.29", - "termcolor", -] - -[[package]] -name = "tungstenite" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e862a1c4128df0112ab625f55cd5c934bcb4312ba80b39ae4b4835a3fd58e649" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http", - "httparse", - "log", - "rand", - "rustls", - "sha1", - "thiserror", - "url", - "utf-8", -] - -[[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "ucd-trie" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" - -[[package]] -name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -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.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "unsafe-libyaml" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" - -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - -[[package]] -name = "url" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "utf8parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" - -[[package]] -name = "uuid" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" -dependencies = [ - "getrandom", - "serde", - "wasm-bindgen", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "value-bag" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3" - -[[package]] -name = "version-compare" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "vte" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983" -dependencies = [ - "arrayvec", - "utf8parse", - "vte_generate_state_changes", -] - -[[package]] -name = "vte_generate_state_changes" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "waker-fn" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" - -[[package]] -name = "walkdir" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - -[[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.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.29", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" - -[[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.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets 0.48.1", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.1", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" -dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" - -[[package]] -name = "winnow" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fac9742fd1ad1bd9643b991319f72dd031016d44b77039a26977eb667141e7" -dependencies = [ - "memchr", -] - -[[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", -] - -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] - -[[package]] -name = "yansi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" - -[[package]] -name = "zeroize" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" diff --git a/src/cmd_kcl.rs b/src/cmd_kcl.rs index a350ba09..b714604a 100644 --- a/src/cmd_kcl.rs +++ b/src/cmd_kcl.rs @@ -71,22 +71,16 @@ impl crate::cmd::Command for CmdKclExport { let input = std::str::from_utf8(&input)?; // Spin up websockets and do the conversion. - let engine = ctx - .export_kcl_file("", input, &self.output_dir, &self.output_format) + // This will not return until there are files. + ctx.export_kcl_file("", input, &self.output_dir, &self.output_format) .await?; - // Now we need to wait for the engine to finish. - // Sleep for a bit to give the engine time to start. - tokio::time::sleep(std::time::Duration::from_secs(120)).await; - // Check if we have files in our output directory. let files = std::fs::read_dir(&self.output_dir)? .map(|res| res.map(|e| e.path())) .collect::, std::io::Error>>()?; println!("files: {:?}", files); - drop(engine); - Ok(()) } } diff --git a/src/context.rs b/src/context.rs index e41fa39b..838d007d 100644 --- a/src/context.rs +++ b/src/context.rs @@ -68,11 +68,25 @@ impl Context<'_> { } } + let user_agent = concat!(env!("CARGO_PKG_NAME"), ".rs/", env!("CARGO_PKG_VERSION"),); + let http_client = reqwest::Client::builder() + .user_agent(user_agent) + // For file conversions we need this to be long. + .timeout(std::time::Duration::from_secs(600)) + .connect_timeout(std::time::Duration::from_secs(60)); + let ws_client = reqwest::Client::builder() + .user_agent(user_agent) + // For file conversions we need this to be long. + .timeout(std::time::Duration::from_secs(600)) + .connect_timeout(std::time::Duration::from_secs(60)) + .tcp_keepalive(std::time::Duration::from_secs(600)) + .http1_only(); + // Get the token for that host. let token = self.config.get(&host, "token")?; // Create the client. - let mut client = kittycad::Client::new(token); + let mut client = kittycad::Client::new_from_reqwest(token, http_client, ws_client); if baseurl != crate::DEFAULT_HOST { client.set_base_url(&baseurl); @@ -87,39 +101,17 @@ impl Context<'_> { code: &str, output_dir: &std::path::Path, format: &kittycad::types::FileExportFormat, - ) -> Result { - // Use the host passed in if it's set. - // Otherwise, use the default host. - let host = if hostname.is_empty() { - self.config.default_host()? - } else { - hostname.to_string() - }; - - // Change the baseURL to the one we want. - let mut baseurl = host.to_string(); - if !host.starts_with("http://") && !host.starts_with("https://") { - baseurl = format!("https://{host}"); - if host.starts_with("localhost") { - baseurl = format!("http://{host}") - } - } - - baseurl = baseurl.replace("http", "ws"); - - // Get the token for that host. - let auth_token = self.config.get(&host, "token")?; + ) -> Result<()> { + let client = self.api_client("http://system76-pc:8080")?; + let ws = client + .modeling() + .commands_ws(None, None, None, None, Some(false)) + .await?; let tokens = kcl::tokeniser::lexer(code); let program = kcl::parser::abstract_syntax_tree(&tokens)?; let mut mem: kcl::executor::ProgramMemory = Default::default(); - let mut engine = kcl::engine::EngineConnection::new( - &baseurl, - &auth_token, - "kittycad-cli", - output_dir.display().to_string().as_str(), - ) - .await?; + let mut engine = kcl::engine::EngineConnection::new(ws, output_dir.display().to_string().as_str()).await?; let _ = kcl::executor::execute(program, &mut mem, kcl::executor::BodyType::Root, &mut engine)?; // Send an export request to the engine. engine.send_modeling_cmd( @@ -131,7 +123,9 @@ impl Context<'_> { }, )?; - Ok(engine) + engine.wait_for_files().await; + + Ok(()) } /// This function opens a browser that is based on the configured diff --git a/tests/gear.kcl b/tests/gear.kcl new file mode 100644 index 00000000..1710b5f9 --- /dev/null +++ b/tests/gear.kcl @@ -0,0 +1,67 @@ +const part001 = startSketchAt([0.0000000000, 5.0000000000]) + |> line([0.4900857016, -0.0240763666], %) + |> line([0.6804562304, 0.9087880491], %) + |> line([0.5711661314, -0.1430696680], %) + |> line([0.1717090983, -1.1222443518], %) + |> line([0.4435665223, -0.2097913408], %) + |> line([0.9764377140, 0.5792113521], %) + |> line([0.4729383069, -0.3507549536], %) + |> line([-0.2708257990, -1.1025288142], %) + |> line([0.3295183609, -0.3635674851], %) + |> line([1.1237654070, 0.1614549773], %) + |> line([0.3027099123, -0.5050409772], %) + |> line([-0.6721299235, -0.9149632591], %) + |> line([0.1653040161, -0.4619937756], %) + |> line([1.1000100038, -0.2808814542], %) + |> line([0.0863966776, -0.5824390901], %) + |> line([-0.9711083600, -0.5881028420], %) + |> line([-0.0240763666, -0.4900857016], %) + |> line([0.9087880491, -0.6804562304], %) + |> line([-0.1430696680, -0.5711661314], %) + |> line([-1.1222443518, -0.1717090983], %) + |> line([-0.2097913408, -0.4435665223], %) + |> line([0.5792113521, -0.9764377140], %) + |> line([-0.3507549536, -0.4729383069], %) + |> line([-1.1025288142, 0.2708257990], %) + |> line([-0.3635674851, -0.3295183609], %) + |> line([0.1614549773, -1.1237654070], %) + |> line([-0.5050409772, -0.3027099123], %) + |> line([-0.9149632591, 0.6721299235], %) + |> line([-0.4619937756, -0.1653040161], %) + |> line([-0.2808814542, -1.1000100038], %) + |> line([-0.5824390901, -0.0863966776], %) + |> line([-0.5881028420, 0.9711083600], %) + |> line([-0.4900857016, 0.0240763666], %) + |> line([-0.6804562304, -0.9087880491], %) + |> line([-0.5711661314, 0.1430696680], %) + |> line([-0.1717090983, 1.1222443518], %) + |> line([-0.4435665223, 0.2097913408], %) + |> line([-0.9764377140, -0.5792113521], %) + |> line([-0.4729383069, 0.3507549536], %) + |> line([0.2708257990, 1.1025288142], %) + |> line([-0.3295183609, 0.3635674851], %) + |> line([-1.1237654070, -0.1614549773], %) + |> line([-0.3027099123, 0.5050409772], %) + |> line([0.6721299235, 0.9149632591], %) + |> line([-0.1653040161, 0.4619937756], %) + |> line([-1.1000100038, 0.2808814542], %) + |> line([-0.0863966776, 0.5824390901], %) + |> line([0.9711083600, 0.5881028420], %) + |> line([0.0240763666, 0.4900857016], %) + |> line([-0.9087880491, 0.6804562304], %) + |> line([0.1430696680, 0.5711661314], %) + |> line([1.1222443518, 0.1717090983], %) + |> line([0.2097913408, 0.4435665223], %) + |> line([-0.5792113521, 0.9764377140], %) + |> line([0.3507549536, 0.4729383069], %) + |> line([1.1025288142, -0.2708257990], %) + |> line([0.3635674851, 0.3295183609], %) + |> line([-0.1614549773, 1.1237654070], %) + |> line([0.5050409772, 0.3027099123], %) + |> line([0.9149632591, -0.6721299235], %) + |> line([0.4619937756, 0.1653040161], %) + |> line([0.2808814542, 1.1000100038], %) + |> line([0.5824390901, 0.0863966776], %) + |> close(%) + |> extrude(1, %) +show(part001) diff --git a/tests/output.gltf b/tests/output.gltf new file mode 100644 index 00000000..e7ff4f2c --- /dev/null +++ b/tests/output.gltf @@ -0,0 +1,11279 @@ +{ + "accessors": [ + { + "bufferView": 0, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -0.5881028175354004, + 5.0, + 0.0 + ], + "max": [ + 0.0, + 5.971108436584473, + 1.0 + ] + }, + { + "bufferView": 0, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 0, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 1, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -1.1705418825149536, + 5.884711742401123, + 0.0 + ], + "max": [ + -0.5881028175354004, + 5.971108436584473, + 1.0 + ] + }, + { + "bufferView": 1, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 2, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -1.451423406600952, + 4.784701824188232, + 0.0 + ], + "max": [ + -1.1705418825149536, + 5.884711742401123, + 1.0 + ] + }, + { + "bufferView": 2, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 3, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -1.9134172201156616, + 4.6193976402282715, + 0.0 + ], + "max": [ + -1.451423406600952, + 4.784701824188232, + 1.0 + ] + }, + { + "bufferView": 3, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 4, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -2.8283803462982178, + 4.6193976402282715, + 0.0 + ], + "max": [ + -1.9134172201156616, + 5.29152774810791, + 1.0 + ] + }, + { + "bufferView": 4, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 4, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 5, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -3.333421468734741, + 4.9888176918029785, + 0.0 + ], + "max": [ + -2.8283803462982178, + 5.29152774810791, + 1.0 + ] + }, + { + "bufferView": 5, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 5, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 6, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -3.333421468734741, + 3.8650522232055664, + 0.0 + ], + "max": [ + -3.171966314315796, + 4.9888176918029785, + 1.0 + ] + }, + { + "bufferView": 6, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 6, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 7, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -3.535533905029297, + 3.535533905029297, + 0.0 + ], + "max": [ + -3.171966314315796, + 3.8650522232055664, + 1.0 + ] + }, + { + "bufferView": 7, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 7, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 8, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -4.638062953948975, + 3.535533905029297, + 0.0 + ], + "max": [ + -3.535533905029297, + 3.8063597679138184, + 1.0 + ] + }, + { + "bufferView": 8, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 8, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 9, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -4.9888176918029785, + 3.333421468734741, + 0.0 + ], + "max": [ + -4.638062953948975, + 3.8063597679138184, + 1.0 + ] + }, + { + "bufferView": 9, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 9, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 10, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -4.9888176918029785, + 2.3569836616516113, + 0.0 + ], + "max": [ + -4.409606456756592, + 3.333421468734741, + 1.0 + ] + }, + { + "bufferView": 10, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 10, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 11, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -4.6193976402282715, + 1.9134172201156616, + 0.0 + ], + "max": [ + -4.409606456756592, + 2.3569836616516113, + 1.0 + ] + }, + { + "bufferView": 11, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 11, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 12, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.741641998291016, + 1.7417080402374268, + 0.0 + ], + "max": [ + -4.6193976402282715, + 1.9134172201156616, + 1.0 + ] + }, + { + "bufferView": 12, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 12, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 13, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.884711742401123, + 1.1705418825149536, + 0.0 + ], + "max": [ + -5.741641998291016, + 1.7417080402374268, + 1.0 + ] + }, + { + "bufferView": 13, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 13, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 14, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.884711742401123, + 0.4900856912136078, + 0.0 + ], + "max": [ + -4.975923538208008, + 1.1705418825149536, + 1.0 + ] + }, + { + "bufferView": 14, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 14, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 15, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.0, + -1.0000067440785188e-10, + 0.0 + ], + "max": [ + -4.975923538208008, + 0.4900856912136078, + 1.0 + ] + }, + { + "bufferView": 15, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 15, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 16, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.971108436584473, + -0.5881028175354004, + 0.0 + ], + "max": [ + -5.0, + -1.0000067440785188e-10, + 1.0 + ] + }, + { + "bufferView": 16, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 16, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 17, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.971108436584473, + -1.1705418825149536, + 0.0 + ], + "max": [ + -5.884711742401123, + -0.5881028175354004, + 1.0 + ] + }, + { + "bufferView": 17, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 17, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 18, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.884711742401123, + -1.451423406600952, + 0.0 + ], + "max": [ + -4.784701824188232, + -1.1705418825149536, + 1.0 + ] + }, + { + "bufferView": 18, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 18, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 19, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -4.784701824188232, + -1.9134172201156616, + 0.0 + ], + "max": [ + -4.6193976402282715, + -1.451423406600952, + 1.0 + ] + }, + { + "bufferView": 19, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 19, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 20, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.29152774810791, + -2.8283803462982178, + 0.0 + ], + "max": [ + -4.6193976402282715, + -1.9134172201156616, + 1.0 + ] + }, + { + "bufferView": 20, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 20, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 21, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.29152774810791, + -3.333421468734741, + 0.0 + ], + "max": [ + -4.9888176918029785, + -2.8283803462982178, + 1.0 + ] + }, + { + "bufferView": 21, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 21, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 22, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -4.9888176918029785, + -3.333421468734741, + 0.0 + ], + "max": [ + -3.8650522232055664, + -3.171966314315796, + 1.0 + ] + }, + { + "bufferView": 22, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 22, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 23, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -3.8650522232055664, + -3.535533905029297, + 0.0 + ], + "max": [ + -3.535533905029297, + -3.171966314315796, + 1.0 + ] + }, + { + "bufferView": 23, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 23, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 24, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -3.8063597679138184, + -4.638062953948975, + 0.0 + ], + "max": [ + -3.535533905029297, + -3.535533905029297, + 1.0 + ] + }, + { + "bufferView": 24, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 24, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 25, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -3.8063597679138184, + -4.9888176918029785, + 0.0 + ], + "max": [ + -3.333421468734741, + -4.638062953948975, + 1.0 + ] + }, + { + "bufferView": 25, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 25, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 26, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -3.333421468734741, + -4.9888176918029785, + 0.0 + ], + "max": [ + -2.3569836616516113, + -4.409606456756592, + 1.0 + ] + }, + { + "bufferView": 26, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 26, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 27, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -2.3569836616516113, + -4.6193976402282715, + 0.0 + ], + "max": [ + -1.9134172201156616, + -4.409606456756592, + 1.0 + ] + }, + { + "bufferView": 27, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 27, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 28, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -1.9134172201156616, + -5.741641998291016, + 0.0 + ], + "max": [ + -1.7417080402374268, + -4.6193976402282715, + 1.0 + ] + }, + { + "bufferView": 28, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 28, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 29, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -1.7417080402374268, + -5.884711742401123, + 0.0 + ], + "max": [ + -1.1705418825149536, + -5.741641998291016, + 1.0 + ] + }, + { + "bufferView": 29, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 29, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 30, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -1.1705418825149536, + -5.884711742401123, + 0.0 + ], + "max": [ + -0.4900856912136078, + -4.975923538208008, + 1.0 + ] + }, + { + "bufferView": 30, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 30, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 31, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + -0.4900856912136078, + -5.0, + 0.0 + ], + "max": [ + 3.000006909559261e-10, + -4.975923538208008, + 1.0 + ] + }, + { + "bufferView": 31, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 31, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 32, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 3.000006909559261e-10, + -5.971108436584473, + 0.0 + ], + "max": [ + 0.5881028175354004, + -5.0, + 1.0 + ] + }, + { + "bufferView": 32, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 32, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 33, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 0.5881028175354004, + -5.971108436584473, + 0.0 + ], + "max": [ + 1.1705418825149536, + -5.884711742401123, + 1.0 + ] + }, + { + "bufferView": 33, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 33, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 34, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 1.1705418825149536, + -5.884711742401123, + 0.0 + ], + "max": [ + 1.451423406600952, + -4.784701824188232, + 1.0 + ] + }, + { + "bufferView": 34, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 34, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 35, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 1.451423406600952, + -4.784701824188232, + 0.0 + ], + "max": [ + 1.9134172201156616, + -4.6193976402282715, + 1.0 + ] + }, + { + "bufferView": 35, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 35, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 36, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 1.9134172201156616, + -5.29152774810791, + 0.0 + ], + "max": [ + 2.8283803462982178, + -4.6193976402282715, + 1.0 + ] + }, + { + "bufferView": 36, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 36, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 37, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 2.8283803462982178, + -5.29152774810791, + 0.0 + ], + "max": [ + 3.333421468734741, + -4.9888176918029785, + 1.0 + ] + }, + { + "bufferView": 37, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 37, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 38, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 3.171966314315796, + -4.9888176918029785, + 0.0 + ], + "max": [ + 3.333421468734741, + -3.8650522232055664, + 1.0 + ] + }, + { + "bufferView": 38, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 38, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 39, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 3.171966314315796, + -3.8650522232055664, + 0.0 + ], + "max": [ + 3.535533905029297, + -3.535533905029297, + 1.0 + ] + }, + { + "bufferView": 39, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 39, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 40, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 3.535533905029297, + -3.8063597679138184, + 0.0 + ], + "max": [ + 4.638062953948975, + -3.535533905029297, + 1.0 + ] + }, + { + "bufferView": 40, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 40, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 41, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 4.638062953948975, + -3.8063597679138184, + 0.0 + ], + "max": [ + 4.9888176918029785, + -3.333421468734741, + 1.0 + ] + }, + { + "bufferView": 41, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 41, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 42, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 4.409606456756592, + -3.333421468734741, + 0.0 + ], + "max": [ + 4.9888176918029785, + -2.3569836616516113, + 1.0 + ] + }, + { + "bufferView": 42, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 42, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 43, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 4.409606456756592, + -2.3569836616516113, + 0.0 + ], + "max": [ + 4.6193976402282715, + -1.9134172201156616, + 1.0 + ] + }, + { + "bufferView": 43, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 43, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 44, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 4.6193976402282715, + -1.9134172201156616, + 0.0 + ], + "max": [ + 5.741641998291016, + -1.7417080402374268, + 1.0 + ] + }, + { + "bufferView": 44, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 44, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 45, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 5.741641998291016, + -1.7417080402374268, + 0.0 + ], + "max": [ + 5.884711742401123, + -1.1705418825149536, + 1.0 + ] + }, + { + "bufferView": 45, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 45, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 46, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 4.975923538208008, + -1.1705418825149536, + 0.0 + ], + "max": [ + 5.884711742401123, + -0.4900856912136078, + 1.0 + ] + }, + { + "bufferView": 46, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 46, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 47, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 4.975923538208008, + -0.4900856912136078, + 0.0 + ], + "max": [ + 5.0, + 1.9999979450346927e-10, + 1.0 + ] + }, + { + "bufferView": 47, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 47, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 48, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 5.0, + 1.9999979450346927e-10, + 0.0 + ], + "max": [ + 5.971108436584473, + 0.5881028175354004, + 1.0 + ] + }, + { + "bufferView": 48, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 48, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 49, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 5.884711742401123, + 0.5881028175354004, + 0.0 + ], + "max": [ + 5.971108436584473, + 1.1705418825149536, + 1.0 + ] + }, + { + "bufferView": 49, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 49, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 50, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 4.784701824188232, + 1.1705418825149536, + 0.0 + ], + "max": [ + 5.884711742401123, + 1.451423406600952, + 1.0 + ] + }, + { + "bufferView": 50, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 50, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 51, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 4.6193976402282715, + 1.451423406600952, + 0.0 + ], + "max": [ + 4.784701824188232, + 1.9134172201156616, + 1.0 + ] + }, + { + "bufferView": 51, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 51, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 52, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 4.6193976402282715, + 1.9134172201156616, + 0.0 + ], + "max": [ + 5.29152774810791, + 2.8283803462982178, + 1.0 + ] + }, + { + "bufferView": 52, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 52, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 53, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 4.9888176918029785, + 2.8283803462982178, + 0.0 + ], + "max": [ + 5.29152774810791, + 3.333421468734741, + 1.0 + ] + }, + { + "bufferView": 53, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 53, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 54, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 3.8650522232055664, + 3.171966314315796, + 0.0 + ], + "max": [ + 4.9888176918029785, + 3.333421468734741, + 1.0 + ] + }, + { + "bufferView": 54, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 54, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 55, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 3.535533905029297, + 3.171966314315796, + 0.0 + ], + "max": [ + 3.8650522232055664, + 3.535533905029297, + 1.0 + ] + }, + { + "bufferView": 55, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 55, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 56, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 3.535533905029297, + 3.535533905029297, + 0.0 + ], + "max": [ + 3.8063597679138184, + 4.638062953948975, + 1.0 + ] + }, + { + "bufferView": 56, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 56, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 57, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 3.333421468734741, + 4.638062953948975, + 0.0 + ], + "max": [ + 3.8063597679138184, + 4.9888176918029785, + 1.0 + ] + }, + { + "bufferView": 57, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 57, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 58, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 2.3569836616516113, + 4.409606456756592, + 0.0 + ], + "max": [ + 3.333421468734741, + 4.9888176918029785, + 1.0 + ] + }, + { + "bufferView": 58, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 58, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 59, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 1.9134172201156616, + 4.409606456756592, + 0.0 + ], + "max": [ + 2.3569836616516113, + 4.6193976402282715, + 1.0 + ] + }, + { + "bufferView": 59, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 59, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 60, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 1.7417080402374268, + 4.6193976402282715, + 0.0 + ], + "max": [ + 1.9134172201156616, + 5.741641998291016, + 1.0 + ] + }, + { + "bufferView": 60, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 60, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 61, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 1.1705418825149536, + 5.741641998291016, + 0.0 + ], + "max": [ + 1.7417080402374268, + 5.884711742401123, + 1.0 + ] + }, + { + "bufferView": 61, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 61, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 62, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 0.4900856912136078, + 4.975923538208008, + 0.0 + ], + "max": [ + 1.1705418825149536, + 5.884711742401123, + 1.0 + ] + }, + { + "bufferView": 62, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 62, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 63, + "byteOffset": 0, + "count": 6, + "componentType": 5126, + "type": "VEC3", + "min": [ + 0.0, + 4.975923538208008, + 0.0 + ], + "max": [ + 0.4900856912136078, + 5.0, + 1.0 + ] + }, + { + "bufferView": 63, + "byteOffset": 12, + "count": 6, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 63, + "byteOffset": 24, + "count": 6, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 64, + "byteOffset": 0, + "count": 186, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.971108436584473, + -5.971108436584473, + 0.0 + ], + "max": [ + 5.971108436584473, + 5.971108436584473, + 0.0 + ] + }, + { + "bufferView": 64, + "byteOffset": 12, + "count": 186, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 64, + "byteOffset": 24, + "count": 186, + "componentType": 5126, + "type": "VEC2" + }, + { + "bufferView": 65, + "byteOffset": 0, + "count": 186, + "componentType": 5126, + "type": "VEC3", + "min": [ + -5.971108436584473, + -5.971108436584473, + 1.0 + ], + "max": [ + 5.971108436584473, + 5.971108436584473, + 1.0 + ] + }, + { + "bufferView": 65, + "byteOffset": 12, + "count": 186, + "componentType": 5126, + "type": "VEC3" + }, + { + "bufferView": 65, + "byteOffset": 24, + "count": 186, + "componentType": 5126, + "type": "VEC2" + } + ], + "asset": { + "generator": "kittycad.io", + "version": "2.0" + }, + "buffers": [ + { + "byteLength": 24192, + "uri": "data:application/octet-stream;base64,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" + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 0, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 192, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 384, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 576, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 768, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 960, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 1152, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 1344, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 1536, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 1728, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 1920, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 2112, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 2304, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 2496, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 2688, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 2880, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 3072, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 3264, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 3456, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 3648, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 3840, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 4032, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 4224, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 4416, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 4608, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 4800, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 4992, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 5184, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 5376, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 5568, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 5760, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 5952, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 6144, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 6336, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 6528, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 6720, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 6912, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 7104, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 7296, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 7488, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 7680, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 7872, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 8064, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 8256, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 8448, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 8640, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 8832, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 9024, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 9216, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 9408, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 9600, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 9792, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 9984, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 10176, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 10368, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 10560, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 10752, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 10944, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 11136, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 11328, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 11520, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 11712, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 11904, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 192, + "byteOffset": 12096, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 5952, + "byteOffset": 12288, + "byteStride": 32, + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 5952, + "byteOffset": 18240, + "byteStride": 32, + "target": 34962 + } + ], + "scene": 0, + "extensions": { + "KITTYCAD_boundary_representation": { + "breps": [ + { + "faces": [ + { + "surface": 0, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 0 + }, + { + "reverse": false, + "edge": 1 + }, + { + "reverse": true, + "edge": 2 + }, + { + "reverse": true, + "edge": 3 + } + ] + } + }, + { + "surface": 1, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 4 + }, + { + "reverse": false, + "edge": 5 + }, + { + "reverse": true, + "edge": 6 + }, + { + "reverse": true, + "edge": 1 + } + ] + } + }, + { + "surface": 2, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 7 + }, + { + "reverse": false, + "edge": 8 + }, + { + "reverse": true, + "edge": 9 + }, + { + "reverse": true, + "edge": 5 + } + ] + } + }, + { + "surface": 3, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 10 + }, + { + "reverse": false, + "edge": 11 + }, + { + "reverse": true, + "edge": 12 + }, + { + "reverse": true, + "edge": 8 + } + ] + } + }, + { + "surface": 4, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 13 + }, + { + "reverse": false, + "edge": 14 + }, + { + "reverse": true, + "edge": 15 + }, + { + "reverse": true, + "edge": 11 + } + ] + } + }, + { + "surface": 5, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 16 + }, + { + "reverse": false, + "edge": 17 + }, + { + "reverse": true, + "edge": 18 + }, + { + "reverse": true, + "edge": 14 + } + ] + } + }, + { + "surface": 6, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 19 + }, + { + "reverse": false, + "edge": 20 + }, + { + "reverse": true, + "edge": 21 + }, + { + "reverse": true, + "edge": 17 + } + ] + } + }, + { + "surface": 7, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 22 + }, + { + "reverse": false, + "edge": 23 + }, + { + "reverse": true, + "edge": 24 + }, + { + "reverse": true, + "edge": 20 + } + ] + } + }, + { + "surface": 8, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 25 + }, + { + "reverse": false, + "edge": 26 + }, + { + "reverse": true, + "edge": 27 + }, + { + "reverse": true, + "edge": 23 + } + ] + } + }, + { + "surface": 9, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 28 + }, + { + "reverse": false, + "edge": 29 + }, + { + "reverse": true, + "edge": 30 + }, + { + "reverse": true, + "edge": 26 + } + ] + } + }, + { + "surface": 10, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 31 + }, + { + "reverse": false, + "edge": 32 + }, + { + "reverse": true, + "edge": 33 + }, + { + "reverse": true, + "edge": 29 + } + ] + } + }, + { + "surface": 11, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 34 + }, + { + "reverse": false, + "edge": 35 + }, + { + "reverse": true, + "edge": 36 + }, + { + "reverse": true, + "edge": 32 + } + ] + } + }, + { + "surface": 12, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 37 + }, + { + "reverse": false, + "edge": 38 + }, + { + "reverse": true, + "edge": 39 + }, + { + "reverse": true, + "edge": 35 + } + ] + } + }, + { + "surface": 13, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 40 + }, + { + "reverse": false, + "edge": 41 + }, + { + "reverse": true, + "edge": 42 + }, + { + "reverse": true, + "edge": 38 + } + ] + } + }, + { + "surface": 14, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 43 + }, + { + "reverse": false, + "edge": 44 + }, + { + "reverse": true, + "edge": 45 + }, + { + "reverse": true, + "edge": 41 + } + ] + } + }, + { + "surface": 15, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 46 + }, + { + "reverse": false, + "edge": 47 + }, + { + "reverse": true, + "edge": 48 + }, + { + "reverse": true, + "edge": 44 + } + ] + } + }, + { + "surface": 16, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 49 + }, + { + "reverse": false, + "edge": 50 + }, + { + "reverse": true, + "edge": 51 + }, + { + "reverse": true, + "edge": 47 + } + ] + } + }, + { + "surface": 17, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 52 + }, + { + "reverse": false, + "edge": 53 + }, + { + "reverse": true, + "edge": 54 + }, + { + "reverse": true, + "edge": 50 + } + ] + } + }, + { + "surface": 18, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 55 + }, + { + "reverse": false, + "edge": 56 + }, + { + "reverse": true, + "edge": 57 + }, + { + "reverse": true, + "edge": 53 + } + ] + } + }, + { + "surface": 19, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 58 + }, + { + "reverse": false, + "edge": 59 + }, + { + "reverse": true, + "edge": 60 + }, + { + "reverse": true, + "edge": 56 + } + ] + } + }, + { + "surface": 20, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 61 + }, + { + "reverse": false, + "edge": 62 + }, + { + "reverse": true, + "edge": 63 + }, + { + "reverse": true, + "edge": 59 + } + ] + } + }, + { + "surface": 21, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 64 + }, + { + "reverse": false, + "edge": 65 + }, + { + "reverse": true, + "edge": 66 + }, + { + "reverse": true, + "edge": 62 + } + ] + } + }, + { + "surface": 22, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 67 + }, + { + "reverse": false, + "edge": 68 + }, + { + "reverse": true, + "edge": 69 + }, + { + "reverse": true, + "edge": 65 + } + ] + } + }, + { + "surface": 23, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 70 + }, + { + "reverse": false, + "edge": 71 + }, + { + "reverse": true, + "edge": 72 + }, + { + "reverse": true, + "edge": 68 + } + ] + } + }, + { + "surface": 24, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 73 + }, + { + "reverse": false, + "edge": 74 + }, + { + "reverse": true, + "edge": 75 + }, + { + "reverse": true, + "edge": 71 + } + ] + } + }, + { + "surface": 25, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 76 + }, + { + "reverse": false, + "edge": 77 + }, + { + "reverse": true, + "edge": 78 + }, + { + "reverse": true, + "edge": 74 + } + ] + } + }, + { + "surface": 26, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 79 + }, + { + "reverse": false, + "edge": 80 + }, + { + "reverse": true, + "edge": 81 + }, + { + "reverse": true, + "edge": 77 + } + ] + } + }, + { + "surface": 27, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 82 + }, + { + "reverse": false, + "edge": 83 + }, + { + "reverse": true, + "edge": 84 + }, + { + "reverse": true, + "edge": 80 + } + ] + } + }, + { + "surface": 28, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 85 + }, + { + "reverse": false, + "edge": 86 + }, + { + "reverse": true, + "edge": 87 + }, + { + "reverse": true, + "edge": 83 + } + ] + } + }, + { + "surface": 29, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 88 + }, + { + "reverse": false, + "edge": 89 + }, + { + "reverse": true, + "edge": 90 + }, + { + "reverse": true, + "edge": 86 + } + ] + } + }, + { + "surface": 30, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 91 + }, + { + "reverse": false, + "edge": 92 + }, + { + "reverse": true, + "edge": 93 + }, + { + "reverse": true, + "edge": 89 + } + ] + } + }, + { + "surface": 31, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 94 + }, + { + "reverse": false, + "edge": 95 + }, + { + "reverse": true, + "edge": 96 + }, + { + "reverse": true, + "edge": 92 + } + ] + } + }, + { + "surface": 32, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 97 + }, + { + "reverse": false, + "edge": 98 + }, + { + "reverse": true, + "edge": 99 + }, + { + "reverse": true, + "edge": 95 + } + ] + } + }, + { + "surface": 33, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 100 + }, + { + "reverse": false, + "edge": 101 + }, + { + "reverse": true, + "edge": 102 + }, + { + "reverse": true, + "edge": 98 + } + ] + } + }, + { + "surface": 34, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 103 + }, + { + "reverse": false, + "edge": 104 + }, + { + "reverse": true, + "edge": 105 + }, + { + "reverse": true, + "edge": 101 + } + ] + } + }, + { + "surface": 35, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 106 + }, + { + "reverse": false, + "edge": 107 + }, + { + "reverse": true, + "edge": 108 + }, + { + "reverse": true, + "edge": 104 + } + ] + } + }, + { + "surface": 36, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 109 + }, + { + "reverse": false, + "edge": 110 + }, + { + "reverse": true, + "edge": 111 + }, + { + "reverse": true, + "edge": 107 + } + ] + } + }, + { + "surface": 37, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 112 + }, + { + "reverse": false, + "edge": 113 + }, + { + "reverse": true, + "edge": 114 + }, + { + "reverse": true, + "edge": 110 + } + ] + } + }, + { + "surface": 38, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 115 + }, + { + "reverse": false, + "edge": 116 + }, + { + "reverse": true, + "edge": 117 + }, + { + "reverse": true, + "edge": 113 + } + ] + } + }, + { + "surface": 39, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 118 + }, + { + "reverse": false, + "edge": 119 + }, + { + "reverse": true, + "edge": 120 + }, + { + "reverse": true, + "edge": 116 + } + ] + } + }, + { + "surface": 40, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 121 + }, + { + "reverse": false, + "edge": 122 + }, + { + "reverse": true, + "edge": 123 + }, + { + "reverse": true, + "edge": 119 + } + ] + } + }, + { + "surface": 41, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 124 + }, + { + "reverse": false, + "edge": 125 + }, + { + "reverse": true, + "edge": 126 + }, + { + "reverse": true, + "edge": 122 + } + ] + } + }, + { + "surface": 42, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 127 + }, + { + "reverse": false, + "edge": 128 + }, + { + "reverse": true, + "edge": 129 + }, + { + "reverse": true, + "edge": 125 + } + ] + } + }, + { + "surface": 43, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 130 + }, + { + "reverse": false, + "edge": 131 + }, + { + "reverse": true, + "edge": 132 + }, + { + "reverse": true, + "edge": 128 + } + ] + } + }, + { + "surface": 44, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 133 + }, + { + "reverse": false, + "edge": 134 + }, + { + "reverse": true, + "edge": 135 + }, + { + "reverse": true, + "edge": 131 + } + ] + } + }, + { + "surface": 45, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 136 + }, + { + "reverse": false, + "edge": 137 + }, + { + "reverse": true, + "edge": 138 + }, + { + "reverse": true, + "edge": 134 + } + ] + } + }, + { + "surface": 46, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 139 + }, + { + "reverse": false, + "edge": 140 + }, + { + "reverse": true, + "edge": 141 + }, + { + "reverse": true, + "edge": 137 + } + ] + } + }, + { + "surface": 47, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 142 + }, + { + "reverse": false, + "edge": 143 + }, + { + "reverse": true, + "edge": 144 + }, + { + "reverse": true, + "edge": 140 + } + ] + } + }, + { + "surface": 48, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 145 + }, + { + "reverse": false, + "edge": 146 + }, + { + "reverse": true, + "edge": 147 + }, + { + "reverse": true, + "edge": 143 + } + ] + } + }, + { + "surface": 49, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 148 + }, + { + "reverse": false, + "edge": 149 + }, + { + "reverse": true, + "edge": 150 + }, + { + "reverse": true, + "edge": 146 + } + ] + } + }, + { + "surface": 50, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 151 + }, + { + "reverse": false, + "edge": 152 + }, + { + "reverse": true, + "edge": 153 + }, + { + "reverse": true, + "edge": 149 + } + ] + } + }, + { + "surface": 51, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 154 + }, + { + "reverse": false, + "edge": 155 + }, + { + "reverse": true, + "edge": 156 + }, + { + "reverse": true, + "edge": 152 + } + ] + } + }, + { + "surface": 52, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 157 + }, + { + "reverse": false, + "edge": 158 + }, + { + "reverse": true, + "edge": 159 + }, + { + "reverse": true, + "edge": 155 + } + ] + } + }, + { + "surface": 53, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 160 + }, + { + "reverse": false, + "edge": 161 + }, + { + "reverse": true, + "edge": 162 + }, + { + "reverse": true, + "edge": 158 + } + ] + } + }, + { + "surface": 54, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 163 + }, + { + "reverse": false, + "edge": 164 + }, + { + "reverse": true, + "edge": 165 + }, + { + "reverse": true, + "edge": 161 + } + ] + } + }, + { + "surface": 55, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 166 + }, + { + "reverse": false, + "edge": 167 + }, + { + "reverse": true, + "edge": 168 + }, + { + "reverse": true, + "edge": 164 + } + ] + } + }, + { + "surface": 56, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 169 + }, + { + "reverse": false, + "edge": 170 + }, + { + "reverse": true, + "edge": 171 + }, + { + "reverse": true, + "edge": 167 + } + ] + } + }, + { + "surface": 57, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 172 + }, + { + "reverse": false, + "edge": 173 + }, + { + "reverse": true, + "edge": 174 + }, + { + "reverse": true, + "edge": 170 + } + ] + } + }, + { + "surface": 58, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 175 + }, + { + "reverse": false, + "edge": 176 + }, + { + "reverse": true, + "edge": 177 + }, + { + "reverse": true, + "edge": 173 + } + ] + } + }, + { + "surface": 59, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 178 + }, + { + "reverse": false, + "edge": 179 + }, + { + "reverse": true, + "edge": 180 + }, + { + "reverse": true, + "edge": 176 + } + ] + } + }, + { + "surface": 60, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 181 + }, + { + "reverse": false, + "edge": 182 + }, + { + "reverse": true, + "edge": 183 + }, + { + "reverse": true, + "edge": 179 + } + ] + } + }, + { + "surface": 61, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 184 + }, + { + "reverse": false, + "edge": 185 + }, + { + "reverse": true, + "edge": 186 + }, + { + "reverse": true, + "edge": 182 + } + ] + } + }, + { + "surface": 62, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 187 + }, + { + "reverse": false, + "edge": 188 + }, + { + "reverse": true, + "edge": 189 + }, + { + "reverse": true, + "edge": 185 + } + ] + } + }, + { + "surface": 63, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 190 + }, + { + "reverse": false, + "edge": 3 + }, + { + "reverse": true, + "edge": 191 + }, + { + "reverse": true, + "edge": 188 + } + ] + } + }, + { + "surface": 64, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 0 + }, + { + "reverse": false, + "edge": 4 + }, + { + "reverse": false, + "edge": 7 + }, + { + "reverse": false, + "edge": 10 + }, + { + "reverse": false, + "edge": 13 + }, + { + "reverse": false, + "edge": 16 + }, + { + "reverse": false, + "edge": 19 + }, + { + "reverse": false, + "edge": 22 + }, + { + "reverse": false, + "edge": 25 + }, + { + "reverse": false, + "edge": 28 + }, + { + "reverse": false, + "edge": 31 + }, + { + "reverse": false, + "edge": 34 + }, + { + "reverse": false, + "edge": 37 + }, + { + "reverse": false, + "edge": 40 + }, + { + "reverse": false, + "edge": 43 + }, + { + "reverse": false, + "edge": 46 + }, + { + "reverse": false, + "edge": 49 + }, + { + "reverse": false, + "edge": 52 + }, + { + "reverse": false, + "edge": 55 + }, + { + "reverse": false, + "edge": 58 + }, + { + "reverse": false, + "edge": 61 + }, + { + "reverse": false, + "edge": 64 + }, + { + "reverse": false, + "edge": 67 + }, + { + "reverse": false, + "edge": 70 + }, + { + "reverse": false, + "edge": 73 + }, + { + "reverse": false, + "edge": 76 + }, + { + "reverse": false, + "edge": 79 + }, + { + "reverse": false, + "edge": 82 + }, + { + "reverse": false, + "edge": 85 + }, + { + "reverse": false, + "edge": 88 + }, + { + "reverse": false, + "edge": 91 + }, + { + "reverse": false, + "edge": 94 + }, + { + "reverse": false, + "edge": 97 + }, + { + "reverse": false, + "edge": 100 + }, + { + "reverse": false, + "edge": 103 + }, + { + "reverse": false, + "edge": 106 + }, + { + "reverse": false, + "edge": 109 + }, + { + "reverse": false, + "edge": 112 + }, + { + "reverse": false, + "edge": 115 + }, + { + "reverse": false, + "edge": 118 + }, + { + "reverse": false, + "edge": 121 + }, + { + "reverse": false, + "edge": 124 + }, + { + "reverse": false, + "edge": 127 + }, + { + "reverse": false, + "edge": 130 + }, + { + "reverse": false, + "edge": 133 + }, + { + "reverse": false, + "edge": 136 + }, + { + "reverse": false, + "edge": 139 + }, + { + "reverse": false, + "edge": 142 + }, + { + "reverse": false, + "edge": 145 + }, + { + "reverse": false, + "edge": 148 + }, + { + "reverse": false, + "edge": 151 + }, + { + "reverse": false, + "edge": 154 + }, + { + "reverse": false, + "edge": 157 + }, + { + "reverse": false, + "edge": 160 + }, + { + "reverse": false, + "edge": 163 + }, + { + "reverse": false, + "edge": 166 + }, + { + "reverse": false, + "edge": 169 + }, + { + "reverse": false, + "edge": 172 + }, + { + "reverse": false, + "edge": 175 + }, + { + "reverse": false, + "edge": 178 + }, + { + "reverse": false, + "edge": 181 + }, + { + "reverse": false, + "edge": 184 + }, + { + "reverse": false, + "edge": 187 + }, + { + "reverse": false, + "edge": 190 + } + ] + } + }, + { + "surface": 65, + "outerLoop": { + "trims": [ + { + "reverse": false, + "edge": 2 + }, + { + "reverse": false, + "edge": 6 + }, + { + "reverse": false, + "edge": 9 + }, + { + "reverse": false, + "edge": 12 + }, + { + "reverse": false, + "edge": 15 + }, + { + "reverse": false, + "edge": 18 + }, + { + "reverse": false, + "edge": 21 + }, + { + "reverse": false, + "edge": 24 + }, + { + "reverse": false, + "edge": 27 + }, + { + "reverse": false, + "edge": 30 + }, + { + "reverse": false, + "edge": 33 + }, + { + "reverse": false, + "edge": 36 + }, + { + "reverse": false, + "edge": 39 + }, + { + "reverse": false, + "edge": 42 + }, + { + "reverse": false, + "edge": 45 + }, + { + "reverse": false, + "edge": 48 + }, + { + "reverse": false, + "edge": 51 + }, + { + "reverse": false, + "edge": 54 + }, + { + "reverse": false, + "edge": 57 + }, + { + "reverse": false, + "edge": 60 + }, + { + "reverse": false, + "edge": 63 + }, + { + "reverse": false, + "edge": 66 + }, + { + "reverse": false, + "edge": 69 + }, + { + "reverse": false, + "edge": 72 + }, + { + "reverse": false, + "edge": 75 + }, + { + "reverse": false, + "edge": 78 + }, + { + "reverse": false, + "edge": 81 + }, + { + "reverse": false, + "edge": 84 + }, + { + "reverse": false, + "edge": 87 + }, + { + "reverse": false, + "edge": 90 + }, + { + "reverse": false, + "edge": 93 + }, + { + "reverse": false, + "edge": 96 + }, + { + "reverse": false, + "edge": 99 + }, + { + "reverse": false, + "edge": 102 + }, + { + "reverse": false, + "edge": 105 + }, + { + "reverse": false, + "edge": 108 + }, + { + "reverse": false, + "edge": 111 + }, + { + "reverse": false, + "edge": 114 + }, + { + "reverse": false, + "edge": 117 + }, + { + "reverse": false, + "edge": 120 + }, + { + "reverse": false, + "edge": 123 + }, + { + "reverse": false, + "edge": 126 + }, + { + "reverse": false, + "edge": 129 + }, + { + "reverse": false, + "edge": 132 + }, + { + "reverse": false, + "edge": 135 + }, + { + "reverse": false, + "edge": 138 + }, + { + "reverse": false, + "edge": 141 + }, + { + "reverse": false, + "edge": 144 + }, + { + "reverse": false, + "edge": 147 + }, + { + "reverse": false, + "edge": 150 + }, + { + "reverse": false, + "edge": 153 + }, + { + "reverse": false, + "edge": 156 + }, + { + "reverse": false, + "edge": 159 + }, + { + "reverse": false, + "edge": 162 + }, + { + "reverse": false, + "edge": 165 + }, + { + "reverse": false, + "edge": 168 + }, + { + "reverse": false, + "edge": 171 + }, + { + "reverse": false, + "edge": 174 + }, + { + "reverse": false, + "edge": 177 + }, + { + "reverse": false, + "edge": 180 + }, + { + "reverse": false, + "edge": 183 + }, + { + "reverse": false, + "edge": 186 + }, + { + "reverse": false, + "edge": 189 + }, + { + "reverse": false, + "edge": 191 + } + ] + } + } + ], + "mesh": 0 + } + ], + "curves": [ + { + "type": "line", + "line": { + "start": [ + 0.0, + 5.0, + 0.0 + ], + "direction": [ + -0.51801324, + 0.8553726, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -0.5881028, + 5.9711084, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 0.0, + 5.0, + 1.0 + ], + "direction": [ + -0.51801324, + 0.8553726, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 0.0, + 5.0, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -0.5881028, + 5.9711084, + 0.0 + ], + "direction": [ + -0.9891765, + -0.14673051, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881205 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.1705419, + 5.8847117, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -0.5881028, + 5.9711084, + 1.0 + ], + "direction": [ + -0.9891765, + -0.14673051, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881205 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.1705419, + 5.8847117, + 0.0 + ], + "direction": [ + -0.24740633, + -0.9689118, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353045 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.4514234, + 4.784702, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.1705419, + 5.8847117, + 1.0 + ], + "direction": [ + -0.24740633, + -0.9689118, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353045 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.4514234, + 4.784702, + 0.0 + ], + "direction": [ + -0.94154394, + -0.33689013, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067685 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.9134172, + 4.6193976, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.4514234, + 4.784702, + 1.0 + ], + "direction": [ + -0.94154394, + -0.33689013, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067685 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.9134172, + 4.6193976, + 0.0 + ], + "direction": [ + -0.8059187, + 0.5920263, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -2.8283803, + 5.2915277, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.9134172, + 4.6193976, + 1.0 + ], + "direction": [ + -0.8059187, + 0.5920263, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -2.8283803, + 5.2915277, + 0.0 + ], + "direction": [ + -0.85772854, + -0.5141028, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888123 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.3334215, + 4.9888177, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -2.8283803, + 5.2915277, + 1.0 + ], + "direction": [ + -0.85772854, + -0.5141028, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888123 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.3334215, + 4.9888177, + 0.0 + ], + "direction": [ + 0.14221306, + -0.9898361, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.1719663, + 3.8650522, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.3334215, + 4.9888177, + 1.0 + ], + "direction": [ + 0.14221306, + -0.9898361, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.1719663, + 3.8650522, + 0.0 + ], + "direction": [ + -0.74095124, + -0.6715588, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906768 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.535534, + 3.535534, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.1719663, + 3.8650522, + 1.0 + ], + "direction": [ + -0.74095124, + -0.6715588, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906768 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.535534, + 3.535534, + 0.0 + ], + "direction": [ + -0.97113043, + 0.23854904, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353048 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.638063, + 3.8063598, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.535534, + 3.535534, + 1.0 + ], + "direction": [ + -0.97113043, + 0.23854904, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353048 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.638063, + 3.8063598, + 0.0 + ], + "direction": [ + -0.5956991, + -0.8032077, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881193 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.9888177, + 3.3334215, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.638063, + 3.8063598, + 1.0 + ], + "direction": [ + -0.5956991, + -0.8032077, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881193 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.9888177, + 3.3334215, + 0.0 + ], + "direction": [ + 0.51018137, + -0.86006683, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.4096065, + 2.3569837, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.9888177, + 3.3334215, + 1.0 + ], + "direction": [ + 0.51018137, + -0.86006683, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.4096065, + 2.3569837, + 0.0 + ], + "direction": [ + -0.4275549, + -0.9039894, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906766 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.6193976, + 1.9134172, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.4096065, + 2.3569837, + 1.0 + ], + "direction": [ + -0.4275549, + -0.9039894, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906766 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.6193976, + 1.9134172, + 0.0 + ], + "direction": [ + -0.9884963, + -0.15124504, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.741642, + 1.741708, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.6193976, + 1.9134172, + 1.0 + ], + "direction": [ + -0.9884963, + -0.15124504, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.741642, + 1.741708, + 0.0 + ], + "direction": [ + -0.24298029, + -0.9700312, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888121 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.8847117, + 1.1705419, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.741642, + 1.741708, + 1.0 + ], + "direction": [ + -0.24298029, + -0.9700312, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888121 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.8847117, + 1.1705419, + 0.0 + ], + "direction": [ + 0.8004796, + -0.59936, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353047 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.9759235, + 0.4900857, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.8847117, + 1.1705419, + 1.0 + ], + "direction": [ + 0.8004796, + -0.59936, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353047 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.9759235, + 0.4900857, + 0.0 + ], + "direction": [ + -0.04906787, + -0.99879545, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067673 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.0, + -1.00000674e-10, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.9759235, + 0.4900857, + 1.0 + ], + "direction": [ + -0.04906787, + -0.99879545, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067673 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.0, + -1.00000674e-10, + 0.0 + ], + "direction": [ + -0.8553726, + -0.51801324, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.9711084, + -0.5881028, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.0, + -1.00000674e-10, + 1.0 + ], + "direction": [ + -0.8553726, + -0.51801324, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.9711084, + -0.5881028, + 0.0 + ], + "direction": [ + 0.14673051, + -0.9891765, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881205 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.8847117, + -1.1705419, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.9711084, + -0.5881028, + 1.0 + ], + "direction": [ + 0.14673051, + -0.9891765, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881205 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.8847117, + -1.1705419, + 0.0 + ], + "direction": [ + 0.9689118, + -0.24740633, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353045 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.784702, + -1.4514234, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.8847117, + -1.1705419, + 1.0 + ], + "direction": [ + 0.9689118, + -0.24740633, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353045 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.784702, + -1.4514234, + 0.0 + ], + "direction": [ + 0.33689013, + -0.94154394, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067685 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.6193976, + -1.9134172, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.784702, + -1.4514234, + 1.0 + ], + "direction": [ + 0.33689013, + -0.94154394, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067685 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.6193976, + -1.9134172, + 0.0 + ], + "direction": [ + -0.5920263, + -0.8059187, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.2915277, + -2.8283803, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.6193976, + -1.9134172, + 1.0 + ], + "direction": [ + -0.5920263, + -0.8059187, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.2915277, + -2.8283803, + 0.0 + ], + "direction": [ + 0.5141028, + -0.85772854, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888123 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.9888177, + -3.3334215, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -5.2915277, + -2.8283803, + 1.0 + ], + "direction": [ + 0.5141028, + -0.85772854, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888123 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.9888177, + -3.3334215, + 0.0 + ], + "direction": [ + 0.9898361, + 0.14221306, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.8650522, + -3.1719663, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -4.9888177, + -3.3334215, + 1.0 + ], + "direction": [ + 0.9898361, + 0.14221306, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.8650522, + -3.1719663, + 0.0 + ], + "direction": [ + 0.6715588, + -0.74095124, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906768 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.535534, + -3.535534, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.8650522, + -3.1719663, + 1.0 + ], + "direction": [ + 0.6715588, + -0.74095124, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906768 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.535534, + -3.535534, + 0.0 + ], + "direction": [ + -0.23854904, + -0.97113043, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353048 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.8063598, + -4.638063, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.535534, + -3.535534, + 1.0 + ], + "direction": [ + -0.23854904, + -0.97113043, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353048 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.8063598, + -4.638063, + 0.0 + ], + "direction": [ + 0.8032077, + -0.5956991, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881193 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.3334215, + -4.9888177, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.8063598, + -4.638063, + 1.0 + ], + "direction": [ + 0.8032077, + -0.5956991, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881193 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.3334215, + -4.9888177, + 0.0 + ], + "direction": [ + 0.86006683, + 0.51018137, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -2.3569837, + -4.4096065, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -3.3334215, + -4.9888177, + 1.0 + ], + "direction": [ + 0.86006683, + 0.51018137, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -2.3569837, + -4.4096065, + 0.0 + ], + "direction": [ + 0.9039894, + -0.4275549, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906766 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.9134172, + -4.6193976, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -2.3569837, + -4.4096065, + 1.0 + ], + "direction": [ + 0.9039894, + -0.4275549, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906766 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.9134172, + -4.6193976, + 0.0 + ], + "direction": [ + 0.15124504, + -0.9884963, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.741708, + -5.741642, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.9134172, + -4.6193976, + 1.0 + ], + "direction": [ + 0.15124504, + -0.9884963, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.741708, + -5.741642, + 0.0 + ], + "direction": [ + 0.9700312, + -0.24298029, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888121 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.1705419, + -5.8847117, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.741708, + -5.741642, + 1.0 + ], + "direction": [ + 0.9700312, + -0.24298029, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888121 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.1705419, + -5.8847117, + 0.0 + ], + "direction": [ + 0.59936, + 0.8004796, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353047 + } + }, + { + "type": "line", + "line": { + "start": [ + -0.4900857, + -4.9759235, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -1.1705419, + -5.8847117, + 1.0 + ], + "direction": [ + 0.59936, + 0.8004796, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353047 + } + }, + { + "type": "line", + "line": { + "start": [ + -0.4900857, + -4.9759235, + 0.0 + ], + "direction": [ + 0.99879545, + -0.04906787, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067673 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.000007e-10, + -5.0, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + -0.4900857, + -4.9759235, + 1.0 + ], + "direction": [ + 0.99879545, + -0.04906787, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067673 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.000007e-10, + -5.0, + 0.0 + ], + "direction": [ + 0.51801324, + -0.8553726, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 0.5881028, + -5.9711084, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.000007e-10, + -5.0, + 1.0 + ], + "direction": [ + 0.51801324, + -0.8553726, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 0.5881028, + -5.9711084, + 0.0 + ], + "direction": [ + 0.9891765, + 0.14673051, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881205 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.1705419, + -5.8847117, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 0.5881028, + -5.9711084, + 1.0 + ], + "direction": [ + 0.9891765, + 0.14673051, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881205 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.1705419, + -5.8847117, + 0.0 + ], + "direction": [ + 0.24740633, + 0.9689118, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353045 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.4514234, + -4.784702, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.1705419, + -5.8847117, + 1.0 + ], + "direction": [ + 0.24740633, + 0.9689118, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353045 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.4514234, + -4.784702, + 0.0 + ], + "direction": [ + 0.94154394, + 0.33689013, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067685 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.9134172, + -4.6193976, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.4514234, + -4.784702, + 1.0 + ], + "direction": [ + 0.94154394, + 0.33689013, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067685 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.9134172, + -4.6193976, + 0.0 + ], + "direction": [ + 0.8059187, + -0.5920263, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 2.8283803, + -5.2915277, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.9134172, + -4.6193976, + 1.0 + ], + "direction": [ + 0.8059187, + -0.5920263, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 2.8283803, + -5.2915277, + 0.0 + ], + "direction": [ + 0.85772854, + 0.5141028, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888123 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.3334215, + -4.9888177, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 2.8283803, + -5.2915277, + 1.0 + ], + "direction": [ + 0.85772854, + 0.5141028, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888123 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.3334215, + -4.9888177, + 0.0 + ], + "direction": [ + -0.14221306, + 0.9898361, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.1719663, + -3.8650522, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.3334215, + -4.9888177, + 1.0 + ], + "direction": [ + -0.14221306, + 0.9898361, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.1719663, + -3.8650522, + 0.0 + ], + "direction": [ + 0.74095124, + 0.6715588, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906768 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.535534, + -3.535534, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.1719663, + -3.8650522, + 1.0 + ], + "direction": [ + 0.74095124, + 0.6715588, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906768 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.535534, + -3.535534, + 0.0 + ], + "direction": [ + 0.97113043, + -0.23854904, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353048 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.638063, + -3.8063598, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.535534, + -3.535534, + 1.0 + ], + "direction": [ + 0.97113043, + -0.23854904, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353048 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.638063, + -3.8063598, + 0.0 + ], + "direction": [ + 0.5956991, + 0.8032077, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881193 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.9888177, + -3.3334215, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.638063, + -3.8063598, + 1.0 + ], + "direction": [ + 0.5956991, + 0.8032077, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881193 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.9888177, + -3.3334215, + 0.0 + ], + "direction": [ + -0.51018137, + 0.86006683, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.4096065, + -2.3569837, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.9888177, + -3.3334215, + 1.0 + ], + "direction": [ + -0.51018137, + 0.86006683, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.4096065, + -2.3569837, + 0.0 + ], + "direction": [ + 0.4275549, + 0.9039894, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906766 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.6193976, + -1.9134172, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.4096065, + -2.3569837, + 1.0 + ], + "direction": [ + 0.4275549, + 0.9039894, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906766 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.6193976, + -1.9134172, + 0.0 + ], + "direction": [ + 0.9884963, + 0.15124504, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.741642, + -1.741708, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.6193976, + -1.9134172, + 1.0 + ], + "direction": [ + 0.9884963, + 0.15124504, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.741642, + -1.741708, + 0.0 + ], + "direction": [ + 0.24298029, + 0.9700312, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888121 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.8847117, + -1.1705419, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.741642, + -1.741708, + 1.0 + ], + "direction": [ + 0.24298029, + 0.9700312, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888121 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.8847117, + -1.1705419, + 0.0 + ], + "direction": [ + -0.8004796, + 0.59936, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353047 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.9759235, + -0.4900857, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.8847117, + -1.1705419, + 1.0 + ], + "direction": [ + -0.8004796, + 0.59936, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353047 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.9759235, + -0.4900857, + 0.0 + ], + "direction": [ + 0.04906787, + 0.99879545, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067673 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.0, + 1.999998e-10, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.9759235, + -0.4900857, + 1.0 + ], + "direction": [ + 0.04906787, + 0.99879545, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067673 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.0, + 1.999998e-10, + 0.0 + ], + "direction": [ + 0.8553726, + 0.51801324, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.9711084, + 0.5881028, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.0, + 1.999998e-10, + 1.0 + ], + "direction": [ + 0.8553726, + 0.51801324, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.9711084, + 0.5881028, + 0.0 + ], + "direction": [ + -0.14673051, + 0.9891765, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881205 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.8847117, + 1.1705419, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.9711084, + 0.5881028, + 1.0 + ], + "direction": [ + -0.14673051, + 0.9891765, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881205 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.8847117, + 1.1705419, + 0.0 + ], + "direction": [ + -0.9689118, + 0.24740633, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353045 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.784702, + 1.4514234, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.8847117, + 1.1705419, + 1.0 + ], + "direction": [ + -0.9689118, + 0.24740633, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353045 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.784702, + 1.4514234, + 0.0 + ], + "direction": [ + -0.33689013, + 0.94154394, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067685 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.6193976, + 1.9134172, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.784702, + 1.4514234, + 1.0 + ], + "direction": [ + -0.33689013, + 0.94154394, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067685 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.6193976, + 1.9134172, + 0.0 + ], + "direction": [ + 0.5920263, + 0.8059187, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.2915277, + 2.8283803, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.6193976, + 1.9134172, + 1.0 + ], + "direction": [ + 0.5920263, + 0.8059187, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.2915277, + 2.8283803, + 0.0 + ], + "direction": [ + -0.5141028, + 0.85772854, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888123 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.9888177, + 3.3334215, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 5.2915277, + 2.8283803, + 1.0 + ], + "direction": [ + -0.5141028, + 0.85772854, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888123 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.9888177, + 3.3334215, + 0.0 + ], + "direction": [ + -0.9898361, + -0.14221306, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.8650522, + 3.1719663, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 4.9888177, + 3.3334215, + 1.0 + ], + "direction": [ + -0.9898361, + -0.14221306, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.8650522, + 3.1719663, + 0.0 + ], + "direction": [ + -0.6715588, + 0.74095124, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906768 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.535534, + 3.535534, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.8650522, + 3.1719663, + 1.0 + ], + "direction": [ + -0.6715588, + 0.74095124, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906768 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.535534, + 3.535534, + 0.0 + ], + "direction": [ + 0.23854904, + 0.97113043, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353048 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.8063598, + 4.638063, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.535534, + 3.535534, + 1.0 + ], + "direction": [ + 0.23854904, + 0.97113043, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353048 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.8063598, + 4.638063, + 0.0 + ], + "direction": [ + -0.8032077, + 0.5956991, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881193 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.3334215, + 4.9888177, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.8063598, + 4.638063, + 1.0 + ], + "direction": [ + -0.8032077, + 0.5956991, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.58881193 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.3334215, + 4.9888177, + 0.0 + ], + "direction": [ + -0.86006683, + -0.51018137, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 2.3569837, + 4.4096065, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 3.3334215, + 4.9888177, + 1.0 + ], + "direction": [ + -0.86006683, + -0.51018137, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 2.3569837, + 4.4096065, + 0.0 + ], + "direction": [ + -0.9039894, + 0.4275549, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906766 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.9134172, + 4.6193976, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 2.3569837, + 4.4096065, + 1.0 + ], + "direction": [ + -0.9039894, + 0.4275549, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.4906766 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.9134172, + 4.6193976, + 0.0 + ], + "direction": [ + -0.15124504, + 0.9884963, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.741708, + 5.741642, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.9134172, + 4.6193976, + 1.0 + ], + "direction": [ + -0.15124504, + 0.9884963, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353046 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.741708, + 5.741642, + 0.0 + ], + "direction": [ + -0.9700312, + 0.24298029, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888121 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.1705419, + 5.8847117, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.741708, + 5.741642, + 1.0 + ], + "direction": [ + -0.9700312, + 0.24298029, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.5888121 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.1705419, + 5.8847117, + 0.0 + ], + "direction": [ + -0.59936, + -0.8004796, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353047 + } + }, + { + "type": "line", + "line": { + "start": [ + 0.4900857, + 4.9759235, + 0.0 + ], + "direction": [ + 0.0, + 0.0, + 1.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.0 + } + }, + { + "type": "line", + "line": { + "start": [ + 1.1705419, + 5.8847117, + 1.0 + ], + "direction": [ + -0.59936, + -0.8004796, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 1.1353047 + } + }, + { + "type": "line", + "line": { + "start": [ + 0.4900857, + 4.9759235, + 0.0 + ], + "direction": [ + -0.99879545, + 0.04906787, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067673 + } + }, + { + "type": "line", + "line": { + "start": [ + 0.4900857, + 4.9759235, + 1.0 + ], + "direction": [ + -0.99879545, + 0.04906787, + 0.0 + ] + }, + "domain": { + "min": 0.0, + "max": 0.49067673 + } + } + ], + "surfaces": [ + { + "type": "plane", + "plane": { + "normal": [ + 0.8553726, + 0.51801324, + 0.0 + ], + "point": [ + -0.2940514, + 5.485554, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.14673051, + 0.9891765, + 0.0 + ], + "point": [ + -0.87932235, + 5.92791, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.9689118, + 0.24740633, + 0.0 + ], + "point": [ + -1.3109827, + 5.334707, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.33689013, + 0.94154394, + 0.0 + ], + "point": [ + -1.6824204, + 4.7020497, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.5920263, + 0.8059187, + 0.0 + ], + "point": [ + -2.3708987, + 4.9554625, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.5141028, + 0.85772854, + 0.0 + ], + "point": [ + -3.080901, + 5.1401725, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.9898361, + -0.14221306, + 0.0 + ], + "point": [ + -3.252694, + 4.426935, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.6715588, + 0.74095124, + 0.0 + ], + "point": [ + -3.35375, + 3.700293, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.23854904, + 0.97113043, + 0.0 + ], + "point": [ + -4.0867987, + 3.6709468, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.8032077, + 0.5956991, + 0.0 + ], + "point": [ + -4.8134403, + 3.5698905, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.86006683, + -0.51018137, + 0.0 + ], + "point": [ + -4.699212, + 2.8452024, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.9039894, + 0.4275549, + 0.0 + ], + "point": [ + -4.514502, + 2.1352005, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.15124504, + 0.9884963, + 0.0 + ], + "point": [ + -5.18052, + 1.8275626, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.9700312, + 0.24298029, + 0.0 + ], + "point": [ + -5.8131766, + 1.4561249, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.59936, + -0.8004796, + 0.0 + ], + "point": [ + -5.4303174, + 0.8303138, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.99879545, + 0.04906787, + 0.0 + ], + "point": [ + -4.987962, + 0.24504285, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.51801324, + 0.8553726, + 0.0 + ], + "point": [ + -5.485554, + -0.2940514, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.9891765, + -0.14673051, + 0.0 + ], + "point": [ + -5.9279103, + -0.87932235, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.24740633, + -0.9689118, + 0.0 + ], + "point": [ + -5.334707, + -1.3109827, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.94154394, + -0.33689013, + 0.0 + ], + "point": [ + -4.7020497, + -1.6824203, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.8059187, + 0.5920263, + 0.0 + ], + "point": [ + -4.9554625, + -2.3708987, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.85772854, + -0.5141028, + 0.0 + ], + "point": [ + -5.140173, + -3.080901, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.14221306, + -0.9898361, + 0.0 + ], + "point": [ + -4.426935, + -3.252694, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.74095124, + -0.6715588, + 0.0 + ], + "point": [ + -3.700293, + -3.3537502, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.97113043, + 0.23854904, + 0.0 + ], + "point": [ + -3.6709468, + -4.0867987, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.5956991, + -0.8032077, + 0.0 + ], + "point": [ + -3.5698907, + -4.8134403, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.51018137, + -0.86006683, + 0.0 + ], + "point": [ + -2.8452024, + -4.699212, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.4275549, + -0.9039894, + 0.0 + ], + "point": [ + -2.1352005, + -4.514502, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.9884963, + -0.15124504, + 0.0 + ], + "point": [ + -1.8275627, + -5.1805196, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.24298029, + -0.9700312, + 0.0 + ], + "point": [ + -1.4561249, + -5.8131766, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.8004796, + -0.59936, + 0.0 + ], + "point": [ + -0.8303138, + -5.430318, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.04906787, + -0.99879545, + 0.0 + ], + "point": [ + -0.24504285, + -4.987962, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.8553726, + -0.51801324, + 0.0 + ], + "point": [ + 0.2940514, + -5.485554, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.14673051, + -0.9891765, + 0.0 + ], + "point": [ + 0.87932235, + -5.92791, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.9689118, + -0.24740633, + 0.0 + ], + "point": [ + 1.3109827, + -5.334707, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.33689013, + -0.94154394, + 0.0 + ], + "point": [ + 1.6824203, + -4.7020497, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.5920263, + -0.8059187, + 0.0 + ], + "point": [ + 2.3708987, + -4.9554625, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.5141028, + -0.85772854, + 0.0 + ], + "point": [ + 3.080901, + -5.140173, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.9898361, + 0.14221306, + 0.0 + ], + "point": [ + 3.252694, + -4.426935, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.6715588, + -0.74095124, + 0.0 + ], + "point": [ + 3.3537502, + -3.700293, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.23854904, + -0.97113043, + 0.0 + ], + "point": [ + 4.0867987, + -3.6709468, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.8032077, + -0.5956991, + 0.0 + ], + "point": [ + 4.8134403, + -3.5698907, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.86006683, + 0.51018137, + 0.0 + ], + "point": [ + 4.699212, + -2.8452024, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.9039894, + -0.4275549, + 0.0 + ], + "point": [ + 4.514502, + -2.1352005, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.15124504, + -0.9884963, + 0.0 + ], + "point": [ + 5.1805196, + -1.8275627, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.9700312, + -0.24298029, + 0.0 + ], + "point": [ + 5.8131766, + -1.4561249, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.59936, + 0.8004796, + 0.0 + ], + "point": [ + 5.4303174, + -0.8303138, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.99879545, + -0.04906787, + 0.0 + ], + "point": [ + 4.987962, + -0.24504285, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.51801324, + -0.8553726, + 0.0 + ], + "point": [ + 5.485554, + 0.2940514, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.9891765, + 0.14673051, + 0.0 + ], + "point": [ + 5.92791, + 0.87932235, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.24740633, + 0.9689118, + 0.0 + ], + "point": [ + 5.334707, + 1.3109827, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.94154394, + 0.33689013, + 0.0 + ], + "point": [ + 4.7020497, + 1.6824203, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.8059187, + -0.5920263, + 0.0 + ], + "point": [ + 4.9554625, + 2.3708987, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.85772854, + 0.5141028, + 0.0 + ], + "point": [ + 5.140173, + 3.080901, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.14221306, + 0.9898361, + 0.0 + ], + "point": [ + 4.426935, + 3.252694, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.74095124, + 0.6715588, + 0.0 + ], + "point": [ + 3.700293, + 3.3537502, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.97113043, + -0.23854904, + 0.0 + ], + "point": [ + 3.6709468, + 4.0867987, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.5956991, + 0.8032077, + 0.0 + ], + "point": [ + 3.5698905, + 4.8134403, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.51018137, + 0.86006683, + 0.0 + ], + "point": [ + 2.8452024, + 4.699212, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.4275549, + 0.9039894, + 0.0 + ], + "point": [ + 2.1352005, + 4.514502, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.9884963, + 0.15124504, + 0.0 + ], + "point": [ + 1.8275626, + 5.18052, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.24298029, + 0.9700312, + 0.0 + ], + "point": [ + 1.4561249, + 5.8131766, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + -0.8004796, + 0.59936, + 0.0 + ], + "point": [ + 0.8303138, + 5.430318, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.04906787, + 0.99879545, + 0.0 + ], + "point": [ + 0.24504285, + 4.987962, + 0.5 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.0, + 0.0, + 1.0 + ], + "point": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + { + "type": "plane", + "plane": { + "normal": [ + 0.0, + 0.0, + 1.0 + ], + "point": [ + 0.0, + 0.0, + 1.0 + ] + } + } + ], + "edges": [ + { + "curve": 0, + "start": 0, + "end": 1 + }, + { + "curve": 1, + "start": 1, + "end": 2 + }, + { + "curve": 2, + "start": 3, + "end": 2 + }, + { + "curve": 3, + "start": 0, + "end": 3 + }, + { + "curve": 4, + "start": 1, + "end": 4 + }, + { + "curve": 5, + "start": 4, + "end": 5 + }, + { + "curve": 6, + "start": 2, + "end": 5 + }, + { + "curve": 7, + "start": 4, + "end": 6 + }, + { + "curve": 8, + "start": 6, + "end": 7 + }, + { + "curve": 9, + "start": 5, + "end": 7 + }, + { + "curve": 10, + "start": 6, + "end": 8 + }, + { + "curve": 11, + "start": 8, + "end": 9 + }, + { + "curve": 12, + "start": 7, + "end": 9 + }, + { + "curve": 13, + "start": 8, + "end": 10 + }, + { + "curve": 14, + "start": 10, + "end": 11 + }, + { + "curve": 15, + "start": 9, + "end": 11 + }, + { + "curve": 16, + "start": 10, + "end": 12 + }, + { + "curve": 17, + "start": 12, + "end": 13 + }, + { + "curve": 18, + "start": 11, + "end": 13 + }, + { + "curve": 19, + "start": 12, + "end": 14 + }, + { + "curve": 20, + "start": 14, + "end": 15 + }, + { + "curve": 21, + "start": 13, + "end": 15 + }, + { + "curve": 22, + "start": 14, + "end": 16 + }, + { + "curve": 23, + "start": 16, + "end": 17 + }, + { + "curve": 24, + "start": 15, + "end": 17 + }, + { + "curve": 25, + "start": 16, + "end": 18 + }, + { + "curve": 26, + "start": 18, + "end": 19 + }, + { + "curve": 27, + "start": 17, + "end": 19 + }, + { + "curve": 28, + "start": 18, + "end": 20 + }, + { + "curve": 29, + "start": 20, + "end": 21 + }, + { + "curve": 30, + "start": 19, + "end": 21 + }, + { + "curve": 31, + "start": 20, + "end": 22 + }, + { + "curve": 32, + "start": 22, + "end": 23 + }, + { + "curve": 33, + "start": 21, + "end": 23 + }, + { + "curve": 34, + "start": 22, + "end": 24 + }, + { + "curve": 35, + "start": 24, + "end": 25 + }, + { + "curve": 36, + "start": 23, + "end": 25 + }, + { + "curve": 37, + "start": 24, + "end": 26 + }, + { + "curve": 38, + "start": 26, + "end": 27 + }, + { + "curve": 39, + "start": 25, + "end": 27 + }, + { + "curve": 40, + "start": 26, + "end": 28 + }, + { + "curve": 41, + "start": 28, + "end": 29 + }, + { + "curve": 42, + "start": 27, + "end": 29 + }, + { + "curve": 43, + "start": 28, + "end": 30 + }, + { + "curve": 44, + "start": 30, + "end": 31 + }, + { + "curve": 45, + "start": 29, + "end": 31 + }, + { + "curve": 46, + "start": 30, + "end": 32 + }, + { + "curve": 47, + "start": 32, + "end": 33 + }, + { + "curve": 48, + "start": 31, + "end": 33 + }, + { + "curve": 49, + "start": 32, + "end": 34 + }, + { + "curve": 50, + "start": 34, + "end": 35 + }, + { + "curve": 51, + "start": 33, + "end": 35 + }, + { + "curve": 52, + "start": 34, + "end": 36 + }, + { + "curve": 53, + "start": 36, + "end": 37 + }, + { + "curve": 54, + "start": 35, + "end": 37 + }, + { + "curve": 55, + "start": 36, + "end": 38 + }, + { + "curve": 56, + "start": 38, + "end": 39 + }, + { + "curve": 57, + "start": 37, + "end": 39 + }, + { + "curve": 58, + "start": 38, + "end": 40 + }, + { + "curve": 59, + "start": 40, + "end": 41 + }, + { + "curve": 60, + "start": 39, + "end": 41 + }, + { + "curve": 61, + "start": 40, + "end": 42 + }, + { + "curve": 62, + "start": 42, + "end": 43 + }, + { + "curve": 63, + "start": 41, + "end": 43 + }, + { + "curve": 64, + "start": 42, + "end": 44 + }, + { + "curve": 65, + "start": 44, + "end": 45 + }, + { + "curve": 66, + "start": 43, + "end": 45 + }, + { + "curve": 67, + "start": 44, + "end": 46 + }, + { + "curve": 68, + "start": 46, + "end": 47 + }, + { + "curve": 69, + "start": 45, + "end": 47 + }, + { + "curve": 70, + "start": 46, + "end": 48 + }, + { + "curve": 71, + "start": 48, + "end": 49 + }, + { + "curve": 72, + "start": 47, + "end": 49 + }, + { + "curve": 73, + "start": 48, + "end": 50 + }, + { + "curve": 74, + "start": 50, + "end": 51 + }, + { + "curve": 75, + "start": 49, + "end": 51 + }, + { + "curve": 76, + "start": 50, + "end": 52 + }, + { + "curve": 77, + "start": 52, + "end": 53 + }, + { + "curve": 78, + "start": 51, + "end": 53 + }, + { + "curve": 79, + "start": 52, + "end": 54 + }, + { + "curve": 80, + "start": 54, + "end": 55 + }, + { + "curve": 81, + "start": 53, + "end": 55 + }, + { + "curve": 82, + "start": 54, + "end": 56 + }, + { + "curve": 83, + "start": 56, + "end": 57 + }, + { + "curve": 84, + "start": 55, + "end": 57 + }, + { + "curve": 85, + "start": 56, + "end": 58 + }, + { + "curve": 86, + "start": 58, + "end": 59 + }, + { + "curve": 87, + "start": 57, + "end": 59 + }, + { + "curve": 88, + "start": 58, + "end": 60 + }, + { + "curve": 89, + "start": 60, + "end": 61 + }, + { + "curve": 90, + "start": 59, + "end": 61 + }, + { + "curve": 91, + "start": 60, + "end": 62 + }, + { + "curve": 92, + "start": 62, + "end": 63 + }, + { + "curve": 93, + "start": 61, + "end": 63 + }, + { + "curve": 94, + "start": 62, + "end": 64 + }, + { + "curve": 95, + "start": 64, + "end": 65 + }, + { + "curve": 96, + "start": 63, + "end": 65 + }, + { + "curve": 97, + "start": 64, + "end": 66 + }, + { + "curve": 98, + "start": 66, + "end": 67 + }, + { + "curve": 99, + "start": 65, + "end": 67 + }, + { + "curve": 100, + "start": 66, + "end": 68 + }, + { + "curve": 101, + "start": 68, + "end": 69 + }, + { + "curve": 102, + "start": 67, + "end": 69 + }, + { + "curve": 103, + "start": 68, + "end": 70 + }, + { + "curve": 104, + "start": 70, + "end": 71 + }, + { + "curve": 105, + "start": 69, + "end": 71 + }, + { + "curve": 106, + "start": 70, + "end": 72 + }, + { + "curve": 107, + "start": 72, + "end": 73 + }, + { + "curve": 108, + "start": 71, + "end": 73 + }, + { + "curve": 109, + "start": 72, + "end": 74 + }, + { + "curve": 110, + "start": 74, + "end": 75 + }, + { + "curve": 111, + "start": 73, + "end": 75 + }, + { + "curve": 112, + "start": 74, + "end": 76 + }, + { + "curve": 113, + "start": 76, + "end": 77 + }, + { + "curve": 114, + "start": 75, + "end": 77 + }, + { + "curve": 115, + "start": 76, + "end": 78 + }, + { + "curve": 116, + "start": 78, + "end": 79 + }, + { + "curve": 117, + "start": 77, + "end": 79 + }, + { + "curve": 118, + "start": 78, + "end": 80 + }, + { + "curve": 119, + "start": 80, + "end": 81 + }, + { + "curve": 120, + "start": 79, + "end": 81 + }, + { + "curve": 121, + "start": 80, + "end": 82 + }, + { + "curve": 122, + "start": 82, + "end": 83 + }, + { + "curve": 123, + "start": 81, + "end": 83 + }, + { + "curve": 124, + "start": 82, + "end": 84 + }, + { + "curve": 125, + "start": 84, + "end": 85 + }, + { + "curve": 126, + "start": 83, + "end": 85 + }, + { + "curve": 127, + "start": 84, + "end": 86 + }, + { + "curve": 128, + "start": 86, + "end": 87 + }, + { + "curve": 129, + "start": 85, + "end": 87 + }, + { + "curve": 130, + "start": 86, + "end": 88 + }, + { + "curve": 131, + "start": 88, + "end": 89 + }, + { + "curve": 132, + "start": 87, + "end": 89 + }, + { + "curve": 133, + "start": 88, + "end": 90 + }, + { + "curve": 134, + "start": 90, + "end": 91 + }, + { + "curve": 135, + "start": 89, + "end": 91 + }, + { + "curve": 136, + "start": 90, + "end": 92 + }, + { + "curve": 137, + "start": 92, + "end": 93 + }, + { + "curve": 138, + "start": 91, + "end": 93 + }, + { + "curve": 139, + "start": 92, + "end": 94 + }, + { + "curve": 140, + "start": 94, + "end": 95 + }, + { + "curve": 141, + "start": 93, + "end": 95 + }, + { + "curve": 142, + "start": 94, + "end": 96 + }, + { + "curve": 143, + "start": 96, + "end": 97 + }, + { + "curve": 144, + "start": 95, + "end": 97 + }, + { + "curve": 145, + "start": 96, + "end": 98 + }, + { + "curve": 146, + "start": 98, + "end": 99 + }, + { + "curve": 147, + "start": 97, + "end": 99 + }, + { + "curve": 148, + "start": 98, + "end": 100 + }, + { + "curve": 149, + "start": 100, + "end": 101 + }, + { + "curve": 150, + "start": 99, + "end": 101 + }, + { + "curve": 151, + "start": 100, + "end": 102 + }, + { + "curve": 152, + "start": 102, + "end": 103 + }, + { + "curve": 153, + "start": 101, + "end": 103 + }, + { + "curve": 154, + "start": 102, + "end": 104 + }, + { + "curve": 155, + "start": 104, + "end": 105 + }, + { + "curve": 156, + "start": 103, + "end": 105 + }, + { + "curve": 157, + "start": 104, + "end": 106 + }, + { + "curve": 158, + "start": 106, + "end": 107 + }, + { + "curve": 159, + "start": 105, + "end": 107 + }, + { + "curve": 160, + "start": 106, + "end": 108 + }, + { + "curve": 161, + "start": 108, + "end": 109 + }, + { + "curve": 162, + "start": 107, + "end": 109 + }, + { + "curve": 163, + "start": 108, + "end": 110 + }, + { + "curve": 164, + "start": 110, + "end": 111 + }, + { + "curve": 165, + "start": 109, + "end": 111 + }, + { + "curve": 166, + "start": 110, + "end": 112 + }, + { + "curve": 167, + "start": 112, + "end": 113 + }, + { + "curve": 168, + "start": 111, + "end": 113 + }, + { + "curve": 169, + "start": 112, + "end": 114 + }, + { + "curve": 170, + "start": 114, + "end": 115 + }, + { + "curve": 171, + "start": 113, + "end": 115 + }, + { + "curve": 172, + "start": 114, + "end": 116 + }, + { + "curve": 173, + "start": 116, + "end": 117 + }, + { + "curve": 174, + "start": 115, + "end": 117 + }, + { + "curve": 175, + "start": 116, + "end": 118 + }, + { + "curve": 176, + "start": 118, + "end": 119 + }, + { + "curve": 177, + "start": 117, + "end": 119 + }, + { + "curve": 178, + "start": 118, + "end": 120 + }, + { + "curve": 179, + "start": 120, + "end": 121 + }, + { + "curve": 180, + "start": 119, + "end": 121 + }, + { + "curve": 181, + "start": 120, + "end": 122 + }, + { + "curve": 182, + "start": 122, + "end": 123 + }, + { + "curve": 183, + "start": 121, + "end": 123 + }, + { + "curve": 184, + "start": 122, + "end": 124 + }, + { + "curve": 185, + "start": 124, + "end": 125 + }, + { + "curve": 186, + "start": 123, + "end": 125 + }, + { + "curve": 187, + "start": 124, + "end": 126 + }, + { + "curve": 188, + "start": 126, + "end": 127 + }, + { + "curve": 189, + "start": 125, + "end": 127 + }, + { + "curve": 190, + "start": 126, + "end": 0 + }, + { + "curve": 191, + "start": 127, + "end": 3 + } + ], + "edgeVertices": [ + [ + 0.0, + 5.0, + 0.0 + ], + [ + -0.5881028, + 5.9711084, + 0.0 + ], + [ + -0.5881028, + 5.9711084, + 1.0 + ], + [ + 0.0, + 5.0, + 1.0 + ], + [ + -1.1705419, + 5.8847117, + 0.0 + ], + [ + -1.1705419, + 5.8847117, + 1.0 + ], + [ + -1.4514234, + 4.784702, + 0.0 + ], + [ + -1.4514234, + 4.784702, + 1.0 + ], + [ + -1.9134172, + 4.6193976, + 0.0 + ], + [ + -1.9134172, + 4.6193976, + 1.0 + ], + [ + -2.8283803, + 5.2915277, + 0.0 + ], + [ + -2.8283803, + 5.2915277, + 1.0 + ], + [ + -3.3334215, + 4.9888177, + 0.0 + ], + [ + -3.3334215, + 4.9888177, + 1.0 + ], + [ + -3.1719663, + 3.8650522, + 0.0 + ], + [ + -3.1719663, + 3.8650522, + 1.0 + ], + [ + -3.535534, + 3.535534, + 0.0 + ], + [ + -3.535534, + 3.535534, + 1.0 + ], + [ + -4.638063, + 3.8063598, + 0.0 + ], + [ + -4.638063, + 3.8063598, + 1.0 + ], + [ + -4.9888177, + 3.3334215, + 0.0 + ], + [ + -4.9888177, + 3.3334215, + 1.0 + ], + [ + -4.4096065, + 2.3569837, + 0.0 + ], + [ + -4.4096065, + 2.3569837, + 1.0 + ], + [ + -4.6193976, + 1.9134172, + 0.0 + ], + [ + -4.6193976, + 1.9134172, + 1.0 + ], + [ + -5.741642, + 1.741708, + 0.0 + ], + [ + -5.741642, + 1.741708, + 1.0 + ], + [ + -5.8847117, + 1.1705419, + 0.0 + ], + [ + -5.8847117, + 1.1705419, + 1.0 + ], + [ + -4.9759235, + 0.4900857, + 0.0 + ], + [ + -4.9759235, + 0.4900857, + 1.0 + ], + [ + -5.0, + -1.00000674e-10, + 0.0 + ], + [ + -5.0, + -1.00000674e-10, + 1.0 + ], + [ + -5.9711084, + -0.5881028, + 0.0 + ], + [ + -5.9711084, + -0.5881028, + 1.0 + ], + [ + -5.8847117, + -1.1705419, + 0.0 + ], + [ + -5.8847117, + -1.1705419, + 1.0 + ], + [ + -4.784702, + -1.4514234, + 0.0 + ], + [ + -4.784702, + -1.4514234, + 1.0 + ], + [ + -4.6193976, + -1.9134172, + 0.0 + ], + [ + -4.6193976, + -1.9134172, + 1.0 + ], + [ + -5.2915277, + -2.8283803, + 0.0 + ], + [ + -5.2915277, + -2.8283803, + 1.0 + ], + [ + -4.9888177, + -3.3334215, + 0.0 + ], + [ + -4.9888177, + -3.3334215, + 1.0 + ], + [ + -3.8650522, + -3.1719663, + 0.0 + ], + [ + -3.8650522, + -3.1719663, + 1.0 + ], + [ + -3.535534, + -3.535534, + 0.0 + ], + [ + -3.535534, + -3.535534, + 1.0 + ], + [ + -3.8063598, + -4.638063, + 0.0 + ], + [ + -3.8063598, + -4.638063, + 1.0 + ], + [ + -3.3334215, + -4.9888177, + 0.0 + ], + [ + -3.3334215, + -4.9888177, + 1.0 + ], + [ + -2.3569837, + -4.4096065, + 0.0 + ], + [ + -2.3569837, + -4.4096065, + 1.0 + ], + [ + -1.9134172, + -4.6193976, + 0.0 + ], + [ + -1.9134172, + -4.6193976, + 1.0 + ], + [ + -1.741708, + -5.741642, + 0.0 + ], + [ + -1.741708, + -5.741642, + 1.0 + ], + [ + -1.1705419, + -5.8847117, + 0.0 + ], + [ + -1.1705419, + -5.8847117, + 1.0 + ], + [ + -0.4900857, + -4.9759235, + 0.0 + ], + [ + -0.4900857, + -4.9759235, + 1.0 + ], + [ + 3.000007e-10, + -5.0, + 0.0 + ], + [ + 3.000007e-10, + -5.0, + 1.0 + ], + [ + 0.5881028, + -5.9711084, + 0.0 + ], + [ + 0.5881028, + -5.9711084, + 1.0 + ], + [ + 1.1705419, + -5.8847117, + 0.0 + ], + [ + 1.1705419, + -5.8847117, + 1.0 + ], + [ + 1.4514234, + -4.784702, + 0.0 + ], + [ + 1.4514234, + -4.784702, + 1.0 + ], + [ + 1.9134172, + -4.6193976, + 0.0 + ], + [ + 1.9134172, + -4.6193976, + 1.0 + ], + [ + 2.8283803, + -5.2915277, + 0.0 + ], + [ + 2.8283803, + -5.2915277, + 1.0 + ], + [ + 3.3334215, + -4.9888177, + 0.0 + ], + [ + 3.3334215, + -4.9888177, + 1.0 + ], + [ + 3.1719663, + -3.8650522, + 0.0 + ], + [ + 3.1719663, + -3.8650522, + 1.0 + ], + [ + 3.535534, + -3.535534, + 0.0 + ], + [ + 3.535534, + -3.535534, + 1.0 + ], + [ + 4.638063, + -3.8063598, + 0.0 + ], + [ + 4.638063, + -3.8063598, + 1.0 + ], + [ + 4.9888177, + -3.3334215, + 0.0 + ], + [ + 4.9888177, + -3.3334215, + 1.0 + ], + [ + 4.4096065, + -2.3569837, + 0.0 + ], + [ + 4.4096065, + -2.3569837, + 1.0 + ], + [ + 4.6193976, + -1.9134172, + 0.0 + ], + [ + 4.6193976, + -1.9134172, + 1.0 + ], + [ + 5.741642, + -1.741708, + 0.0 + ], + [ + 5.741642, + -1.741708, + 1.0 + ], + [ + 5.8847117, + -1.1705419, + 0.0 + ], + [ + 5.8847117, + -1.1705419, + 1.0 + ], + [ + 4.9759235, + -0.4900857, + 0.0 + ], + [ + 4.9759235, + -0.4900857, + 1.0 + ], + [ + 5.0, + 1.999998e-10, + 0.0 + ], + [ + 5.0, + 1.999998e-10, + 1.0 + ], + [ + 5.9711084, + 0.5881028, + 0.0 + ], + [ + 5.9711084, + 0.5881028, + 1.0 + ], + [ + 5.8847117, + 1.1705419, + 0.0 + ], + [ + 5.8847117, + 1.1705419, + 1.0 + ], + [ + 4.784702, + 1.4514234, + 0.0 + ], + [ + 4.784702, + 1.4514234, + 1.0 + ], + [ + 4.6193976, + 1.9134172, + 0.0 + ], + [ + 4.6193976, + 1.9134172, + 1.0 + ], + [ + 5.2915277, + 2.8283803, + 0.0 + ], + [ + 5.2915277, + 2.8283803, + 1.0 + ], + [ + 4.9888177, + 3.3334215, + 0.0 + ], + [ + 4.9888177, + 3.3334215, + 1.0 + ], + [ + 3.8650522, + 3.1719663, + 0.0 + ], + [ + 3.8650522, + 3.1719663, + 1.0 + ], + [ + 3.535534, + 3.535534, + 0.0 + ], + [ + 3.535534, + 3.535534, + 1.0 + ], + [ + 3.8063598, + 4.638063, + 0.0 + ], + [ + 3.8063598, + 4.638063, + 1.0 + ], + [ + 3.3334215, + 4.9888177, + 0.0 + ], + [ + 3.3334215, + 4.9888177, + 1.0 + ], + [ + 2.3569837, + 4.4096065, + 0.0 + ], + [ + 2.3569837, + 4.4096065, + 1.0 + ], + [ + 1.9134172, + 4.6193976, + 0.0 + ], + [ + 1.9134172, + 4.6193976, + 1.0 + ], + [ + 1.741708, + 5.741642, + 0.0 + ], + [ + 1.741708, + 5.741642, + 1.0 + ], + [ + 1.1705419, + 5.8847117, + 0.0 + ], + [ + 1.1705419, + 5.8847117, + 1.0 + ], + [ + 0.4900857, + 4.9759235, + 0.0 + ], + [ + 0.4900857, + 4.9759235, + 1.0 + ] + ] + } + }, + "extensionsUsed": [ + "KITTYCAD_boundary_representation" + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 2 + } + }, + { + "attributes": { + "POSITION": 3, + "NORMAL": 4, + "TEXCOORD_0": 5 + } + }, + { + "attributes": { + "POSITION": 6, + "NORMAL": 7, + "TEXCOORD_0": 8 + } + }, + { + "attributes": { + "POSITION": 9, + "NORMAL": 10, + "TEXCOORD_0": 11 + } + }, + { + "attributes": { + "POSITION": 12, + "NORMAL": 13, + "TEXCOORD_0": 14 + } + }, + { + "attributes": { + "POSITION": 15, + "NORMAL": 16, + "TEXCOORD_0": 17 + } + }, + { + "attributes": { + "POSITION": 18, + "NORMAL": 19, + "TEXCOORD_0": 20 + } + }, + { + "attributes": { + "POSITION": 21, + "NORMAL": 22, + "TEXCOORD_0": 23 + } + }, + { + "attributes": { + "POSITION": 24, + "NORMAL": 25, + "TEXCOORD_0": 26 + } + }, + { + "attributes": { + "POSITION": 27, + "NORMAL": 28, + "TEXCOORD_0": 29 + } + }, + { + "attributes": { + "POSITION": 30, + "NORMAL": 31, + "TEXCOORD_0": 32 + } + }, + { + "attributes": { + "POSITION": 33, + "NORMAL": 34, + "TEXCOORD_0": 35 + } + }, + { + "attributes": { + "POSITION": 36, + "NORMAL": 37, + "TEXCOORD_0": 38 + } + }, + { + "attributes": { + "POSITION": 39, + "NORMAL": 40, + "TEXCOORD_0": 41 + } + }, + { + "attributes": { + "POSITION": 42, + "NORMAL": 43, + "TEXCOORD_0": 44 + } + }, + { + "attributes": { + "POSITION": 45, + "NORMAL": 46, + "TEXCOORD_0": 47 + } + }, + { + "attributes": { + "POSITION": 48, + "NORMAL": 49, + "TEXCOORD_0": 50 + } + }, + { + "attributes": { + "POSITION": 51, + "NORMAL": 52, + "TEXCOORD_0": 53 + } + }, + { + "attributes": { + "POSITION": 54, + "NORMAL": 55, + "TEXCOORD_0": 56 + } + }, + { + "attributes": { + "POSITION": 57, + "NORMAL": 58, + "TEXCOORD_0": 59 + } + }, + { + "attributes": { + "POSITION": 60, + "NORMAL": 61, + "TEXCOORD_0": 62 + } + }, + { + "attributes": { + "POSITION": 63, + "NORMAL": 64, + "TEXCOORD_0": 65 + } + }, + { + "attributes": { + "POSITION": 66, + "NORMAL": 67, + "TEXCOORD_0": 68 + } + }, + { + "attributes": { + "POSITION": 69, + "NORMAL": 70, + "TEXCOORD_0": 71 + } + }, + { + "attributes": { + "POSITION": 72, + "NORMAL": 73, + "TEXCOORD_0": 74 + } + }, + { + "attributes": { + "POSITION": 75, + "NORMAL": 76, + "TEXCOORD_0": 77 + } + }, + { + "attributes": { + "POSITION": 78, + "NORMAL": 79, + "TEXCOORD_0": 80 + } + }, + { + "attributes": { + "POSITION": 81, + "NORMAL": 82, + "TEXCOORD_0": 83 + } + }, + { + "attributes": { + "POSITION": 84, + "NORMAL": 85, + "TEXCOORD_0": 86 + } + }, + { + "attributes": { + "POSITION": 87, + "NORMAL": 88, + "TEXCOORD_0": 89 + } + }, + { + "attributes": { + "POSITION": 90, + "NORMAL": 91, + "TEXCOORD_0": 92 + } + }, + { + "attributes": { + "POSITION": 93, + "NORMAL": 94, + "TEXCOORD_0": 95 + } + }, + { + "attributes": { + "POSITION": 96, + "NORMAL": 97, + "TEXCOORD_0": 98 + } + }, + { + "attributes": { + "POSITION": 99, + "NORMAL": 100, + "TEXCOORD_0": 101 + } + }, + { + "attributes": { + "POSITION": 102, + "NORMAL": 103, + "TEXCOORD_0": 104 + } + }, + { + "attributes": { + "POSITION": 105, + "NORMAL": 106, + "TEXCOORD_0": 107 + } + }, + { + "attributes": { + "POSITION": 108, + "NORMAL": 109, + "TEXCOORD_0": 110 + } + }, + { + "attributes": { + "POSITION": 111, + "NORMAL": 112, + "TEXCOORD_0": 113 + } + }, + { + "attributes": { + "POSITION": 114, + "NORMAL": 115, + "TEXCOORD_0": 116 + } + }, + { + "attributes": { + "POSITION": 117, + "NORMAL": 118, + "TEXCOORD_0": 119 + } + }, + { + "attributes": { + "POSITION": 120, + "NORMAL": 121, + "TEXCOORD_0": 122 + } + }, + { + "attributes": { + "POSITION": 123, + "NORMAL": 124, + "TEXCOORD_0": 125 + } + }, + { + "attributes": { + "POSITION": 126, + "NORMAL": 127, + "TEXCOORD_0": 128 + } + }, + { + "attributes": { + "POSITION": 129, + "NORMAL": 130, + "TEXCOORD_0": 131 + } + }, + { + "attributes": { + "POSITION": 132, + "NORMAL": 133, + "TEXCOORD_0": 134 + } + }, + { + "attributes": { + "POSITION": 135, + "NORMAL": 136, + "TEXCOORD_0": 137 + } + }, + { + "attributes": { + "POSITION": 138, + "NORMAL": 139, + "TEXCOORD_0": 140 + } + }, + { + "attributes": { + "POSITION": 141, + "NORMAL": 142, + "TEXCOORD_0": 143 + } + }, + { + "attributes": { + "POSITION": 144, + "NORMAL": 145, + "TEXCOORD_0": 146 + } + }, + { + "attributes": { + "POSITION": 147, + "NORMAL": 148, + "TEXCOORD_0": 149 + } + }, + { + "attributes": { + "POSITION": 150, + "NORMAL": 151, + "TEXCOORD_0": 152 + } + }, + { + "attributes": { + "POSITION": 153, + "NORMAL": 154, + "TEXCOORD_0": 155 + } + }, + { + "attributes": { + "POSITION": 156, + "NORMAL": 157, + "TEXCOORD_0": 158 + } + }, + { + "attributes": { + "POSITION": 159, + "NORMAL": 160, + "TEXCOORD_0": 161 + } + }, + { + "attributes": { + "POSITION": 162, + "NORMAL": 163, + "TEXCOORD_0": 164 + } + }, + { + "attributes": { + "POSITION": 165, + "NORMAL": 166, + "TEXCOORD_0": 167 + } + }, + { + "attributes": { + "POSITION": 168, + "NORMAL": 169, + "TEXCOORD_0": 170 + } + }, + { + "attributes": { + "POSITION": 171, + "NORMAL": 172, + "TEXCOORD_0": 173 + } + }, + { + "attributes": { + "POSITION": 174, + "NORMAL": 175, + "TEXCOORD_0": 176 + } + }, + { + "attributes": { + "POSITION": 177, + "NORMAL": 178, + "TEXCOORD_0": 179 + } + }, + { + "attributes": { + "POSITION": 180, + "NORMAL": 181, + "TEXCOORD_0": 182 + } + }, + { + "attributes": { + "POSITION": 183, + "NORMAL": 184, + "TEXCOORD_0": 185 + } + }, + { + "attributes": { + "POSITION": 186, + "NORMAL": 187, + "TEXCOORD_0": 188 + } + }, + { + "attributes": { + "POSITION": 189, + "NORMAL": 190, + "TEXCOORD_0": 191 + } + }, + { + "attributes": { + "POSITION": 192, + "NORMAL": 193, + "TEXCOORD_0": 194 + } + }, + { + "attributes": { + "POSITION": 195, + "NORMAL": 196, + "TEXCOORD_0": 197 + } + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ] + }, + { + "children": [ + 2 + ] + }, + { + "extensions": { + "KITTYCAD_boundary_representation": { + "brep": 0 + } + }, + "mesh": 0 + } + ], + "scenes": [ + { + "name": "output", + "nodes": [ + 0 + ] + } + ] +} \ No newline at end of file From 3c6bc6fb764ef4842358f01ac8206e697e2e0798 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Fri, 25 Aug 2023 17:55:25 -0700 Subject: [PATCH 04/22] updates Signed-off-by: Jess Frazelle --- src/context.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/context.rs b/src/context.rs index 838d007d..0162d2cc 100644 --- a/src/context.rs +++ b/src/context.rs @@ -102,7 +102,7 @@ impl Context<'_> { output_dir: &std::path::Path, format: &kittycad::types::FileExportFormat, ) -> Result<()> { - let client = self.api_client("http://system76-pc:8080")?; + let client = self.api_client(hostname)?; let ws = client .modeling() .commands_ws(None, None, None, None, Some(false)) From 8305d6c05d7163f32048966009c793ec4d0560d9 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Fri, 25 Aug 2023 18:25:22 -0700 Subject: [PATCH 05/22] working Signed-off-by: Jess Frazelle --- src/cmd_kcl.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/cmd_kcl.rs b/src/cmd_kcl.rs index b714604a..330ee703 100644 --- a/src/cmd_kcl.rs +++ b/src/cmd_kcl.rs @@ -75,12 +75,6 @@ impl crate::cmd::Command for CmdKclExport { ctx.export_kcl_file("", input, &self.output_dir, &self.output_format) .await?; - // Check if we have files in our output directory. - let files = std::fs::read_dir(&self.output_dir)? - .map(|res| res.map(|e| e.path())) - .collect::, std::io::Error>>()?; - println!("files: {:?}", files); - Ok(()) } } From 0e15b728e1cccf233821ae702f66995002660458 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Mon, 28 Aug 2023 18:19:09 -0700 Subject: [PATCH 06/22] fix path Signed-off-by: Jess Frazelle --- Cargo.toml | 2 +- src/context.rs | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5bbc20e7..6b647584 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ git_rev = "0.1.0" heck = "0.4.0" http = "0.2.6" itertools = "0.11.0" -kcl = { path = "../modeling-app/src/wasm-lib/kcl" } +kcl-lib = { path = "../modeling-app/src/wasm-lib/kcl" } kittycad = { version = "0.2.20", features = ["clap", "tabled", "requests", "retry"] } log = "0.4.20" regex = "1" diff --git a/src/context.rs b/src/context.rs index 0162d2cc..2e1422cd 100644 --- a/src/context.rs +++ b/src/context.rs @@ -108,15 +108,15 @@ impl Context<'_> { .commands_ws(None, None, None, None, Some(false)) .await?; - let tokens = kcl::tokeniser::lexer(code); - let program = kcl::parser::abstract_syntax_tree(&tokens)?; - let mut mem: kcl::executor::ProgramMemory = Default::default(); - let mut engine = kcl::engine::EngineConnection::new(ws, output_dir.display().to_string().as_str()).await?; - let _ = kcl::executor::execute(program, &mut mem, kcl::executor::BodyType::Root, &mut engine)?; + let tokens = kcl_lib::tokeniser::lexer(code); + let program = kcl_lib::parser::abstract_syntax_tree(&tokens)?; + let mut mem: kcl_lib::executor::ProgramMemory = Default::default(); + let mut engine = kcl_lib::engine::EngineConnection::new(ws, output_dir.display().to_string().as_str()).await?; + let _ = kcl_lib::executor::execute(program, &mut mem, kcl_lib::executor::BodyType::Root, &mut engine)?; // Send an export request to the engine. engine.send_modeling_cmd( uuid::Uuid::new_v4(), - kcl::executor::SourceRange::default(), + kcl_lib::executor::SourceRange::default(), kittycad::types::ModelingCmd::Export { entity_ids: vec![], format: get_output_format(format), From aef806d13f111d6ff428df7bd5a6b920923e69dd Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Mon, 28 Aug 2023 18:26:57 -0700 Subject: [PATCH 07/22] updates Signed-off-by: Jess Frazelle --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 6b647584..5a7beaa3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ git_rev = "0.1.0" heck = "0.4.0" http = "0.2.6" itertools = "0.11.0" -kcl-lib = { path = "../modeling-app/src/wasm-lib/kcl" } +kcl-lib = { version = "0.1.0" } kittycad = { version = "0.2.20", features = ["clap", "tabled", "requests", "retry"] } log = "0.4.20" regex = "1" From 7671bddff8bc70e8b6923e8ba38c751fe226c44b Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Mon, 28 Aug 2023 18:30:42 -0700 Subject: [PATCH 08/22] bump completion Signed-off-by: Jess Frazelle --- Cargo.toml | 2 +- src/cmd_completion.rs | 2 +- src/tests.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5a7beaa3..33fbe7c4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ atty = "0.2.14" chrono = { version = "0.4", default-features = false, features = ["serde"] } chrono-humanize = "0.2.3" clap = { version = "4.4.1", features = ["cargo", "derive", "env", "unicode", "help", "wrap_help"] } -clap_complete = { version = "4.2.4" } +clap_complete = { version = "4.4.0" } cli-macro = { path = "cli-macro" } colored_json = "3.2.0" data-encoding = "2" diff --git a/src/cmd_completion.rs b/src/cmd_completion.rs index 77e8507f..041caec2 100644 --- a/src/cmd_completion.rs +++ b/src/cmd_completion.rs @@ -92,7 +92,7 @@ mod test { TestItem { name: "bash completion".to_string(), input: "bash".to_string(), - want_out: "complete -F _kittycad -o bashdefault -o default kittycad".to_string(), + want_out: "complete -F _kittycad -o nosort -o bashdefault -o default kittycad".to_string(), want_err: "".to_string(), }, TestItem { diff --git a/src/tests.rs b/src/tests.rs index de040478..253a8224 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -52,7 +52,7 @@ async fn test_main(ctx: &mut MainContext) { TestItem { name: "existing command".to_string(), args: vec!["kittycad".to_string(), "completion".to_string()], - want_out: "complete -F _kittycad -o bashdefault -o default kittycad\n".to_string(), + want_out: "complete -F _kittycad -o nosort -o bashdefault -o default kittycad\n".to_string(), want_err: "".to_string(), want_code: 0, ..Default::default() From 04834afb545ecab2693461a3c615716293b4c27a Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 12:20:01 -0700 Subject: [PATCH 09/22] fix cargo toml Signed-off-by: Jess Frazelle --- Cargo.toml | 11 ++++++----- src/main.rs | 2 ++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 33fbe7c4..d9dcd18a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,6 @@ name = "kittycad" version = "0.2.0" edition = "2021" build = "build.rs" - # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] @@ -16,6 +15,7 @@ chrono-humanize = "0.2.3" clap = { version = "4.4.1", features = ["cargo", "derive", "env", "unicode", "help", "wrap_help"] } clap_complete = { version = "4.4.0" } cli-macro = { path = "cli-macro" } +colored = "2.0.4" colored_json = "3.2.0" data-encoding = "2" dialoguer = "0.10.2" @@ -27,13 +27,13 @@ itertools = "0.11.0" kcl-lib = { version = "0.1.0" } kittycad = { version = "0.2.20", features = ["clap", "tabled", "requests", "retry"] } log = "0.4.20" -regex = "1" num-traits = "0.2.14" -open = "5.0.0" oauth2 = "4.2.3" +open = "5.0.0" parse-display = "0.8.2" pulldown-cmark = "0.9.2" pulldown-cmark-to-cmark = "11.0.0" +regex = "1" reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls"] } ring = "0.16.20" #roff = { version = "0.2.1" } @@ -48,16 +48,17 @@ slog-async = "2" slog-scope = "4" slog-stdlog = "4" slog-term = "2" -tabwriter = "1.3.0" tabled = { version = "0.14.0", features = ["color"] } +tabwriter = "1.3.0" termbg = "0.4.0" -terminal_size = "0.2.1" terminal-spinners = "0.3.2" +terminal_size = "0.2.1" thiserror = "1" tokio = { version = "1", features = ["full"] } toml = "0.7.6" toml_edit = "0.19.14" url = "2.4.1" +unicode-segmentation = "1.10.1" uuid = { version = "1.1", features = ["serde", "v4"] } version-compare = "0.1.0" diff --git a/src/main.rs b/src/main.rs index 1be67174..f1fd3d72 100644 --- a/src/main.rs +++ b/src/main.rs @@ -35,6 +35,8 @@ pub mod cmd_update; pub mod cmd_user; /// The version command. pub mod cmd_version; +/// Formatting for `kcl` errors. +pub mod kcl_error_fmt; // Use of a mod or pub mod is not actually necessary. mod built_info { From 5be5c7105226c1e2060836b1efc723ab51ee9c20 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 12:20:08 -0700 Subject: [PATCH 10/22] add file Signed-off-by: Jess Frazelle --- src/kcl_error_fmt.rs | 378 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 378 insertions(+) create mode 100644 src/kcl_error_fmt.rs diff --git a/src/kcl_error_fmt.rs b/src/kcl_error_fmt.rs new file mode 100644 index 00000000..498e8ef5 --- /dev/null +++ b/src/kcl_error_fmt.rs @@ -0,0 +1,378 @@ +use colored::Colorize; + +use std::{ + fmt, + sync::atomic::{AtomicBool, AtomicUsize, Ordering}, +}; + +/// Separator used between the line numbering and the lines. +const SEPARATOR: &str = " | "; + +/// Ellipse used to indicated if a long line has been contextualized. +const ELLIPSE: &str = "..."; + +/// Struct for formatting the error together with the source file to give a +/// nicer output. +#[derive(Debug)] +pub struct KclError { + input: String, + message: String, + line: Option, + column: Option, + contextualize: bool, + context_lines: usize, + context_characters: usize, +} + +#[derive(Debug)] +pub enum ErrorTypes { + /// Contains [`kcl_lib::errors::KclError`]. + Kcl(kcl_lib::errors::KclError), +} + +impl std::error::Error for KclError {} + +impl fmt::Display for KclError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.format(f) + } +} + +impl From for ErrorTypes { + fn from(err: kcl_lib::errors::KclError) -> Self { + Self::Kcl(err) + } +} + +impl KclError { + /// Create a new [`KclError`] from compatible errors. See + /// [`ErrorTypes`] for more information. + pub fn new(input: String, err: impl Into) -> KclError { + let error = err.into(); + + let (message, line, column) = match error { + ErrorTypes::Kcl(e) => { + let source_range = match e { + kcl_lib::errors::KclError::Syntax(e) => e.source_ranges(), + kcl_lib::errors::KclError::Semantic(e) => e.source_ranges(), + kcl_lib::errors::KclError::Type(e) => e.source_ranges(), + kcl_lib::errors::KclError::Unimplemented(e) => e.source_ranges(), + kcl_lib::errors::KclError::Unexpected(e) => e.source_ranges(), + kcl_lib::errors::KclError::ValueAlreadyDefined(e) => e.source_ranges(), + kcl_lib::errors::KclError::UndefinedValue(e) => e.source_ranges(), + kcl_lib::errors::KclError::InvalidExpression(e) => vec![kcl_lib::executor::SourceRange([0, 0])], + kcl_lib::errors::KclError::Engine(e) => e.source_ranges(), + }; + + // Calculate the line and column of the error from the source range. + let (line, column) = if let Some(range) = source_range.first() { + let line = input[..range.start].lines().count(); + let column = input[..range.start].lines().last().map(|l| l.len()).unwrap_or_default(); + + (Some(line), Some(column)) + } else { + (None, None) + }; + (e.to_string(), line, column) + } + }; + + Self { + input, + message, + line, + column, + contextualize: CONTEXTUALIZE.load(Ordering::Relaxed), + context_lines: CONTEXT_LINES.load(Ordering::Relaxed), + context_characters: CONTEXT_CHARACTERS.load(Ordering::Relaxed), + } + } + + /// Set if the output should be contextualized or not. + /// By default contextualization is set to [`CONTEXTUALIZE_DEFAULT`]. + pub fn set_contextualize(&mut self, should_contextualize: bool) -> &mut Self { + self.contextualize = should_contextualize; + self + } + + /// Get if the output should be contextualized or not. + /// By default contextualization is set to [`CONTEXTUALIZE_DEFAULT`]. + #[must_use] + pub fn get_contextualize(&self) -> bool { + self.contextualize + } + + /// Set the amount of lines that should be shown before and after the error. + /// By default the amount of context is set to [`CONTEXT_LINES_DEFAULT`]. + pub fn set_context_lines(&mut self, amount_of_context: usize) -> &mut Self { + self.context_lines = amount_of_context; + self + } + + /// Get the amount of lines that should be shown before and after the error. + #[must_use] + pub fn get_context_lines(&self) -> usize { + self.context_lines + } + + /// Set the amount of characters that should be shown before and after the + /// error. By default the amount of context is set to + /// [`CONTEXT_CHARACTERS_DEFAULT`]. + pub fn set_context_characters(&mut self, amount_of_context: usize) -> &mut Self { + self.context_characters = amount_of_context; + self + } + + /// Get the amount of characters that should be shown before and after the + /// error. Default value is [`CONTEXT_CHARACTERS_DEFAULT`]. + #[must_use] + pub fn get_context_characters(&self) -> usize { + self.context_characters + } + + fn format(&self, f: &mut fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { + // If line and column are not set we assume that we can't make a nice output + // so we will just print the original message in red and bold + if self.line.is_none() && self.column.is_none() { + return writeln!(f, "{}", self.message.red().bold()); + } + + let error_line = self.line.unwrap_or_default(); + let error_column = self.column.unwrap_or_default(); + + // Amount of lines to show before and after the error line + let context_lines = self.context_lines; + + // Skip until we are amount of context lines before the error line (context) + // plus the line with the error ( + 1) + // Saturating sub if the error is in the first few line we can't take more + // context + let skip = usize::saturating_sub(error_line, context_lines + 1); + + // Take lines before and after (context * 2) plus the line with the error ( + 1) + let take = context_lines * 2 + 1; + + // Minimize the input to only what we need so we can reuse it without + // having to iterate over the whole input again. + // Also replace tabs with two spaces + let minimized_input = self + .input + .lines() + .skip(skip) + .take(take) + .map(|line| line.replace("\t", " ")) + .collect::>(); + + // If the minimized_input is empty we can assume that the input was empty as + // well. In that case we can't make a nice output so we will just print + // the original message in red and bold + if minimized_input.is_empty() { + return writeln!(f, "{}", self.message.red().bold()); + } + + // To reduce the amount of space text takes we want to remove unnecessary + // whitespace in front of the text. + // Find the line with the least amount of whitespace in front and use + // that to remove the whitespace later. + // We basically want to find the least indented line. + // We cant just use trim as that would remove all whitespace and remove all + // indentation. + let whitespace_count = minimized_input + .iter() + .map(|line| line.chars().take_while(|s| s.is_whitespace()).count()) + .min() + .unwrap_or_default(); + + let separator = SEPARATOR.blue().bold(); + + // When we don't print the line_position we want to fill up the space not used + // by the line_position with whitespace instead + let fill_line_position = format!("{: >fill$}", "", fill = error_line.to_string().len()); + + // Want to avoid printing when we are not at the beginning of the line. For + // example anyhow will write 'Error:' in front of the output before + // printing the buffer + writeln!(f)?; + + self.input + .lines() + .into_iter() + .enumerate() + .skip(skip) + .take(take) + .map(|(index, text)| { + // Make the index start at 1 makes it nicer to work with + // Also remove unnecessary whitespace in front of text + ( + index + 1, + text.chars() + .skip(whitespace_count) + .collect::() + .replace("\t", " "), + ) + }) + .try_for_each(|(line_position, text)| { + self.format_line( + f, + line_position, + error_line, + error_column, + text, + whitespace_count, + &separator, + &fill_line_position, + ) + })?; + + Ok(()) + } + + // TODO: Maybe make another internal struct for formatting instead of having + // this list of args. + #[allow(clippy::too_many_arguments)] + fn format_line( + &self, + f: &mut fmt::Formatter<'_>, + line_position: usize, + error_line: usize, + error_column: usize, + text: String, + whitespace_count: usize, + separator: &colored::ColoredString, + fill_line_position: &str, + ) -> Result<(), std::fmt::Error> { + if line_position == error_line { + let long_line_threshold = self.context_characters * 2 + 1; + let long_line_threshold = long_line_threshold < text.len(); + + let (context_line, new_error_column, context_before, context_after) = + if self.contextualize && long_line_threshold { + let context_characters = self.context_characters; + Self::context_long_line(&text, error_column, context_characters) + } else { + (text, error_column, false, false) + }; + + Self::format_error_line( + f, + &context_line, + line_position, + separator, + context_before, + context_after, + )?; + + self.format_error_information( + f, + whitespace_count, + separator, + fill_line_position, + new_error_column, + context_before, + ) + } else if self.contextualize { + Self::format_context_line(f, &text, separator, fill_line_position) + } else { + Ok(()) + } + } + + fn format_error_line( + f: &mut fmt::Formatter<'_>, + text: &str, + line_position: usize, + separator: &colored::ColoredString, + context_before: bool, + context_after: bool, + ) -> Result<(), std::fmt::Error> { + let line_pos = line_position.to_string().blue().bold(); + + write!(f, " {}{}", line_pos, separator)?; + + if context_before { + write!(f, "{}", (ELLIPSE.blue().bold()))?; + } + + write!(f, "{}", text)?; + + if context_after { + write!(f, "{}", (ELLIPSE.blue().bold()))?; + } + + writeln!(f) + } + + fn format_error_information( + &self, + f: &mut fmt::Formatter<'_>, + whitespace_count: usize, + separator: &colored::ColoredString, + fill_line_position: &str, + error_column: usize, + context_before: bool, + ) -> Result<(), std::fmt::Error> { + let ellipse_space = if context_before { ELLIPSE.len() } else { 0 }; + + // Print whitespace until we reach the column value of the message. We also + // have to add the amount of whitespace in front of the other lines. + // If context_before is true we also need to add the space used by the ellipse + let fill_column_position = format!( + "{: >column$}^ {}", + "", + self.message, + column = error_column - whitespace_count + ellipse_space + ); + + let fill_column_position = fill_column_position.red().bold(); + + writeln!(f, " {}{}{}", fill_line_position, separator, fill_column_position,) + } + + fn format_context_line( + f: &mut fmt::Formatter<'_>, + text: &str, + separator: &colored::ColoredString, + + fill_line_position: &str, + ) -> Result<(), std::fmt::Error> { + return writeln!(f, " {}{}{}", fill_line_position, separator, text.yellow()); + } + + fn context_long_line(text: &str, error_column: usize, context_chars: usize) -> (String, usize, bool, bool) { + use unicode_segmentation::UnicodeSegmentation; + + // As we could deal with unicode we can have characters that are multiple code + // points. In that case we do not want to iterate over each code point + // (i.e. using text.chars()) we need to use graphemes instead. + let input = text.graphemes(true).collect::>(); + + // Skip until we are amount of context chars before the error column (context) + // plus the column with the error ( + 1) Saturating sub if the error is + // in the first few chars we can't take more context + let skip = usize::saturating_sub(error_column, context_chars + 1); + + // Take chars before and after (context_chars * 2) plus the column with the + // error ( + 1) + let take = context_chars * 2 + 1; + + // If we skipped any characters that means we are contextualizing before the + // error. That means that we need to print ... at the beginning of the error + // line later on in the code. + let context_before = skip != 0; + + // If the line is bigger than skipping and taking combined that means that we + // not getting the remaining text of the line after the error. That + // means that we need to print ... at the end of the error line later on + // in the code. + let context_after = skip + take < input.len(); + + let minimized_input = input.into_iter().skip(skip).take(take).collect(); + + // Error column has moved to the right as we skipped some characters so we need + // to update it. Saturating sub as the error could be at the beginning + // of the line. + let new_error_column = usize::saturating_sub(error_column, skip); + + (minimized_input, new_error_column, context_before, context_after) + } +} From be3203b9b6f96afe617605631a18152f0aa1aec2 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 12:24:55 -0700 Subject: [PATCH 11/22] fixups Signed-off-by: Jess Frazelle --- src/kcl_error_fmt.rs | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/kcl_error_fmt.rs b/src/kcl_error_fmt.rs index 498e8ef5..84e62b50 100644 --- a/src/kcl_error_fmt.rs +++ b/src/kcl_error_fmt.rs @@ -1,9 +1,6 @@ -use colored::Colorize; +use std::fmt; -use std::{ - fmt, - sync::atomic::{AtomicBool, AtomicUsize, Ordering}, -}; +use colored::Colorize; /// Separator used between the line numbering and the lines. const SEPARATOR: &str = " | "; @@ -52,22 +49,22 @@ impl KclError { let (message, line, column) = match error { ErrorTypes::Kcl(e) => { - let source_range = match e { - kcl_lib::errors::KclError::Syntax(e) => e.source_ranges(), - kcl_lib::errors::KclError::Semantic(e) => e.source_ranges(), - kcl_lib::errors::KclError::Type(e) => e.source_ranges(), - kcl_lib::errors::KclError::Unimplemented(e) => e.source_ranges(), - kcl_lib::errors::KclError::Unexpected(e) => e.source_ranges(), - kcl_lib::errors::KclError::ValueAlreadyDefined(e) => e.source_ranges(), - kcl_lib::errors::KclError::UndefinedValue(e) => e.source_ranges(), - kcl_lib::errors::KclError::InvalidExpression(e) => vec![kcl_lib::executor::SourceRange([0, 0])], - kcl_lib::errors::KclError::Engine(e) => e.source_ranges(), + let source_range = match &e { + kcl_lib::errors::KclError::Syntax(e) => e.source_ranges.clone(), + kcl_lib::errors::KclError::Semantic(e) => e.source_ranges.clone(), + kcl_lib::errors::KclError::Type(e) => e.source_ranges.clone(), + kcl_lib::errors::KclError::Unimplemented(e) => e.source_ranges.clone(), + kcl_lib::errors::KclError::Unexpected(e) => e.source_ranges.clone(), + kcl_lib::errors::KclError::ValueAlreadyDefined(e) => e.source_ranges.clone(), + kcl_lib::errors::KclError::UndefinedValue(e) => e.source_ranges.clone(), + kcl_lib::errors::KclError::InvalidExpression(_e) => vec![kcl_lib::executor::SourceRange([0, 0])], + kcl_lib::errors::KclError::Engine(e) => e.source_ranges.clone(), }; // Calculate the line and column of the error from the source range. let (line, column) = if let Some(range) = source_range.first() { - let line = input[..range.start].lines().count(); - let column = input[..range.start].lines().last().map(|l| l.len()).unwrap_or_default(); + let line = input[..range.0[0]].lines().count(); + let column = input[..range.0[0]].lines().last().map(|l| l.len()).unwrap_or_default(); (Some(line), Some(column)) } else { @@ -82,9 +79,13 @@ impl KclError { message, line, column, - contextualize: CONTEXTUALIZE.load(Ordering::Relaxed), - context_lines: CONTEXT_LINES.load(Ordering::Relaxed), - context_characters: CONTEXT_CHARACTERS.load(Ordering::Relaxed), + // If the output should be contextualized or not. + contextualize: true, + // Amount of lines to show before and after the line containing the error. + context_lines: 3, + // Amount of characters to show before and after the column containing the + // error. + context_characters: 30, } } From 19205ef1a9d22c086fda1ab2ca074815708cd8ee Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 12:25:14 -0700 Subject: [PATCH 12/22] fixups Signed-off-by: Jess Frazelle --- src/kcl_error_fmt.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/kcl_error_fmt.rs b/src/kcl_error_fmt.rs index 84e62b50..028f9d44 100644 --- a/src/kcl_error_fmt.rs +++ b/src/kcl_error_fmt.rs @@ -21,6 +21,7 @@ pub struct KclError { context_characters: usize, } +/// The error types that we can pretty format. #[derive(Debug)] pub enum ErrorTypes { /// Contains [`kcl_lib::errors::KclError`]. From 8a4266db840f99c9de27a2395b6268205a92ceb8 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 12:25:58 -0700 Subject: [PATCH 13/22] comment Signed-off-by: Jess Frazelle --- src/kcl_error_fmt.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/kcl_error_fmt.rs b/src/kcl_error_fmt.rs index 028f9d44..6fc98a7f 100644 --- a/src/kcl_error_fmt.rs +++ b/src/kcl_error_fmt.rs @@ -1,3 +1,6 @@ +// A lot of the below is based upon https://github.com/AlexanderThaller/format_serde_error/tree/main +// which is licensed under the MIT license. Thank you! + use std::fmt; use colored::Colorize; From 5d1aa10575ac2096cce796b6bb9bd8a2a23d8aad Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 12:36:34 -0700 Subject: [PATCH 14/22] add errrors Signed-off-by: Jess Frazelle --- src/context.rs | 26 ++++++++++------- src/kcl_error_fmt.rs | 7 ++--- tests/parse_error.kcl | 68 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 15 deletions(-) create mode 100644 tests/parse_error.kcl diff --git a/src/context.rs b/src/context.rs index 2e1422cd..c247d2b3 100644 --- a/src/context.rs +++ b/src/context.rs @@ -2,7 +2,7 @@ use std::str::FromStr; use anyhow::{anyhow, Result}; -use crate::{config::Config, config_file::get_env_var, types::FormatOutput}; +use crate::{config::Config, config_file::get_env_var, kcl_error_fmt, types::FormatOutput}; pub struct Context<'a> { pub config: &'a mut (dyn Config + Send + Sync + 'a), @@ -109,19 +109,23 @@ impl Context<'_> { .await?; let tokens = kcl_lib::tokeniser::lexer(code); - let program = kcl_lib::parser::abstract_syntax_tree(&tokens)?; + let program = kcl_lib::parser::abstract_syntax_tree(&tokens) + .map_err(|err| kcl_error_fmt::KclError::new(code.to_string(), err))?; let mut mem: kcl_lib::executor::ProgramMemory = Default::default(); let mut engine = kcl_lib::engine::EngineConnection::new(ws, output_dir.display().to_string().as_str()).await?; - let _ = kcl_lib::executor::execute(program, &mut mem, kcl_lib::executor::BodyType::Root, &mut engine)?; + let _ = kcl_lib::executor::execute(program, &mut mem, kcl_lib::executor::BodyType::Root, &mut engine) + .map_err(|err| kcl_error_fmt::KclError::new(code.to_string(), err))?; // Send an export request to the engine. - engine.send_modeling_cmd( - uuid::Uuid::new_v4(), - kcl_lib::executor::SourceRange::default(), - kittycad::types::ModelingCmd::Export { - entity_ids: vec![], - format: get_output_format(format), - }, - )?; + engine + .send_modeling_cmd( + uuid::Uuid::new_v4(), + kcl_lib::executor::SourceRange::default(), + kittycad::types::ModelingCmd::Export { + entity_ids: vec![], + format: get_output_format(format), + }, + ) + .map_err(|err| kcl_error_fmt::KclError::new(code.to_string(), err))?; engine.wait_for_files().await; diff --git a/src/kcl_error_fmt.rs b/src/kcl_error_fmt.rs index 6fc98a7f..635024cc 100644 --- a/src/kcl_error_fmt.rs +++ b/src/kcl_error_fmt.rs @@ -165,7 +165,7 @@ impl KclError { .lines() .skip(skip) .take(take) - .map(|line| line.replace("\t", " ")) + .map(|line| line.replace('\t', " ")) .collect::>(); // If the minimized_input is empty we can assume that the input was empty as @@ -201,7 +201,6 @@ impl KclError { self.input .lines() - .into_iter() .enumerate() .skip(skip) .take(take) @@ -213,7 +212,7 @@ impl KclError { text.chars() .skip(whitespace_count) .collect::() - .replace("\t", " "), + .replace('\t', " "), ) }) .try_for_each(|(line_position, text)| { @@ -340,7 +339,7 @@ impl KclError { fill_line_position: &str, ) -> Result<(), std::fmt::Error> { - return writeln!(f, " {}{}{}", fill_line_position, separator, text.yellow()); + writeln!(f, " {}{}{}", fill_line_position, separator, text.yellow()) } fn context_long_line(text: &str, error_column: usize, context_chars: usize) -> (String, usize, bool, bool) { diff --git a/tests/parse_error.kcl b/tests/parse_error.kcl new file mode 100644 index 00000000..107767aa --- /dev/null +++ b/tests/parse_error.kcl @@ -0,0 +1,68 @@ +const part001 = startSketchAt([0.0000000000, 5.0000000000]) + |> line([0.4900857016, -0.0240763666], %) + |> line([0.6804562304, 0.9087880491], %) + |> line([0.5711661314, -0.1430696680], %) + |> line([0.1717090983, -1.1222443518], %) + |> line([0.4435665223, -0.2097913408], %) + |> line([0.9764377140, 0.5792113521], %) + |> line([0.4729383069, -0.3507549536], %) + |> line([-0.2708257990, -1.1025288142], %) + |> line([0.3295183609, -0.3635674851], %) + |> line([1.1237654070, 0.1614549773], %) + |> line([0.3027099123, -0.5050409772], %) + |> line([-0.6721299235, -0.9149632591], %) + |> line([0.1653040161, -0.4619937756], %) + |> line([1.1000100038, -0.2808814542], %) + |> line([0.0863966776, -0.5824390901], %) + |> line([-0.9711083600, -0.5881028420], %) + |> line([-0.0240763666, -0.4900857016], %) + |> line([0.9087880491, -0.6804562304], %) + |> line([-0.1430696680, -0.5711661314], %) + |> line([-1.1222443518, -0.1717090983], %) + |> line([-0.2097913408, -0.4435665223], %) + |> line([0.5792113521, -0.9764377140], %) + |> line([-0.3507549536, -0.4729383069], %) + |> line([-1.1025288142, 0.2708257990], %) + |> line([-0.3635674851, -0.3295183609], %) + |> line([0.1614549773, -1.1237654070], %) + |> line([-0.5050409772, -0.3027099123], %) + |> line([-0.9149632591, 0.6721299235], %) + |> line([-0.4619937756, -0.1653040161], %) + |> line([-0.2808814542, -1.1000100038], %) + |> line([-0.5824390901, -0.0863966776], %) + |> line([-0.5881028420, 0.9711083600], %) + |> line([-0.4900857016, 0.0240763666], %) + |> line([-0.6804562304, -0.9087880491], %) + |> line([-0.5711661314, 0.1430696680], %) + |> line([-0.1717090983, 1.1222443518], %) + |> line([-0.4435665223, 0.2097913408], %) + |> line([-0.9764377140, -0.5792113521], %) + |> line([-0.4729383069, 0.3507549536], %) + |> line([0.2708257990, 1.1025288142], %) + |> line([-0.3295183609, 0.3635674851], %) + |> line([-1.1237654070, -0.1614549773], %) + |> line([-0.3027099123, 0.5050409772], %) + |> line([0.6721299235, 0.9149632591], %) + |> line([-0.1653040161, 0.4619937756], %) + |> line([-1.1000100038, 0.2808814542], %) + |> line([-0.0863966776, 0.5824390901], %) + |> line([0.9711083600, 0.5881028420], %) + |> line([0.0240763666, 0.4900857016], %) + |> line([-0.9087880491, 0.6804562304], %) + |> line([0.1430696680, 0.5711661314], %) + |> line([1.1222443518, 0.1717090983], %) + |> line([0.2097913408, 0.4435665223], %) + |> line([-0.5792113521, 0.9764377140], %) + |> line([0.3507549536, 0.4729383069], %) + |> line([1.1025288142, -0.2708257990], %) + |> line([0.3635674851, 0.3295183609], %) + |> line([-0.1614549773, 1.1237654070], %) + |> line([0.5050409772, 0.3027099123], %) + |> line([0.9149632591, -0.6721299235], %) + |> line([0.4619937756, 0.1653040161], %) + |> line(["things", 1.1000100038], %) + |> line([0.5824390901, 0.0863966776], %) + |> close(%) + |> extrude(1, %) + +show(part001) From 1ba5b82caf28ce264054dc03bee6ff5dc25a73fe Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 12:40:29 -0700 Subject: [PATCH 15/22] updates Signed-off-by: Jess Frazelle --- src/kcl_error_fmt.rs | 26 ++++++++++++++------------ tests/parse_error.kcl | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/kcl_error_fmt.rs b/src/kcl_error_fmt.rs index 635024cc..aac2accf 100644 --- a/src/kcl_error_fmt.rs +++ b/src/kcl_error_fmt.rs @@ -52,17 +52,19 @@ impl KclError { let error = err.into(); let (message, line, column) = match error { - ErrorTypes::Kcl(e) => { - let source_range = match &e { - kcl_lib::errors::KclError::Syntax(e) => e.source_ranges.clone(), - kcl_lib::errors::KclError::Semantic(e) => e.source_ranges.clone(), - kcl_lib::errors::KclError::Type(e) => e.source_ranges.clone(), - kcl_lib::errors::KclError::Unimplemented(e) => e.source_ranges.clone(), - kcl_lib::errors::KclError::Unexpected(e) => e.source_ranges.clone(), - kcl_lib::errors::KclError::ValueAlreadyDefined(e) => e.source_ranges.clone(), - kcl_lib::errors::KclError::UndefinedValue(e) => e.source_ranges.clone(), - kcl_lib::errors::KclError::InvalidExpression(_e) => vec![kcl_lib::executor::SourceRange([0, 0])], - kcl_lib::errors::KclError::Engine(e) => e.source_ranges.clone(), + ErrorTypes::Kcl(err) => { + let (source_range, message) = match &err { + kcl_lib::errors::KclError::Syntax(e) => (e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::Semantic(e) => (e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::Type(e) => (e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::Unimplemented(e) => (e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::Unexpected(e) => (e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::ValueAlreadyDefined(e) => (e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::UndefinedValue(e) => (e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::InvalidExpression(_e) => { + (vec![kcl_lib::executor::SourceRange([0, 0])], err.to_string()) + } + kcl_lib::errors::KclError::Engine(e) => (e.source_ranges.clone(), e.message.clone()), }; // Calculate the line and column of the error from the source range. @@ -74,7 +76,7 @@ impl KclError { } else { (None, None) }; - (e.to_string(), line, column) + (message.to_string(), line, column) } }; diff --git a/tests/parse_error.kcl b/tests/parse_error.kcl index 107767aa..1845561b 100644 --- a/tests/parse_error.kcl +++ b/tests/parse_error.kcl @@ -63,6 +63,6 @@ const part001 = startSketchAt([0.0000000000, 5.0000000000]) |> line(["things", 1.1000100038], %) |> line([0.5824390901, 0.0863966776], %) |> close(%) - |> extrude(1, %) + |> extrude(1, %)"things" show(part001) From c8a14e3316f3c556f25a8b79d2a4604dc9fcc90e Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 12:42:18 -0700 Subject: [PATCH 16/22] keep type Signed-off-by: Jess Frazelle --- src/kcl_error_fmt.rs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/kcl_error_fmt.rs b/src/kcl_error_fmt.rs index aac2accf..84d35763 100644 --- a/src/kcl_error_fmt.rs +++ b/src/kcl_error_fmt.rs @@ -53,18 +53,28 @@ impl KclError { let (message, line, column) = match error { ErrorTypes::Kcl(err) => { - let (source_range, message) = match &err { - kcl_lib::errors::KclError::Syntax(e) => (e.source_ranges.clone(), e.message.clone()), - kcl_lib::errors::KclError::Semantic(e) => (e.source_ranges.clone(), e.message.clone()), - kcl_lib::errors::KclError::Type(e) => (e.source_ranges.clone(), e.message.clone()), - kcl_lib::errors::KclError::Unimplemented(e) => (e.source_ranges.clone(), e.message.clone()), - kcl_lib::errors::KclError::Unexpected(e) => (e.source_ranges.clone(), e.message.clone()), - kcl_lib::errors::KclError::ValueAlreadyDefined(e) => (e.source_ranges.clone(), e.message.clone()), - kcl_lib::errors::KclError::UndefinedValue(e) => (e.source_ranges.clone(), e.message.clone()), - kcl_lib::errors::KclError::InvalidExpression(_e) => { - (vec![kcl_lib::executor::SourceRange([0, 0])], err.to_string()) + let (type_, source_range, message) = match &err { + kcl_lib::errors::KclError::Syntax(e) => ("syntax", e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::Semantic(e) => ("semantic", e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::Type(e) => ("type", e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::Unimplemented(e) => { + ("unimplemented", e.source_ranges.clone(), e.message.clone()) } - kcl_lib::errors::KclError::Engine(e) => (e.source_ranges.clone(), e.message.clone()), + kcl_lib::errors::KclError::Unexpected(e) => { + ("unexpected", e.source_ranges.clone(), e.message.clone()) + } + kcl_lib::errors::KclError::ValueAlreadyDefined(e) => { + ("value already defined", e.source_ranges.clone(), e.message.clone()) + } + kcl_lib::errors::KclError::UndefinedValue(e) => { + ("undefined value", e.source_ranges.clone(), e.message.clone()) + } + kcl_lib::errors::KclError::InvalidExpression(_e) => ( + "invalid math expression", + vec![kcl_lib::executor::SourceRange([0, 0])], + err.to_string(), + ), + kcl_lib::errors::KclError::Engine(e) => ("engine", e.source_ranges.clone(), e.message.clone()), }; // Calculate the line and column of the error from the source range. @@ -76,7 +86,7 @@ impl KclError { } else { (None, None) }; - (message.to_string(), line, column) + (format!("{}: {}", type_, message), line, column) } }; From 0f970479621184b9d69e5e64f74074d174311444 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 12:50:16 -0700 Subject: [PATCH 17/22] add tests for kcl export Signed-off-by: Jess Frazelle --- src/tests.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/tests.rs b/src/tests.rs index 253a8224..cc4bb966 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -366,6 +366,36 @@ access-control-allow-credentials: """# want_code: 0, ..Default::default() }, + TestItem { + name: "export a kcl file as gltf".to_string(), + args: vec![ + "kittycad".to_string(), + "kcl".to_string(), + "export".to_string(), + "--output-format=gltf".to_string(), + "tests/gear.kcl".to_string(), + "tests/".to_string(), + ], + want_out: r#"Saved file conversion output(s) to:"#.to_string(), + want_err: "".to_string(), + want_code: 0, + ..Default::default() + }, + TestItem { + name: "export a kcl file with a parse error".to_string(), + args: vec![ + "kittycad".to_string(), + "kcl".to_string(), + "export".to_string(), + "--output-format=gltf".to_string(), + "tests/parse_error.kcl".to_string(), + "tests/".to_string(), + ], + want_out: r#""#.to_string(), + want_err: "syntax: unexpected token".to_string(), + want_code: 1, + ..Default::default() + }, ]; let mut config = crate::config::new_blank_config().unwrap(); From 944272a8a3aac37b61186fe5f12df9de1b9e370c Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 12:50:44 -0700 Subject: [PATCH 18/22] bump version Signed-off-by: Jess Frazelle --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index d9dcd18a..1beb2463 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kittycad" -version = "0.2.0" +version = "0.2.1" edition = "2021" build = "build.rs" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html From 4a13620e5c207719c7c04999d0a0ecb2d6b5a030 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 13:33:13 -0700 Subject: [PATCH 19/22] make better Signed-off-by: Jess Frazelle --- src/kcl_error_fmt.rs | 37 +------------------------------------ 1 file changed, 1 insertion(+), 36 deletions(-) diff --git a/src/kcl_error_fmt.rs b/src/kcl_error_fmt.rs index 84d35763..376de44c 100644 --- a/src/kcl_error_fmt.rs +++ b/src/kcl_error_fmt.rs @@ -52,42 +52,7 @@ impl KclError { let error = err.into(); let (message, line, column) = match error { - ErrorTypes::Kcl(err) => { - let (type_, source_range, message) = match &err { - kcl_lib::errors::KclError::Syntax(e) => ("syntax", e.source_ranges.clone(), e.message.clone()), - kcl_lib::errors::KclError::Semantic(e) => ("semantic", e.source_ranges.clone(), e.message.clone()), - kcl_lib::errors::KclError::Type(e) => ("type", e.source_ranges.clone(), e.message.clone()), - kcl_lib::errors::KclError::Unimplemented(e) => { - ("unimplemented", e.source_ranges.clone(), e.message.clone()) - } - kcl_lib::errors::KclError::Unexpected(e) => { - ("unexpected", e.source_ranges.clone(), e.message.clone()) - } - kcl_lib::errors::KclError::ValueAlreadyDefined(e) => { - ("value already defined", e.source_ranges.clone(), e.message.clone()) - } - kcl_lib::errors::KclError::UndefinedValue(e) => { - ("undefined value", e.source_ranges.clone(), e.message.clone()) - } - kcl_lib::errors::KclError::InvalidExpression(_e) => ( - "invalid math expression", - vec![kcl_lib::executor::SourceRange([0, 0])], - err.to_string(), - ), - kcl_lib::errors::KclError::Engine(e) => ("engine", e.source_ranges.clone(), e.message.clone()), - }; - - // Calculate the line and column of the error from the source range. - let (line, column) = if let Some(range) = source_range.first() { - let line = input[..range.0[0]].lines().count(); - let column = input[..range.0[0]].lines().last().map(|l| l.len()).unwrap_or_default(); - - (Some(line), Some(column)) - } else { - (None, None) - }; - (format!("{}: {}", type_, message), line, column) - } + ErrorTypes::Kcl(err) => err.get_message_line_column(&input), }; Self { From 707d7d2767f8e07db98dbdf9d7928dedf6ca83e5 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 15:28:34 -0700 Subject: [PATCH 20/22] fixup Signed-off-by: Jess Frazelle --- src/context.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/context.rs b/src/context.rs index c247d2b3..bb46b89b 100644 --- a/src/context.rs +++ b/src/context.rs @@ -222,22 +222,25 @@ fn get_output_format(format: &kittycad::types::FileExportFormat) -> kittycad::ty }; match format { + kittycad::types::FileExportFormat::Fbx => kittycad::types::OutputFormat::Fbx { + storage: kittycad::types::FbxStorage::Binary, + }, kittycad::types::FileExportFormat::Glb => kittycad::types::OutputFormat::Gltf { - storage: kittycad::types::Storage::Binary, - presentation: kittycad::types::Presentation::Compact, + storage: kittycad::types::GltfStorage::Binary, + presentation: kittycad::types::GltfPresentation::Compact, }, kittycad::types::FileExportFormat::Gltf => kittycad::types::OutputFormat::Gltf { - storage: kittycad::types::Storage::Embedded, - presentation: kittycad::types::Presentation::Pretty, + storage: kittycad::types::GltfStorage::Embedded, + presentation: kittycad::types::GltfPresentation::Pretty, }, kittycad::types::FileExportFormat::Obj => kittycad::types::OutputFormat::Obj { coords }, kittycad::types::FileExportFormat::Ply => kittycad::types::OutputFormat::Ply { - storage: kittycad::types::Storage::Binary, + storage: kittycad::types::PlyStorage::Ascii, coords, }, kittycad::types::FileExportFormat::Step => kittycad::types::OutputFormat::Step { coords }, kittycad::types::FileExportFormat::Stl => kittycad::types::OutputFormat::Stl { - storage: kittycad::types::Storage::Binary, + storage: kittycad::types::StlStorage::Ascii, coords, }, } From e8763ebcd986f951fb98e7b6f0a3a6de7db2caf4 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 15:45:03 -0700 Subject: [PATCH 21/22] run tests Signed-off-by: Jess Frazelle --- src/tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests.rs b/src/tests.rs index cc4bb966..07f76b9b 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -376,7 +376,7 @@ access-control-allow-credentials: """# "tests/gear.kcl".to_string(), "tests/".to_string(), ], - want_out: r#"Saved file conversion output(s) to:"#.to_string(), + want_out: r#""#.to_string(), want_err: "".to_string(), want_code: 0, ..Default::default() From 58718f0d160875ee2b931043c9c5b9a56b296c9f Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Tue, 29 Aug 2023 15:53:48 -0700 Subject: [PATCH 22/22] fixes Signed-off-by: Jess Frazelle --- Cargo.lock | 4161 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4161 insertions(+) create mode 100644 Cargo.lock diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 00000000..6988eb64 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4161 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[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 = "ansi-colors-macro" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c2afa84a2916e88ff06df6fd84e7c89e374a726e392f72dc5e32d6db3c3cf6" + +[[package]] +name = "ansi-str" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cf4578926a981ab0ca955dc023541d19de37112bc24c1a197bd806d3d86ad1d" +dependencies = [ + "ansitok", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "ansitok" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "220044e6a1bb31ddee4e3db724d29767f352de47445a6cd75e1a173142136c83" +dependencies = [ + "nom", + "vte", +] + +[[package]] +name = "anstream" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" + +[[package]] +name = "anstyle-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "anstyle-wincon" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" +dependencies = [ + "anstyle", + "windows-sys 0.48.0", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +dependencies = [ + "backtrace", +] + +[[package]] +name = "arc-swap" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" +dependencies = [ + "async-lock", + "async-task", + "concurrent-queue", + "fastrand 1.9.0", + "futures-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +dependencies = [ + "async-channel", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite", + "log", + "parking", + "polling", + "rustix 0.37.23", + "slab", + "socket2 0.4.9", + "waker-fn", +] + +[[package]] +name = "async-lock" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-std" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +dependencies = [ + "async-channel", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" + +[[package]] +name = "async-trait" +version = "0.1.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "atomic-waker" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[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.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" + +[[package]] +name = "bigdecimal" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" +dependencies = [ + "async-channel", + "async-lock", + "async-task", + "atomic-waker", + "fastrand 1.9.0", + "futures-lite", + "log", +] + +[[package]] +name = "bson" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aeb8bae494e49dbc330dd23cf78f6f7accee22f640ce3ab17841badaa4ce232" +dependencies = [ + "ahash", + "base64 0.13.1", + "bitvec", + "chrono", + "hex", + "indexmap 1.9.3", + "js-sys", + "lazy_static", + "rand", + "serde", + "serde_bytes", + "serde_json", + "time 0.3.23", + "uuid", +] + +[[package]] +name = "built" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99c4cdc7b2c2364182331055623bdf45254fcb679fea565c40c3c11c101889a" +dependencies = [ + "cargo-lock", +] + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "bytecount" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-lock" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11c675378efb449ed3ce8de78d75d0d80542fc98487c26aba28eb3b82feac72" +dependencies = [ + "semver 1.0.18", + "serde", + "toml 0.7.6", + "url", +] + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[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.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f56b4c72906975ca04becb8a30e102dfecddd0c06181e3e95ddc444be28881f8" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "time 0.1.45", + "wasm-bindgen", + "windows-targets 0.48.1", +] + +[[package]] +name = "chrono-humanize" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" +dependencies = [ + "chrono", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_derive 3.2.25", + "clap_lex 0.2.4", + "indexmap 1.9.3", + "once_cell", + "strsim", + "termcolor", + "textwrap", + "unicase", +] + +[[package]] +name = "clap" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c8d502cbaec4595d2e7d5f61e318f05417bd2b66fdc3809498f0d3fdf0bea27" +dependencies = [ + "clap_builder", + "clap_derive 4.4.0", + "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5891c7bc0edb3e1c2204fc5e94009affabeb1821c9e5fdc3959536c5c0bb984d" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.5.0", + "once_cell", + "strsim", + "terminal_size", + "unicase", + "unicode-width", +] + +[[package]] +name = "clap_complete" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "586a385f7ef2f8b4d86bddaa0c094794e7ccbfe5ffef1f434fe928143fc783a5" +dependencies = [ + "clap 4.4.1", +] + +[[package]] +name = "clap_derive" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "clap_derive" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "clap_lex" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" + +[[package]] +name = "cli-macro" +version = "0.1.0" +dependencies = [ + "cli-macro-impl", +] + +[[package]] +name = "cli-macro-impl" +version = "0.1.0" +dependencies = [ + "Inflector", + "anyhow", + "expectorate", + "openapitor", + "openapiv3", + "proc-macro2", + "quote", + "regex", + "rustfmt-wrapper", + "serde", + "serde_json", + "serde_tokenstream", + "syn 2.0.29", +] + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "colored" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" +dependencies = [ + "is-terminal", + "lazy_static", + "windows-sys 0.48.0", +] + +[[package]] +name = "colored_json" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74cb9ce6b86f6e54bfa9518df2eeeef65d424ec7244d083ed97229185e366a91" +dependencies = [ + "is-terminal", + "serde", + "serde_json", + "yansi", +] + +[[package]] +name = "concurrent-queue" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.45.0", +] + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[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 = "crossterm" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c36c10130df424b2f3552fcc2ddcd9b28a27b1e54b358b45874f88d1ca6888c" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi 0.7.0", + "lazy_static", + "libc", + "mio 0.7.14", + "parking_lot 0.11.2", + "signal-hook 0.1.17", + "winapi", +] + +[[package]] +name = "crossterm" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85525306c4291d1b73ce93c8acf9c339f9b213aef6c1d85c3830cbf1c16325c" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi 0.9.1", + "libc", + "mio 0.7.14", + "parking_lot 0.11.2", + "signal-hook 0.3.17", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da8964ace4d3e4a044fd027919b2237000b24315a37c916f61809f1ff2140b9" +dependencies = [ + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "dashmap" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6943ae99c34386c84a470c499d3414f66502a41340aa895406e0d2e4a207b91d" +dependencies = [ + "cfg-if", + "hashbrown 0.14.0", + "lock_api", + "once_cell", + "parking_lot_core 0.9.8", +] + +[[package]] +name = "data-encoding" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" + +[[package]] +name = "derive-docs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "075291fd1d6d70a886078f7b1c132a160559ceb9a0fe143177872d40ea587906" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "serde", + "serde_tokenstream", + "syn 2.0.29", +] + +[[package]] +name = "dialoguer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" +dependencies = [ + "console", + "shell-words", + "tempfile", + "zeroize", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dyn-clone" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272" + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "expectorate" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "710ab6a2d57038a835d66f78d5af3fa5d27c1ec4682f823b9203c48826cb0591" +dependencies = [ + "console", + "newline-converter", + "similar", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "format_serde_error" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5837b8e6a4001f99fe4746767fb7379e8510c508a843caa136cc12ed9c0bad0" +dependencies = [ + "colored", + "serde", + "serde_json", + "serde_yaml 0.8.26", + "unicode-segmentation", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getopts" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + +[[package]] +name = "git_rev" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60884563ea313b5037683cd5d44f1e14e9cb07b08543756242a65887f9cff48e" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[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.9", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[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 = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.2", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ipnet" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi 0.3.2", + "rustix 0.38.4", + "windows-sys 0.48.0", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[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.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce" +dependencies = [ + "serde", + "serde_json", + "treediff", +] + +[[package]] +name = "kcl-lib" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e55432f912f814bc8e3d209698b506f71eea2fc81dfeb61040ea7c7984a1f73" +dependencies = [ + "anyhow", + "bson", + "derive-docs", + "futures", + "js-sys", + "kittycad 0.2.21", + "lazy_static", + "parse-display", + "regex", + "reqwest", + "schemars", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-tungstenite", + "ts-rs-json-value", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", +] + +[[package]] +name = "kittycad" +version = "0.2.1" +dependencies = [ + "ansi_term", + "anyhow", + "async-trait", + "atty", + "built", + "chrono", + "chrono-humanize", + "clap 4.4.1", + "clap_complete", + "cli-macro", + "colored", + "colored_json", + "data-encoding", + "dialoguer", + "dirs", + "expectorate", + "futures", + "git_rev", + "heck 0.4.1", + "http", + "itertools 0.11.0", + "kcl-lib", + "kittycad 0.2.21", + "log", + "num-traits", + "oauth2", + "open", + "parse-display", + "pretty_assertions", + "pulldown-cmark", + "pulldown-cmark-to-cmark", + "regex", + "reqwest", + "ring", + "roff", + "serde", + "serde_json", + "serde_yaml 0.9.25", + "serial_test", + "shlex", + "slog", + "slog-async", + "slog-scope", + "slog-stdlog", + "slog-term", + "tabled", + "tabwriter", + "tempfile", + "termbg", + "terminal-spinners", + "terminal_size", + "test-context", + "thiserror", + "tokio", + "toml 0.7.6", + "toml_edit", + "unicode-segmentation", + "url", + "uuid", + "version-compare", +] + +[[package]] +name = "kittycad" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfeb41d39852f5755cd3f2d1c06059839f268cbc5d0577c2d6a667c6ad5abdcf" +dependencies = [ + "anyhow", + "async-trait", + "base64 0.21.2", + "bytes", + "chrono", + "clap 4.4.1", + "data-encoding", + "format_serde_error", + "futures", + "http", + "itertools 0.10.5", + "log", + "parse-display", + "phonenumber", + "rand", + "reqwest", + "reqwest-conditional-middleware", + "reqwest-middleware 0.2.3", + "reqwest-retry", + "reqwest-tracing", + "schemars", + "serde", + "serde_bytes", + "serde_json", + "serde_urlencoded", + "tabled", + "thiserror", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[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.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +dependencies = [ + "serde", + "value-bag", +] + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "matchit" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed1202b2a6f884ae56f04cff409ab315c5ce26b5e58d7412e484f01fd52f52ef" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[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 = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[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.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" +dependencies = [ + "libc", + "log", + "miow", + "ntapi", + "winapi", +] + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", +] + +[[package]] +name = "newline-converter" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b6b097ecb1cbfed438542d16e84fd7ad9b0c76c8a65b7f9039212a3d14dc7f" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "ntapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +dependencies = [ + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +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 0.3.2", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "numeral" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049950a25a8f69e9673ed52fc58749548cee71194f6c3a8a04b80863637ce722" + +[[package]] +name = "oauth2" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a6e2a2b13a56ebeabba9142f911745be6456163fd6c3d361274ebcd891a80c" +dependencies = [ + "base64 0.13.1", + "chrono", + "getrandom", + "http", + "rand", + "reqwest", + "serde", + "serde_json", + "serde_path_to_error", + "sha2", + "thiserror", + "url", +] + +[[package]] +name = "object" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "oncemutex" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d11de466f4a3006fe8a5e7ec84e93b79c70cb992ae0aa0eb631ad2df8abfe2" + +[[package]] +name = "open" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfabf1927dce4d6fdf563d63328a0a506101ced3ec780ca2135747336c98cef8" +dependencies = [ + "is-wsl", + "libc", + "pathdiff", +] + +[[package]] +name = "openapitor" +version = "0.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120168eae5b6485690af708bd1030547df62cca10a643763d416ab0e6831decb" +dependencies = [ + "Inflector", + "anyhow", + "chrono", + "clap 3.2.25", + "data-encoding", + "format_serde_error", + "futures-util", + "http", + "indexmap 1.9.3", + "json-patch", + "log", + "numeral", + "openapiv3", + "phonenumber", + "proc-macro2", + "quote", + "rand", + "regex", + "reqwest", + "reqwest-middleware 0.1.6", + "rustfmt-wrapper", + "schemars", + "serde", + "serde_json", + "serde_yaml 0.9.25", + "slog", + "slog-async", + "slog-json", + "slog-scope", + "slog-stdlog", + "slog-term", + "thiserror", + "tokio", + "url", + "uuid", +] + +[[package]] +name = "openapiv3" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1a9f106eb0a780abd17ba9fca8e0843e3461630bcbe2af0ad4d5d3ba4e9aa4" +dependencies = [ + "indexmap 1.9.3", + "serde", + "serde_json", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand", + "thiserror", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "os_str_bytes" +version = "6.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" + +[[package]] +name = "papergrid" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ccbe15f2b6db62f9a9871642746427e297b0ceb85f9a7f1ee5ff47d184d0c8" +dependencies = [ + "ansi-str", + "ansitok", + "bytecount", + "fnv", + "unicode-width", +] + +[[package]] +name = "parking" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" + +[[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.8", +] + +[[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets 0.48.1", +] + +[[package]] +name = "parse-display" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6509d08722b53e8dafe97f2027b22ccbe3a5db83cb352931e9716b0aa44bc5c" +dependencies = [ + "once_cell", + "parse-display-derive", + "regex", +] + +[[package]] +name = "parse-display-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68517892c8daf78da08c0db777fcc17e07f2f63ef70041718f8a7630ad84f341" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "regex", + "regex-syntax 0.7.5", + "structmeta", + "syn 2.0.29", +] + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pest" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d2d1d55045829d65aad9d389139882ad623b33b904e7c9f1b10c5b8927298e5" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "phonenumber" +version = "0.3.2+8.13.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34749f64ea9d76f10cdc8a859588b57775f59177c7dd91f744d620bd62982d6f" +dependencies = [ + "bincode", + "either", + "fnv", + "itertools 0.10.5", + "lazy_static", + "nom", + "quick-xml", + "regex", + "regex-cache", + "serde", + "serde_derive", + "thiserror", +] + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "pretty_assertions" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pulldown-cmark" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" +dependencies = [ + "bitflags 1.3.2", + "getopts", + "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3118a235a72ced8a51669699d9febd97c0d6e23b3bd3a1d9d0fdaa995082099" +dependencies = [ + "pulldown-cmark", +] + +[[package]] +name = "quick-xml" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[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", +] + +[[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.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax 0.7.5", +] + +[[package]] +name = "regex-automata" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.5", +] + +[[package]] +name = "regex-cache" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f7b62d69743b8b94f353b6b7c3deb4c5582828328bcb8d5fedf214373808793" +dependencies = [ + "lru-cache", + "oncemutex", + "regex", + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "reqwest" +version = "0.11.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +dependencies = [ + "base64 0.21.2", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "mime_guess", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "reqwest-conditional-middleware" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59e50a2e70970896c99d1b8f20ddc30a70b30d3ac6e619a03a8353b64a49b277" +dependencies = [ + "async-trait", + "reqwest", + "reqwest-middleware 0.2.3", + "task-local-extensions", +] + +[[package]] +name = "reqwest-middleware" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69539cea4148dce683bec9dc95be3f0397a9bb2c248a49c8296a9d21659a8cdd" +dependencies = [ + "anyhow", + "async-trait", + "futures", + "http", + "reqwest", + "serde", + "task-local-extensions", + "thiserror", +] + +[[package]] +name = "reqwest-middleware" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff44108c7925d082f2861e683a88618b68235ad9cdc60d64d9d1188efc951cdb" +dependencies = [ + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "task-local-extensions", + "thiserror", +] + +[[package]] +name = "reqwest-retry" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d0fd6ef4c6d23790399fe15efc8d12cd9f3d4133958f9bd7801ee5cbaec6c4" +dependencies = [ + "anyhow", + "async-trait", + "chrono", + "futures", + "getrandom", + "http", + "hyper", + "parking_lot 0.11.2", + "reqwest", + "reqwest-middleware 0.2.3", + "retry-policies", + "task-local-extensions", + "tokio", + "tracing", + "wasm-timer", +] + +[[package]] +name = "reqwest-tracing" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b1e66540e0cac90acadaf7109bf99c90d95abcc94b4c096bfa16a2d7aa7a71" +dependencies = [ + "anyhow", + "async-trait", + "getrandom", + "matchit", + "opentelemetry", + "reqwest", + "reqwest-middleware 0.2.3", + "task-local-extensions", + "tracing", + "tracing-opentelemetry", +] + +[[package]] +name = "retry-policies" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e09bbcb5003282bcb688f0bae741b278e9c7e8f378f561522c9806c58e075d9b" +dependencies = [ + "anyhow", + "chrono", + "rand", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "roff" +version = "0.1.0" +source = "git+https://github.com/sondr3/roff-rs?branch=updates#54018979aed7ce313d8d6f7b2abdd95950df5b9d" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustfmt-wrapper" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed729e3bee08ec2befd593c27e90ca9fdd25efdc83c94c3b82eaef16e4f7406e" +dependencies = [ + "serde", + "tempfile", + "thiserror", + "toml 0.5.11", + "toolchain_find", +] + +[[package]] +name = "rustix" +version = "0.37.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +dependencies = [ + "bitflags 2.3.3", + "errno", + "libc", + "linux-raw-sys 0.4.3", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustls" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64 0.21.2", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "schemars" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +dependencies = [ + "bigdecimal", + "bytes", + "chrono", + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars_derive" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 1.0.109", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[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 = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "serde_derive_internals" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "serde_json" +version = "1.0.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_tokenstream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a00ffd23fd882d096f09fcaae2a9de8329a328628e86027e049ee051dc1621f" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn 2.0.29", +] + +[[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 = "serde_yaml" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +dependencies = [ + "indexmap 1.9.3", + "ryu", + "serde", + "yaml-rust", +] + +[[package]] +name = "serde_yaml" +version = "0.9.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serial_test" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" +dependencies = [ + "dashmap", + "futures", + "lazy_static", + "log", + "parking_lot 0.12.1", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" + +[[package]] +name = "signal-hook" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e31d442c16f047a671b5a71e2161d6e68814012b7f5379d269ebd915fac2729" +dependencies = [ + "libc", + "mio 0.7.14", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +dependencies = [ + "libc", + "mio 0.7.14", + "signal-hook 0.3.17", +] + +[[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 = "similar" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slog" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" + +[[package]] +name = "slog-async" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c8038f898a2c79507940990f05386455b3a317d8f18d4caea7cbc3d5096b84" +dependencies = [ + "crossbeam-channel", + "slog", + "take_mut", + "thread_local", +] + +[[package]] +name = "slog-json" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1e53f61af1e3c8b852eef0a9dee29008f55d6dd63794f3f12cef786cf0f219" +dependencies = [ + "serde", + "serde_json", + "slog", + "time 0.3.23", +] + +[[package]] +name = "slog-scope" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f95a4b4c3274cd2869549da82b57ccc930859bdbf5bcea0424bc5f140b3c786" +dependencies = [ + "arc-swap", + "lazy_static", + "slog", +] + +[[package]] +name = "slog-stdlog" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6706b2ace5bbae7291d3f8d2473e2bfab073ccd7d03670946197aec98471fa3e" +dependencies = [ + "log", + "slog", + "slog-scope", +] + +[[package]] +name = "slog-term" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87d29185c55b7b258b4f120eab00f48557d4d9bc814f41713f449d35b0f8977c" +dependencies = [ + "atty", + "slog", + "term", + "thread_local", + "time 0.3.23", +] + +[[package]] +name = "smallvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "structmeta" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ad9e09554f0456d67a69c1584c9798ba733a5b50349a6c0d0948710523922d" +dependencies = [ + "proc-macro2", + "quote", + "structmeta-derive", + "syn 2.0.29", +] + +[[package]] +name = "structmeta-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a60bcaff7397072dca0017d1db428e30d5002e00b6847703e2e42005c95fbe00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tabled" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfe9c3632da101aba5131ed63f9eed38665f8b3c68703a6bb18124835c1a5d22" +dependencies = [ + "ansi-str", + "ansitok", + "papergrid", + "tabled_derive", + "unicode-width", +] + +[[package]] +name = "tabled_derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99f688a08b54f4f02f0a3c382aefdb7884d3d69609f785bd253dc033243e3fe4" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tabwriter" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08e1173ee641651a3095fe95d86ae314cd1f959888097debce3e0f9ca532eef1" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +dependencies = [ + "cfg-if", + "fastrand 2.0.0", + "redox_syscall 0.3.5", + "rustix 0.38.4", + "windows-sys 0.48.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "termbg" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af8f790306d97b7453a170f39f4b99d8f5faa7e9f7a312e77681e205a72dcbd2" +dependencies = [ + "async-std", + "crossterm 0.19.0", + "thiserror", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminal-emoji" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8143568e8d5270b3b8f573ab8bb11a556a5c9e4becdc12241a7eef4c54a55170" +dependencies = [ + "terminal-supports-emoji", +] + +[[package]] +name = "terminal-log-symbols" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7569386670bad024a2729d194542c42500615fca75f1139c99b697704f7e46f" +dependencies = [ + "ansi-colors-macro", + "terminal-emoji", +] + +[[package]] +name = "terminal-spinner-data" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3aadcf9cbc909865c51ff9ced167a1065201b9b35d7254d530c9520b687ef3f4" +dependencies = [ + "anyhow", + "heck 0.3.3", + "quote", + "serde", + "serde_json", +] + +[[package]] +name = "terminal-spinners" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a1f23d549659993743823e9f54d6dd0502e6e6466894a0e1c254262c0e0e93" +dependencies = [ + "crossterm 0.22.1", + "terminal-log-symbols", + "terminal-spinner-data", +] + +[[package]] +name = "terminal-supports-emoji" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8873a7a1f2d286cfedc10663a722309b1c74092852cf149aee738cbe901c6eb" +dependencies = [ + "atty", + "lazy_static", +] + +[[package]] +name = "terminal_size" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" +dependencies = [ + "rustix 0.37.23", + "windows-sys 0.48.0", +] + +[[package]] +name = "test-context" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "055831a02a4f5aa28fede67f2902014273eb8c21b958ac5ebbd59b71ef30dbc3" +dependencies = [ + "async-trait", + "futures", + "test-context-macros", +] + +[[package]] +name = "test-context-macros" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901a55b0a7a06ebc4a674dcca925170da8e613fa3b163a1df804ed10afb154d" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446" +dependencies = [ + "itoa", + "libc", + "num_threads", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "time-macros" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96ba15a897f3c86766b757e5ac7221554c6750054d74d5b28844fce5fb36a6c4" +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.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio 0.8.8", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.3", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2dbec703c26b00d74844519606ef15d09a7d6857860f84ad223dec002ddea2" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-native-certs", + "tokio", + "tokio-rustls", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +dependencies = [ + "indexmap 2.0.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toolchain_find" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e85654a10e7a07a47c6f19d93818f3f343e22927f2fa280c84f7c8042743413" +dependencies = [ + "home", + "lazy_static", + "regex", + "semver 0.11.0", + "walkdir", +] + +[[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.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "treediff" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff" +dependencies = [ + "serde_json", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "ts-rs-json-value" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66d07e64e1e39d693819307757ad16878ff2be1f26d6fc2137c4e23bc0c0545" +dependencies = [ + "serde_json", + "thiserror", + "ts-rs-macros", + "uuid", +] + +[[package]] +name = "ts-rs-macros" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6f41cc0aeb7a4a55730188e147d3795a7349b501f8334697fd37629b896cdc2" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.29", + "termcolor", +] + +[[package]] +name = "tungstenite" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e862a1c4128df0112ab625f55cd5c934bcb4312ba80b39ae4b4835a3fd58e649" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "rustls", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +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.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "value-bag" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3" + +[[package]] +name = "version-compare" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "vte" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983" +dependencies = [ + "arrayvec", + "utf8parse", + "vte_generate_state_changes", +] + +[[package]] +name = "vte_generate_state_changes" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[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.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.29", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[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.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fac9742fd1ad1bd9643b991319f72dd031016d44b77039a26977eb667141e7" +dependencies = [ + "memchr", +] + +[[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", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "zeroize" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"