From e3aed4712547ca8360532f7f763b734db0632a75 Mon Sep 17 00:00:00 2001 From: Peter Salomonsen Date: Sat, 4 Jan 2025 19:58:11 +0000 Subject: [PATCH 1/5] codespace building --- .devcontainer/devcontainer.json | 20 +++++++++++++++ .devcontainer/install-dependencies.sh | 3 +++ Cargo.lock | 22 ++++++++-------- sputnikdao-factory2/Cargo.toml | 4 ++- sputnikdao-factory2/src/factory_manager.rs | 10 +++++++- sputnikdao-factory2/src/lib.rs | 20 ++++++++++++--- sputnikdao-factory2/test/test_basics.rs | 29 ++++++++++++++++++++++ 7 files changed, 91 insertions(+), 17 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100755 .devcontainer/install-dependencies.sh create mode 100644 sputnikdao-factory2/test/test_basics.rs diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..97bf4218 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,20 @@ +{ + "hostRequirements": { + "cpus": 2, + "memory": "8gb", + "storage": "32gb" + }, + "image": "mcr.microsoft.com/devcontainers/base:jammy", + "features": { + "ghcr.io/devcontainers/features/rust:latest": {} + }, + "customizations": { + "vscode": { + "extensions": [ + "github.vscode-github-actions", + "rust-lang.rust-analyzer" + ] + } + }, + "postCreateCommand": "./.devcontainer/install-dependencies.sh" +} \ No newline at end of file diff --git a/.devcontainer/install-dependencies.sh b/.devcontainer/install-dependencies.sh new file mode 100755 index 00000000..346e24ac --- /dev/null +++ b/.devcontainer/install-dependencies.sh @@ -0,0 +1,3 @@ +#!/bin/bash +sudo apt update +sudo apt install -y pkg-config \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index eca201b6..177ab0c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -1557,9 +1557,9 @@ dependencies = [ [[package]] name = "near-contract-standards" -version = "4.0.0-pre.7" +version = "4.0.0-pre.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c4f636adbffbd9399610cb6445894c64c6c8fcf9ea4e607021f252a1e0459f" +checksum = "04014dddb40fa5f1491f862088f19ee80499c3a154d2bfd293f057878704dcc3" dependencies = [ "near-sdk", "serde", @@ -1834,9 +1834,9 @@ dependencies = [ [[package]] name = "near-sdk" -version = "4.0.0-pre.7" +version = "4.0.0-pre.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f17c763e91999827a2ad30b909f79e82a56c448bf7170ed72841756397e5a3" +checksum = "a1e895ead9571fcbfcb283aa75612522f1fd6f62a50101e6c4c2950f3f2ddb4f" dependencies = [ "base64 0.13.0", "borsh 0.9.3", @@ -1853,9 +1853,9 @@ dependencies = [ [[package]] name = "near-sdk-macros" -version = "4.0.0-pre.7" +version = "4.0.0-pre.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d07b8d59302bf900707c41654a7ba178c5a2d8040a8812647f6b7e7e28dc5b1" +checksum = "86ed4b9e4f65e8bfb73b0db0bd35ba7e30ceb98e65c9ebb4a2ce41c312646d54" dependencies = [ "Inflector", "proc-macro2", @@ -1865,9 +1865,9 @@ dependencies = [ [[package]] name = "near-sdk-sim" -version = "4.0.0-pre.7" +version = "4.0.0-pre.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bedc5bfe554835bee8e0f00801e644add7fa81b8de8867b6be1d3fb41864390" +checksum = "cf29b57ff916f80cf76096247be55bd0ec18ba6855c09d997017221ea9b305c7" dependencies = [ "funty", "lazy-static-include", @@ -1904,9 +1904,9 @@ dependencies = [ [[package]] name = "near-sys" -version = "0.1.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6a7aa3f46fac44416d8a93d14f30a562c4d730a1c6bf14bffafab5f475c244a" +checksum = "dbf4ca5c805cb78700e10e43484902d8da05f25788db277999d209568aaf4c8e" [[package]] name = "near-vm-errors" diff --git a/sputnikdao-factory2/Cargo.toml b/sputnikdao-factory2/Cargo.toml index a8001aa0..d609c654 100644 --- a/sputnikdao-factory2/Cargo.toml +++ b/sputnikdao-factory2/Cargo.toml @@ -12,4 +12,6 @@ crate-type = ["cdylib", "rlib"] near-sdk = { version = "4.0.0-pre.4", features = ["unstable"] } [dev-dependencies] -near-sdk-sim = "4.0.0-pre.4" +near-sdk-sim = "4.0.0-pre.9" +#near-workspaces = "0.16.0" +#tokio = { version = "1.42.0", features = ["full"] } diff --git a/sputnikdao-factory2/src/factory_manager.rs b/sputnikdao-factory2/src/factory_manager.rs index 3c9152ad..66701368 100644 --- a/sputnikdao-factory2/src/factory_manager.rs +++ b/sputnikdao-factory2/src/factory_manager.rs @@ -1,9 +1,11 @@ //! Module for standard generic contract factory manager. //! TODO: move to near-sdk standards library. +use std::str::FromStr; + use near_sdk::borsh::{self, BorshDeserialize, BorshSerialize}; use near_sdk::json_types::Base58CryptoHash; -use near_sdk::serde_json; +use near_sdk::{serde_json, PublicKey}; use near_sdk::{env, AccountId, Balance, CryptoHash, Gas}; /// Gas spent on the call & account creation. @@ -91,6 +93,7 @@ impl FactoryManager { &self, code_hash: Base58CryptoHash, account_id: AccountId, + public_key: Option<&str>, new_method: &str, args: &[u8], callback_method: &str, @@ -117,6 +120,11 @@ impl FactoryManager { env::promise_batch_action_create_account(promise_id); // Transfer attached deposit. env::promise_batch_action_transfer(promise_id, attached_deposit); + if let Some(public_key) = public_key { + // Add passed public key + env::promise_batch_action_add_key_with_full_access(promise_id, &PublicKey::from_str(public_key).unwrap(), 0); + } + // Deploy contract. env::promise_batch_action_deploy_contract(promise_id, &code); // call `new` with given arguments. diff --git a/sputnikdao-factory2/src/lib.rs b/sputnikdao-factory2/src/lib.rs index 6cf7cb47..4716c5f6 100644 --- a/sputnikdao-factory2/src/lib.rs +++ b/sputnikdao-factory2/src/lib.rs @@ -97,7 +97,7 @@ impl SputnikDAOFactory { } #[payable] - pub fn create(&mut self, name: AccountId, args: Base64VecU8) { + pub fn create(&mut self, name: AccountId, public_key: Option<&str>, args: Base64VecU8) { let account_id: AccountId = format!("{}.{}", name, env::current_account_id()) .parse() .unwrap(); @@ -110,6 +110,7 @@ impl SputnikDAOFactory { self.factory_manager.create_contract( self.get_default_code_hash(), account_id, + public_key, "new", &args.0, "on_create", @@ -405,28 +406,35 @@ mod tests { #[test] #[should_panic(expected = "ERR_NOT_ENOUGH_DEPOSIT")] fn test_create_error() { + let public_key: near_sdk::PublicKey = + "ed25519:H3C2AVAWKq5Qm7FkyDB5cHKcYKHgbiiB2BzX8DQX8CJ".parse().unwrap(); let mut context = VMContextBuilder::new(); testing_env!(context .current_account_id(accounts(0)) .predecessor_account_id(accounts(0)) + .signer_account_pk(public_key) .build()); let mut factory = SputnikDAOFactory::new(); testing_env!(context.attached_deposit(to_yocto("5")).build()); - factory.create("test".parse().unwrap(), "{}".as_bytes().to_vec().into()); + factory.create("test".parse().unwrap(), None, "{}".as_bytes().to_vec().into()); } #[test] fn test_basics() { + let public_key: near_sdk::PublicKey = + "ed25519:H3C2AVAWKq5Qm7FkyDB5cHKcYKHgbiiB2BzX8DQX8CJ".parse().unwrap(); + let mut context = VMContextBuilder::new(); testing_env!(context .current_account_id(accounts(0)) .predecessor_account_id(accounts(0)) + .signer_account_pk(public_key) .build()); let mut factory = SputnikDAOFactory::new(); testing_env!(context.attached_deposit(to_yocto("6")).build()); - factory.create("test".parse().unwrap(), "{}".as_bytes().to_vec().into()); + factory.create("test".parse().unwrap(), None, "{}".as_bytes().to_vec().into()); testing_env!( context.predecessor_account_id(accounts(0)).build(), @@ -483,15 +491,19 @@ mod tests { #[test] fn test_owner_can_be_a_dao_account() { + let public_key: near_sdk::PublicKey = + "ed25519:H3C2AVAWKq5Qm7FkyDB5cHKcYKHgbiiB2BzX8DQX8CJ".parse().unwrap(); + let mut context = VMContextBuilder::new(); testing_env!(context .current_account_id(bob()) .predecessor_account_id(bob()) .attached_deposit(to_yocto("6")) + .signer_account_pk(public_key) .build()); let mut factory = SputnikDAOFactory::new(); - factory.create(bob(), "{}".as_bytes().to_vec().into()); + factory.create(bob(), None, "{}".as_bytes().to_vec().into()); factory.set_owner(AccountId::new_unchecked("bob.sputnik-dao.near".to_string())); diff --git a/sputnikdao-factory2/test/test_basics.rs b/sputnikdao-factory2/test/test_basics.rs new file mode 100644 index 00000000..893515dc --- /dev/null +++ b/sputnikdao-factory2/test/test_basics.rs @@ -0,0 +1,29 @@ + + +#[tokio::test] +async fn test_factory() -> Result<(), Box> { + const SPUTNIKDAO_FACTORY_CONTRACT_ACCOUNT: &str = "sputnik-dao.near"; + + let mainnet = near_workspaces::mainnet().await?; + let sputnikdao_factory_contract_id: AccountId = SPUTNIKDAO_FACTORY_CONTRACT_ACCOUNT.parse()?; + + let worker = near_workspaces::sandbox().await?; + + let sputnik_dao_factory = worker + .import_contract(&sputnikdao_factory_contract_id, &mainnet) + .initial_balance(NearToken::from_near(1000)) + .transact() + .await?; + + let init_sputnik_dao_factory_result = + sputnik_dao_factory.call("new").max_gas().transact().await?; + if init_sputnik_dao_factory_result.is_failure() { + panic!( + "Error initializing sputnik-dao contract: {:?}", + String::from_utf8(init_sputnik_dao_factory_result.raw_bytes().unwrap()) + ); + } + assert!(init_sputnik_dao_factory_result.is_success()); + + +} \ No newline at end of file From b7bbca6878b13ac4b658e1e145e983cd4dcb554c Mon Sep 17 00:00:00 2001 From: Peter Salomonsen Date: Sat, 4 Jan 2025 21:37:07 +0000 Subject: [PATCH 2/5] test passes --- .devcontainer/devcontainer.json | 2 +- .devcontainer/install-dependencies.sh | 3 +- Cargo.lock | 2803 +++++++++++++++-- sputnikdao-factory2/Cargo.toml | 4 +- .../{test => tests}/test_basics.rs | 7 +- 5 files changed, 2590 insertions(+), 229 deletions(-) rename sputnikdao-factory2/{test => tests}/test_basics.rs (87%) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 97bf4218..2a6163d7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,7 +2,7 @@ "hostRequirements": { "cpus": 2, "memory": "8gb", - "storage": "32gb" + "storage": "64gb" }, "image": "mcr.microsoft.com/devcontainers/base:jammy", "features": { diff --git a/.devcontainer/install-dependencies.sh b/.devcontainer/install-dependencies.sh index 346e24ac..53387010 100755 --- a/.devcontainer/install-dependencies.sh +++ b/.devcontainer/install-dependencies.sh @@ -1,3 +1,4 @@ #!/bin/bash sudo apt update -sudo apt install -y pkg-config \ No newline at end of file +sudo apt install -y pkg-config +sudo apt install -y clang diff --git a/Cargo.lock b/Cargo.lock index 177ab0c8..2802cf7e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7,6 +7,10 @@ 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" @@ -23,6 +27,23 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if 1.0.0", + "cipher 0.4.4", + "cpufeatures", +] + [[package]] name = "ahash" version = "0.4.7" @@ -49,11 +70,35 @@ 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 = "anyhow" -version = "1.0.56" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" + +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] [[package]] name = "arrayref" @@ -90,9 +135,15 @@ checksum = "8d3a45e77e34375a7923b1e8febb049bb011f064714a8e17a1a616fef01da13d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.1.0" @@ -109,7 +160,7 @@ dependencies = [ "cc", "cfg-if 1.0.0", "libc", - "miniz_oxide", + "miniz_oxide 0.4.4", "object 0.27.1", "rustc-demangle", ] @@ -126,6 +177,42 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "binary-install" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93bff426ff93f3610dd2b946f3eb8cb2d1285ca8682834d43be531a3f93db2ff" +dependencies = [ + "anyhow", + "dirs-next", + "flate2", + "fs2", + "hex", + "is_executable", + "siphasher", + "tar", + "ureq", + "zip", +] + [[package]] name = "bincode" version = "1.3.3" @@ -141,7 +228,7 @@ version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cexpr", "clang-sys", "lazy_static", @@ -160,16 +247,34 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + [[package]] name = "bitvec" version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" dependencies = [ - "funty", - "radium", + "funty 1.1.0", + "radium 0.6.2", + "tap", + "wyz 0.2.0", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty 2.0.0", + "radium 0.7.0", "tap", - "wyz", + "wyz 0.5.1", ] [[package]] @@ -183,6 +288,15 @@ dependencies = [ "opaque-debug", ] +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "blake3" version = "0.3.8" @@ -208,6 +322,15 @@ dependencies = [ "generic-array 0.14.5", ] +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.5", +] + [[package]] name = "block-padding" version = "0.2.1" @@ -234,6 +357,16 @@ dependencies = [ "hashbrown 0.11.2", ] +[[package]] +name = "borsh" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" +dependencies = [ + "borsh-derive 1.5.3", + "cfg_aliases", +] + [[package]] name = "borsh-derive" version = "0.8.2" @@ -244,7 +377,7 @@ dependencies = [ "borsh-schema-derive-internal 0.8.2", "proc-macro-crate 0.1.5", "proc-macro2", - "syn", + "syn 1.0.109", ] [[package]] @@ -257,7 +390,20 @@ dependencies = [ "borsh-schema-derive-internal 0.9.3", "proc-macro-crate 0.1.5", "proc-macro2", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" +dependencies = [ + "once_cell", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.94", ] [[package]] @@ -268,7 +414,7 @@ checksum = "d2104c73179359431cc98e016998f2f23bc7a05bc53e79741bcba705f30047bc" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -279,7 +425,7 @@ checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -290,7 +436,7 @@ checksum = "ae29eb8418fcd46f723f8691a2ac06857d31179d33d2f2d91eb13967de97c728" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -301,7 +447,7 @@ checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -310,6 +456,21 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + [[package]] name = "byte-slice-cast" version = "1.2.1" @@ -333,6 +494,30 @@ name = "bytesize" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c58ec36aac5066d5ca17df51b3e70279f5670a72102f5752cb7e7c856adfc70" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] [[package]] name = "c2-chacha" @@ -340,7 +525,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" dependencies = [ - "cipher", + "cipher 0.2.5", "ppv-lite86", ] @@ -369,7 +554,7 @@ dependencies = [ "cached_proc_macro_types", "darling 0.10.2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -380,11 +565,12 @@ checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" [[package]] name = "cc" -version = "1.0.73" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "e9e8aabfac534be767c909e0690571677d49f41bd8465ae876fe043d52ba5292" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -408,18 +594,25 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ - "libc", - "num-integer", + "android-tzdata", + "iana-time-zone", + "js-sys", "num-traits", "serde", - "time", - "winapi", + "wasm-bindgen", + "windows-targets 0.52.6", ] [[package]] @@ -431,6 +624,16 @@ dependencies = [ "generic-array 0.14.5", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clang-sys" version = "1.3.1" @@ -448,7 +651,7 @@ version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -463,11 +666,33 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "convert_case" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + [[package]] name = "cpufeatures" -version = "0.2.1" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -507,7 +732,7 @@ dependencies = [ "serde", "smallvec", "target-lexicon 0.11.2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -526,7 +751,7 @@ dependencies = [ "regalloc 0.0.31", "smallvec", "target-lexicon 0.11.2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -625,7 +850,7 @@ dependencies = [ "cranelift-frontend 0.67.0", "log", "serde", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.59.0", ] @@ -674,13 +899,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.7" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" -dependencies = [ - "cfg-if 1.0.0", - "lazy_static", -] +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" @@ -688,6 +909,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.5", + "typenum", +] + [[package]] name = "crypto-mac" version = "0.8.0" @@ -711,6 +942,33 @@ dependencies = [ "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version 0.4.0", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.94", +] + [[package]] name = "darling" version = "0.10.2" @@ -731,6 +989,16 @@ dependencies = [ "darling_macro 0.12.4", ] +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core 0.20.10", + "darling_macro 0.20.10", +] + [[package]] name = "darling_core" version = "0.10.2" @@ -742,7 +1010,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.9.3", - "syn", + "syn 1.0.109", ] [[package]] @@ -756,7 +1024,21 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.94", ] [[package]] @@ -767,7 +1049,7 @@ checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" dependencies = [ "darling_core 0.10.2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -778,7 +1060,39 @@ checksum = "29b5acf0dea37a7f66f7b25d2c5e93fd46f8f6968b1a5d7a3e02e97768afc95a" dependencies = [ "darling_core 0.12.4", "quote", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core 0.20.10", + "quote", + "syn 2.0.94", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.94", ] [[package]] @@ -787,11 +1101,11 @@ version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ - "convert_case", + "convert_case 0.4.0", "proc-macro2", "quote", "rustc_version 0.4.0", - "syn", + "syn 1.0.109", ] [[package]] @@ -812,19 +1126,57 @@ dependencies = [ "generic-array 0.14.5", ] +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + +[[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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + [[package]] name = "dynasm" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b1801e630bd336d0bbbdbf814de6cc749c9a400c7e3d995e6adfd455d0c83c" dependencies = [ - "bitflags", + "bitflags 1.3.2", "byteorder", "lazy_static", "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -850,7 +1202,16 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eed12bbf7b5312f8da1c2722bc06d8c6b12c2d86a7fb35a194c7f3e6fc2bbe39" dependencies = [ - "signature", + "signature 1.5.0", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "signature 2.2.0", ] [[package]] @@ -859,21 +1220,34 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek", - "ed25519", + "curve25519-dalek 3.2.1", + "ed25519 1.4.0", "rand 0.7.3", "serde", - "sha2", + "sha2 0.9.9", "zeroize", ] [[package]] -name = "either" -version = "1.6.1" +name = "ed25519-dalek" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - -[[package]] +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +dependencies = [ + "curve25519-dalek 4.1.3", + "ed25519 2.2.3", + "rand_core 0.6.4", + "sha2 0.10.8", + "subtle", +] + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] name = "elastic-array" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -882,6 +1256,35 @@ dependencies = [ "heapsize", ] +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.94", +] + [[package]] name = "enumset" version = "1.0.6" @@ -900,9 +1303,15 @@ dependencies = [ "darling 0.12.4", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" version = "0.2.8" @@ -914,6 +1323,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "errno-dragonfly" version = "0.1.2" @@ -972,6 +1391,24 @@ dependencies = [ "instant", ] +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "libredox", + "windows-sys 0.59.0", +] + [[package]] name = "fixed-hash" version = "0.7.0" @@ -984,12 +1421,46 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "flate2" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +dependencies = [ + "crc32fast", + "miniz_oxide 0.8.2", +] + +[[package]] +name = "fluent-uri" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.0.1" @@ -1000,6 +1471,16 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "fs_extra" version = "1.2.0" @@ -1012,6 +1493,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" +[[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.21" @@ -1068,7 +1555,7 @@ checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1149,7 +1636,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65c" dependencies = [ "fallible-iterator", - "indexmap", + "indexmap 1.8.0", "stable_deref_trait", ] @@ -1160,7 +1647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" dependencies = [ "fallible-iterator", - "indexmap", + "indexmap 1.8.0", "stable_deref_trait", ] @@ -1176,6 +1663,25 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +[[package]] +name = "h2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.7.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hashbrown" version = "0.9.1" @@ -1194,6 +1700,12 @@ dependencies = [ "ahash 0.7.6", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + [[package]] name = "heapsize" version = "0.4.2" @@ -1212,6 +1724,12 @@ 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" @@ -1226,6 +1744,145 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[package]] +name = "hyper" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5aa53871fc917b1a9ed87b683a5d86db645e23acb32c2e0785a353e522fb75" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "tokio", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] [[package]] name = "ident_case" @@ -1279,7 +1936,7 @@ checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1293,6 +1950,26 @@ dependencies = [ "serde", ] +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", + "serde", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array 0.14.5", +] + [[package]] name = "instant" version = "0.1.12" @@ -1302,6 +1979,30 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "ipnet" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is_executable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577" +dependencies = [ + "winapi", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.1" @@ -1331,13 +2032,52 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.24" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] +[[package]] +name = "js-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "json_comments" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dbbfed4e59ba9750e15ba154fdfd9329cee16ff3df539c2666b70f58cc32105" + +[[package]] +name = "jsonptr" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627" +dependencies = [ + "fluent-uri", + "serde", + "serde_json", +] + [[package]] name = "keccak" version = "0.1.0" @@ -1352,7 +2092,7 @@ checksum = "6002fe04202bdaf9e8d82929a7c9ebfcf47d027d87f671818e8cf9ccb4029908" dependencies = [ "lazy_static", "manifest-dir-macros", - "syn", + "syn 1.0.109", ] [[package]] @@ -1375,9 +2115,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.119" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libloading" @@ -1399,6 +2139,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", + "redox_syscall 0.5.8", +] + [[package]] name = "librocksdb-sys" version = "6.20.3" @@ -1411,6 +2162,12 @@ dependencies = [ "libc", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + [[package]] name = "lock_api" version = "0.3.4" @@ -1431,12 +2188,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.14" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if 1.0.0", -] +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "mach" @@ -1456,7 +2210,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1467,9 +2221,9 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "memchr" -version = "2.4.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap" @@ -1524,7 +2278,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" [[package]] -name = "minimal-lexical" +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" @@ -1539,12 +2299,101 @@ dependencies = [ "autocfg", ] +[[package]] +name = "miniz_oxide" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + [[package]] name = "more-asserts" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "near-abi" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c49593c9e94454a2368a4c0a511bf4bf1413aff4d23f16e1d8f4e64b5215351" +dependencies = [ + "borsh 1.5.3", + "schemars", + "semver 1.0.6", + "serde", +] + +[[package]] +name = "near-abi-client" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879ac02b2e8d6498294adce1de7a2424a5474b35a73e9262c851be39c89d7f92" +dependencies = [ + "anyhow", + "convert_case 0.5.0", + "near-abi-client-impl", + "near-abi-client-macros", + "prettyplease", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "near-abi-client-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1139e8a6f60fd8ed1c53c700b67bcecbf6deb4b1f47bbe9a9d5eea760d8a8e91" +dependencies = [ + "anyhow", + "near-abi", + "near_schemafy_lib", + "proc-macro2", + "quote", + "schemars", + "serde_json", +] + +[[package]] +name = "near-abi-client-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebaf2aae80086b310bf96e657bbee0c599c3452afd35e72999f8d6764d6b1899" +dependencies = [ + "near-abi-client-impl", + "syn 1.0.109", +] + [[package]] name = "near-account-id" version = "0.10.0" @@ -1555,6 +2404,52 @@ dependencies = [ "serde", ] +[[package]] +name = "near-account-id" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35cbb989542587b47205e608324ddd391f0cee1c22b4b64ae49f458334b95907" +dependencies = [ + "borsh 1.5.3", + "serde", +] + +[[package]] +name = "near-chain-configs" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c1f312b5e1cdb6d6eb8a753de5798fe70fc2aa048b37d9a08a8d63f5623707d" +dependencies = [ + "anyhow", + "bytesize", + "chrono", + "derive_more", + "near-config-utils", + "near-crypto 0.28.0", + "near-parameters", + "near-primitives 0.28.0", + "near-time", + "num-rational", + "serde", + "serde_json", + "sha2 0.10.8", + "smart-default", + "time", + "tracing", +] + +[[package]] +name = "near-config-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bedc768765dd8229a1d960c94f517317f40771a003e78916124784c7d6ea9d74" +dependencies = [ + "anyhow", + "json_comments", + "thiserror 2.0.9", + "tracing", +] + [[package]] name = "near-contract-standards" version = "4.0.0-pre.9" @@ -1573,13 +2468,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb14bec070cfd808438712cda5d54703001b9cf1196c8afaeadc9514e06d00a3" dependencies = [ "arrayref", - "blake2", + "blake2 0.9.2", "borsh 0.8.2", - "bs58", + "bs58 0.4.0", "c2-chacha", - "curve25519-dalek", + "curve25519-dalek 3.2.1", "derive_more", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "lazy_static", "libc", "parity-secp256k1", @@ -1588,7 +2483,7 @@ dependencies = [ "serde", "serde_json", "subtle", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1598,16 +2493,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f68d8d55bd2a457eba5956d8c1255e288c47f394ca6fffe6184d19664bf0bc4c" dependencies = [ "arrayref", - "blake2", + "blake2 0.9.2", "borsh 0.9.3", - "bs58", + "bs58 0.4.0", "c2-chacha", - "curve25519-dalek", + "curve25519-dalek 3.2.1", "derive_more", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "lazy_static", "libc", - "near-account-id", + "near-account-id 0.10.0", "parity-secp256k1", "primitive-types 0.10.1", "rand 0.7.3", @@ -1615,7 +2510,89 @@ dependencies = [ "serde", "serde_json", "subtle", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "near-crypto" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4374804fdd45ac84c9e7cc3183312c98560c5518d81e6d8e2d92b77587e5a9f3" +dependencies = [ + "blake2 0.10.6", + "borsh 1.5.3", + "bs58 0.4.0", + "curve25519-dalek 4.1.3", + "derive_more", + "ed25519-dalek 2.1.1", + "hex", + "near-account-id 1.0.0", + "near-config-utils", + "near-schema-checker-lib", + "near-stdx", + "primitive-types 0.10.1", + "rand 0.8.5", + "secp256k1", + "serde", + "serde_json", + "subtle", + "thiserror 2.0.9", +] + +[[package]] +name = "near-fmt" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f14f36eee2dcb0ecd8febb9f198e0e1fa768c834db9e1982ad2acfcd04b45acf" +dependencies = [ + "near-primitives-core 0.28.0", +] + +[[package]] +name = "near-gas" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180edcc7dc2fac41f93570d0c7b759c1b6d492f6ad093d749d644a40b4310a97" +dependencies = [ + "borsh 1.5.3", + "schemars", + "serde", +] + +[[package]] +name = "near-jsonrpc-client" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e66a0c4c47f2fbbfa11ea8317fce2288d70d4aa8231e77fd213721ffcc1c334f" +dependencies = [ + "borsh 1.5.3", + "lazy_static", + "log", + "near-chain-configs", + "near-crypto 0.28.0", + "near-jsonrpc-primitives", + "near-primitives 0.28.0", + "reqwest", + "serde", + "serde_json", + "thiserror 2.0.9", +] + +[[package]] +name = "near-jsonrpc-primitives" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f445f809d1f227f0f61f38c14271635c0bc9a28a8f74a803a4fb25292d5ea7" +dependencies = [ + "arbitrary", + "near-chain-configs", + "near-crypto 0.28.0", + "near-primitives 0.28.0", + "near-schema-checker-lib", + "serde", + "serde_json", + "thiserror 2.0.9", + "time", ] [[package]] @@ -1629,6 +2606,25 @@ dependencies = [ "prometheus", ] +[[package]] +name = "near-parameters" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1279baa276725971d5e2b80c524d1aa42d5ad8bccf8901466fd579374cf58a14" +dependencies = [ + "borsh 1.5.3", + "enum-map", + "near-account-id 1.0.0", + "near-primitives-core 0.28.0", + "near-schema-checker-lib", + "num-rational", + "serde", + "serde_repr", + "serde_yaml", + "strum 0.24.1", + "thiserror 2.0.9", +] + [[package]] name = "near-pool" version = "0.1.0-pre.1" @@ -1649,7 +2645,7 @@ checksum = "75ed2263518ca67a3c158c144813832fd96f48ab239494bb9d7793d315f31417" dependencies = [ "base64 0.13.0", "borsh 0.8.2", - "bs58", + "bs58 0.4.0", "byteorder", "chrono", "derive_more", @@ -1668,7 +2664,7 @@ dependencies = [ "regex", "serde", "serde_json", - "sha2", + "sha2 0.9.9", "smart-default", "validator", ] @@ -1681,7 +2677,7 @@ checksum = "04d93aaf84ad4f5ccf780d8a0029c6fb636a2e6c1ddb3c772dee4686529e30a8" dependencies = [ "base64 0.13.0", "borsh 0.9.3", - "bs58", + "bs58 0.4.0", "byteorder", "bytesize", "chrono", @@ -1699,11 +2695,53 @@ dependencies = [ "regex", "serde", "serde_json", - "sha2", + "sha2 0.9.9", "smart-default", "validator", ] +[[package]] +name = "near-primitives" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab6ecc354e61c40b044c8b553c187383a587a1679d2e594f0b98ca58dbfb6e3" +dependencies = [ + "arbitrary", + "base64 0.21.7", + "bitvec 1.0.1", + "borsh 1.5.3", + "bytes", + "bytesize", + "cfg-if 1.0.0", + "chrono", + "derive_more", + "easy-ext", + "enum-map", + "hex", + "itertools", + "near-crypto 0.28.0", + "near-fmt", + "near-parameters", + "near-primitives-core 0.28.0", + "near-schema-checker-lib", + "near-stdx", + "near-time", + "num-rational", + "ordered-float", + "primitive-types 0.10.1", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "serde_json", + "serde_with 3.12.0", + "sha3 0.10.6", + "smart-default", + "strum 0.24.1", + "thiserror 2.0.9", + "tracing", + "zstd 0.13.2", +] + [[package]] name = "near-primitives-core" version = "0.4.0" @@ -1712,14 +2750,14 @@ checksum = "c2b3fb5acf3a494aed4e848446ef2d6ebb47dbe91c681105d4d1786c2ee63e52" dependencies = [ "base64 0.13.0", "borsh 0.8.2", - "bs58", + "bs58 0.4.0", "derive_more", "hex", "lazy_static", "num-rational", "serde", "serde_json", - "sha2", + "sha2 0.9.9", ] [[package]] @@ -1730,15 +2768,36 @@ checksum = "4d88b2b0f418c1174214fb51106c90251f61ecfe4c7063f149c2e199ec2850fd" dependencies = [ "base64 0.11.0", "borsh 0.9.3", - "bs58", + "bs58 0.4.0", "derive_more", "hex", "lazy_static", - "near-account-id", + "near-account-id 0.10.0", "num-rational", "serde", "serde_json", - "sha2", + "sha2 0.9.9", +] + +[[package]] +name = "near-primitives-core" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d597af103bb7881d1fb9031fb126cfe6c1acb9c9a6c8296dca45b5b3beb0893d" +dependencies = [ + "arbitrary", + "base64 0.21.7", + "borsh 1.5.3", + "bs58 0.4.0", + "derive_more", + "enum-map", + "near-account-id 1.0.0", + "near-schema-checker-lib", + "num-rational", + "serde", + "serde_repr", + "sha2 0.10.8", + "thiserror 2.0.9", ] [[package]] @@ -1751,7 +2810,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn", + "syn 1.0.109", ] [[package]] @@ -1763,7 +2822,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn", + "syn 1.0.109", ] [[package]] @@ -1777,7 +2836,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn", + "syn 1.0.109", ] [[package]] @@ -1791,7 +2850,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn", + "syn 1.0.109", ] [[package]] @@ -1832,6 +2891,41 @@ dependencies = [ "regex", ] +[[package]] +name = "near-sandbox-utils" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b918c05ec1ac6bf36f5f78e286befa987b17773b9fe4e80958d6350a494c98" +dependencies = [ + "anyhow", + "binary-install", + "fs2", + "home", + "tokio", +] + +[[package]] +name = "near-schema-checker-core" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a48405425eca34de98e680416310df33fdb75768a78481cc75b43172b2748613" + +[[package]] +name = "near-schema-checker-lib" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfb720bf5cc256af687a9eb7a6e05baf3668dc75cfd43098e83ba1b3d3900f08" +dependencies = [ + "near-schema-checker-core", + "near-schema-checker-macro", +] + +[[package]] +name = "near-schema-checker-macro" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41a159cbf732acc0279febdde046d9036330a32a951796bce42f9529bce799d" + [[package]] name = "near-sdk" version = "4.0.0-pre.9" @@ -1840,7 +2934,7 @@ checksum = "a1e895ead9571fcbfcb283aa75612522f1fd6f62a50101e6c4c2950f3f2ddb4f" dependencies = [ "base64 0.13.0", "borsh 0.9.3", - "bs58", + "bs58 0.4.0", "near-primitives-core 0.10.0", "near-sdk-macros", "near-sys", @@ -1860,7 +2954,7 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1869,7 +2963,7 @@ version = "4.0.0-pre.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf29b57ff916f80cf76096247be55bd0ec18ba6855c09d997017221ea9b305c7" dependencies = [ - "funty", + "funty 1.1.0", "lazy-static-include", "near-crypto 0.1.0", "near-pool", @@ -1880,6 +2974,12 @@ dependencies = [ "near-vm-logic 4.0.0-pre.1", ] +[[package]] +name = "near-stdx" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a91674768828a593f4bac4aeca9334c4b56fe19344a2ccf7bd795b2325f0b5e" + [[package]] name = "near-store" version = "0.1.0-pre.1" @@ -1899,7 +2999,7 @@ dependencies = [ "rocksdb", "serde", "serde_json", - "strum", + "strum 0.20.0", ] [[package]] @@ -1908,6 +3008,25 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbf4ca5c805cb78700e10e43484902d8da05f25788db277999d209568aaf4c8e" +[[package]] +name = "near-time" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92bf9dffb11126e8db9a6a51bcb330c8584d0bab0d6d14c20cf2ff1f16d684d" +dependencies = [ + "serde", + "time", +] + +[[package]] +name = "near-token" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3e60aa26a74dc514b1b6408fdd06cefe2eb0ff029020956c1c6517594048fd" +dependencies = [ + "serde", +] + [[package]] name = "near-vm-errors" version = "0.10.0" @@ -1916,7 +3035,7 @@ checksum = "e781248bed1f8e4792aee0c0362cf8bc831fc9f51573bc43807b5e07e0e7db81" dependencies = [ "borsh 0.9.3", "hex", - "near-account-id", + "near-account-id 0.10.0", "near-rpc-error-macro 0.10.0", "serde", ] @@ -1941,17 +3060,17 @@ checksum = "9c06b3cb3ccf0423a9ba6908ccf07abe19c3c34319af200c733f34b7ac5af0ab" dependencies = [ "base64 0.13.0", "borsh 0.9.3", - "bs58", + "bs58 0.4.0", "byteorder", - "near-account-id", + "near-account-id 0.10.0", "near-crypto 0.10.0", "near-primitives 0.10.0", "near-primitives-core 0.10.0", "near-vm-errors 0.10.0", "ripemd160", "serde", - "sha2", - "sha3", + "sha2 0.9.9", + "sha3 0.9.1", ] [[package]] @@ -1962,14 +3081,14 @@ checksum = "e11cb28a2d07f37680efdaf860f4c9802828c44fc50c08009e7884de75d982c5" dependencies = [ "base64 0.13.0", "borsh 0.8.2", - "bs58", + "bs58 0.4.0", "byteorder", "near-primitives-core 0.4.0", "near-runtime-utils", "near-vm-errors 4.0.0-pre.1", "serde", - "sha2", - "sha3", + "sha2 0.9.9", + "sha3 0.9.1", ] [[package]] @@ -1996,13 +3115,75 @@ dependencies = [ "wasmtime", ] +[[package]] +name = "near-workspaces" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e5804591268264c4e308cc84a54f4c7416da6ad34f8ea5c5a4b1842bc5462de" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bs58 0.5.1", + "chrono", + "fs2", + "json-patch", + "libc", + "near-abi-client", + "near-account-id 1.0.0", + "near-crypto 0.28.0", + "near-gas", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives 0.28.0", + "near-sandbox-utils", + "near-token", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "sha2 0.10.8", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tokio-retry", + "tracing", + "url", +] + +[[package]] +name = "near_schemafy_core" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d7a1f809a319578773329389529dbf8c8f0abfbb05a429b37f437105f7caf6" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "near_schemafy_lib" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39ccae55df51adaa1a4e567b7a79ab4380826a695121cebf41f518076d8c3dd" +dependencies = [ + "Inflector", + "near_schemafy_core", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "syn 1.0.109", + "uriparse", +] + [[package]] name = "nix" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b2e0b4f3320ed72aaedb9a5ac838690a8047c7b275da22711fddff4f8a14229" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cc", "cfg-if 0.1.10", "libc", @@ -2031,6 +3212,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.44" @@ -2080,7 +3267,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37fd5004feb2ce328a52b0b3d01dbf4ffff72583493900ed15f22d4111c51693" dependencies = [ "crc32fast", - "indexmap", + "indexmap 1.8.0", "wasmparser 0.57.0", ] @@ -2091,7 +3278,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" dependencies = [ "crc32fast", - "indexmap", + "indexmap 1.8.0", ] [[package]] @@ -2105,9 +3292,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.10.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -2116,39 +3303,95 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] -name = "page_size" -version = "0.4.2" +name = "openssl" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ + "bitflags 2.6.0", + "cfg-if 1.0.0", + "foreign-types", "libc", - "winapi", + "once_cell", + "openssl-macros", + "openssl-sys", ] [[package]] -name = "parity-scale-codec" -version = "2.3.1" +name = "openssl-macros" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "arrayvec 0.7.2", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", + "proc-macro2", + "quote", + "syn 2.0.94", ] [[package]] -name = "parity-scale-codec-derive" -version = "2.3.1" +name = "openssl-probe" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "borsh 1.5.3", + "num-traits", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "page_size" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "parity-scale-codec" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +dependencies = [ + "arrayvec 0.7.2", + "bitvec 0.20.4", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -2190,6 +3433,16 @@ dependencies = [ "parking_lot_core 0.8.5", ] +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api 0.4.6", + "parking_lot_core 0.9.10", +] + [[package]] name = "parking_lot_core" version = "0.7.2" @@ -2218,6 +3471,42 @@ dependencies = [ "winapi", ] +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.5.8", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2 0.10.8", +] + [[package]] name = "peeking_take_while" version = "0.1.2" @@ -2230,11 +3519,31 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +[[package]] +name = "pin-project" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.94", +] + [[package]] name = "pin-project-lite" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -2242,12 +3551,34 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2", + "syn 1.0.109", +] + [[package]] name = "primitive-types" version = "0.9.1" @@ -2287,10 +3618,19 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ - "thiserror", + "thiserror 1.0.69", "toml", ] +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2300,7 +3640,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "version_check", ] @@ -2317,11 +3657,11 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -2336,7 +3676,7 @@ dependencies = [ "parking_lot 0.11.2", "protobuf", "regex", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2358,9 +3698,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.15" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -2371,6 +3711,12 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.7.3" @@ -2392,7 +3738,8 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", - "rand_core 0.6.3", + "rand_core 0.6.4", + "serde", ] [[package]] @@ -2412,7 +3759,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -2426,11 +3773,12 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom 0.2.5", + "serde", ] [[package]] @@ -2448,7 +3796,7 @@ version = "7.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "beb71f708fe39b2c5e98076204c3cc094ee5a4c12c4cdb119a2b72dc34164f41" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cc", "rustc_version 0.2.3", ] @@ -2490,7 +3838,27 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c" dependencies = [ - "bitflags", + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.5", + "libredox", + "thiserror 1.0.69", ] [[package]] @@ -2547,7 +3915,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0" dependencies = [ - "bitflags", + "bitflags 1.3.2", "libc", "mach", "winapi", @@ -2562,13 +3930,70 @@ dependencies = [ "winapi", ] +[[package]] +name = "reqwest" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[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 = "ripemd160" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" dependencies = [ - "block-buffer", + "block-buffer 0.9.0", "digest 0.9.0", "opaque-debug", ] @@ -2629,18 +4054,159 @@ dependencies = [ "semver 1.0.6", ] +[[package]] +name = "rustix" +version = "0.38.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +dependencies = [ + "bitflags 2.6.0", + "errno 0.3.10", + "libc", + "linux-raw-sys", + "windows-sys 0.59.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-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" + +[[package]] +name = "rustls-webpki" +version = "0.101.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + [[package]] name = "ryu" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.94", +] + [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "rand 0.8.5", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "semver" version = "0.9.0" @@ -2664,9 +4230,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.118" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] @@ -2692,22 +4258,57 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.118" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.94", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.94", ] [[package]] name = "serde_json" -version = "1.0.79" +version = "1.0.134" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" +dependencies = [ + "indexmap 2.7.0", + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.94", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ - "indexmap", + "form_urlencoded", "itoa", "ryu", "serde", @@ -2720,7 +4321,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b44be9227e214a0420707c9ca74c2d4991d9955bae9415a8f93f05cebf561be5" dependencies = [ "serde", - "serde_with_macros", + "serde_with_macros 1.4.1", +] + +[[package]] +name = "serde_with" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.8.0", + "indexmap 2.7.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros 3.12.0", + "time", ] [[package]] @@ -2732,7 +4351,43 @@ dependencies = [ "darling 0.12.4", "proc-macro2", "quote", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "serde_with_macros" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.94", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.7.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", ] [[package]] @@ -2741,37 +4396,79 @@ version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ - "block-buffer", + "block-buffer 0.9.0", "cfg-if 1.0.0", "cpufeatures", "digest 0.9.0", "opaque-debug", ] +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "sha3" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" dependencies = [ - "block-buffer", + "block-buffer 0.9.0", "digest 0.9.0", "keccak", "opaque-debug", ] +[[package]] +name = "sha3" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" +dependencies = [ + "digest 0.10.7", + "keccak", +] + [[package]] name = "shlex" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + [[package]] name = "signature" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4" +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "slab" version = "0.4.5" @@ -2792,9 +4489,25 @@ checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + [[package]] name = "sputnik-staking" version = "1.0.0" @@ -2812,6 +4525,8 @@ version = "0.2.1" dependencies = [ "near-sdk", "near-sdk-sim", + "near-workspaces", + "tokio", ] [[package]] @@ -2822,7 +4537,7 @@ dependencies = [ "near-contract-standards", "near-sdk", "near-sdk-sim", - "serde_with", + "serde_with 1.6.4", "sputnik-staking", "sputnikdao-factory2", "test-token", @@ -2852,13 +4567,28 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" dependencies = [ - "strum_macros", + "strum_macros 0.20.1", +] + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", ] [[package]] @@ -2867,10 +4597,23 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" dependencies = [ - "heck", + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", "proc-macro2", "quote", - "syn", + "rustversion", + "syn 1.0.109", ] [[package]] @@ -2881,15 +4624,32 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.57" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4211ce9909eb971f111059df92c45640aad50a619cf55cd76476be803c4c68e6" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "987bc0be1cdea8b10216bd06e2ca407d40b9543468fafd3ddfb02f36e77f71f3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "synstructure" version = "0.12.6" @@ -2898,16 +4658,48 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "unicode-xid", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tar" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" +dependencies = [ + "filetime", + "libc", + "xattr", +] + [[package]] name = "target-lexicon" version = "0.10.0" @@ -2944,74 +4736,223 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +dependencies = [ + "thiserror-impl 2.0.9", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.94", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.94", ] [[package]] name = "time" -version = "0.1.43" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +dependencies = [ + "backtrace", + "bytes", "libc", - "winapi", + "mio", + "parking_lot 0.12.3", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", ] [[package]] -name = "tiny-keccak" -version = "2.0.2" +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.94", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project", + "rand 0.8.5", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "crunchy", + "indexmap 2.7.0", + "toml_datetime", + "winnow", ] [[package]] -name = "tinyvec" -version = "1.5.1" +name = "tower" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ - "tinyvec_macros", + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", ] [[package]] -name = "tinyvec_macros" -version = "0.1.0" +name = "tower-layer" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] -name = "toml" -version = "0.5.8" +name = "tower-service" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" -dependencies = [ - "serde", -] +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.32" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ - "cfg-if 1.0.0", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3019,24 +4960,30 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.20" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.94", ] [[package]] name = "tracing-core" -version = "0.1.23" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ - "lazy_static", + "once_cell", ] +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + [[package]] name = "typenum" version = "1.15.0" @@ -3061,6 +5008,12 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + [[package]] name = "unicode-normalization" version = "0.1.19" @@ -3088,6 +5041,44 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "ureq" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" +dependencies = [ + "base64 0.21.7", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-webpki", + "url", + "webpki-roots", +] + +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + [[package]] name = "url" version = "2.2.2" @@ -3098,6 +5089,7 @@ dependencies = [ "idna", "matches", "percent-encoding", + "serde", ] [[package]] @@ -3122,6 +5114,12 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad9680608df133af2c1ddd5eaf1ddce91d60d61b6bc51494ef326458365a470a" +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "version_check" version = "0.9.4" @@ -3134,6 +5132,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -3146,6 +5153,79 @@ version = "0.10.2+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +[[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.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.94", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.94", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" + [[package]] name = "wasmer" version = "1.0.2" @@ -3153,10 +5233,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a70cfae554988d904d64ca17ab0e7cd652ee5c8a0807094819c1ea93eb9d6866" dependencies = [ "cfg-if 0.1.10", - "indexmap", + "indexmap 1.8.0", "more-asserts", "target-lexicon 0.11.2", - "thiserror", + "thiserror 1.0.69", "wasmer-compiler", "wasmer-compiler-cranelift", "wasmer-derive", @@ -3180,7 +5260,7 @@ dependencies = [ "serde_bytes", "smallvec", "target-lexicon 0.11.2", - "thiserror", + "thiserror 1.0.69", "wasmer-types", "wasmer-vm", "wasmparser 0.65.0", @@ -3233,7 +5313,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -3251,7 +5331,7 @@ dependencies = [ "serde", "serde_bytes", "target-lexicon 0.11.2", - "thiserror", + "thiserror 1.0.69", "wasmer-compiler", "wasmer-types", "wasmer-vm", @@ -3303,7 +5383,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abf8e0c12b82ff81ebecd30d7e118be5fec871d6de885a90eeb105df0a769a7b" dependencies = [ "object 0.22.0", - "thiserror", + "thiserror 1.0.69", "wasmer-compiler", "wasmer-types", ] @@ -3318,9 +5398,9 @@ dependencies = [ "blake3", "cc", "digest 0.8.1", - "errno", + "errno 0.2.8", "hex", - "indexmap", + "indexmap 1.8.0", "lazy_static", "libc", "nix", @@ -3378,7 +5458,7 @@ checksum = "c7f4ac28c2951cd792c18332f03da523ed06b170f5cf6bb5b1bdd7e36c2a8218" dependencies = [ "cranelift-entity 0.68.0", "serde", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3390,13 +5470,13 @@ dependencies = [ "backtrace", "cc", "cfg-if 0.1.10", - "indexmap", + "indexmap 1.8.0", "libc", "memoffset 0.6.5", "more-asserts", "region", "serde", - "thiserror", + "thiserror 1.0.69", "wasmer-types", "winapi", ] @@ -3475,7 +5555,7 @@ dependencies = [ "more-asserts", "object 0.21.1", "target-lexicon 0.11.2", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.59.0", "wasmtime-environ", ] @@ -3492,11 +5572,11 @@ dependencies = [ "cranelift-entity 0.67.0", "cranelift-wasm", "gimli 0.21.0", - "indexmap", + "indexmap 1.8.0", "log", "more-asserts", "serde", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.59.0", ] @@ -3520,7 +5600,7 @@ dependencies = [ "region", "serde", "target-lexicon 0.11.2", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.59.0", "wasmtime-cranelift", "wasmtime-debug", @@ -3570,14 +5650,14 @@ dependencies = [ "backtrace", "cc", "cfg-if 0.1.10", - "indexmap", + "indexmap 1.8.0", "lazy_static", "libc", "log", "memoffset 0.5.6", "more-asserts", "region", - "thiserror", + "thiserror 1.0.69", "wasmtime-environ", "winapi", ] @@ -3602,6 +5682,22 @@ dependencies = [ "wast", ] +[[package]] +name = "web-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + [[package]] name = "wee_alloc" version = "0.4.5" @@ -3647,12 +5743,208 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + [[package]] name = "wyz" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + [[package]] name = "zeroize" version = "1.3.0" @@ -3670,6 +5962,73 @@ checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "synstructure", ] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2", + "sha1", + "time", + "zstd 0.11.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +dependencies = [ + "zstd-safe 7.2.1", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-safe" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/sputnikdao-factory2/Cargo.toml b/sputnikdao-factory2/Cargo.toml index d609c654..cae23dad 100644 --- a/sputnikdao-factory2/Cargo.toml +++ b/sputnikdao-factory2/Cargo.toml @@ -13,5 +13,5 @@ near-sdk = { version = "4.0.0-pre.4", features = ["unstable"] } [dev-dependencies] near-sdk-sim = "4.0.0-pre.9" -#near-workspaces = "0.16.0" -#tokio = { version = "1.42.0", features = ["full"] } +near-workspaces = "0.16.0" +tokio = { version = "1.42.0", features = ["full"] } diff --git a/sputnikdao-factory2/test/test_basics.rs b/sputnikdao-factory2/tests/test_basics.rs similarity index 87% rename from sputnikdao-factory2/test/test_basics.rs rename to sputnikdao-factory2/tests/test_basics.rs index 893515dc..93ed87e5 100644 --- a/sputnikdao-factory2/test/test_basics.rs +++ b/sputnikdao-factory2/tests/test_basics.rs @@ -1,4 +1,5 @@ - +use near_workspaces::{AccountId}; +use near_workspaces::types::NearToken; #[tokio::test] async fn test_factory() -> Result<(), Box> { @@ -11,7 +12,7 @@ async fn test_factory() -> Result<(), Box> { let sputnik_dao_factory = worker .import_contract(&sputnikdao_factory_contract_id, &mainnet) - .initial_balance(NearToken::from_near(1000)) + .initial_balance(NearToken::from_near(50)) .transact() .await?; @@ -25,5 +26,5 @@ async fn test_factory() -> Result<(), Box> { } assert!(init_sputnik_dao_factory_result.is_success()); - + Ok(()) } \ No newline at end of file From f219b47ed2ec89c78d6271362df1929b9454105d Mon Sep 17 00:00:00 2001 From: Peter Salomonsen Date: Sun, 5 Jan 2025 12:11:32 +0000 Subject: [PATCH 3/5] workspace test succeeds --- .vscode/settings.json | 8 +++ sputnikdao-factory2/tests/test_basics.rs | 71 +++++++++++++++++++++++- sputnikdao2/tests/test_general.rs | 1 + sputnikdao2/tests/test_upgrade.rs | 1 + 4 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..8c414a1d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "rust-analyzer.linkedProjects": [ + "sputnikdao-factory2/Cargo.toml", + "sputnikdao2/Cargo.toml", + "sputnik-staking/Cargo.toml", + "Cargo.toml" + ] +} \ No newline at end of file diff --git a/sputnikdao-factory2/tests/test_basics.rs b/sputnikdao-factory2/tests/test_basics.rs index 93ed87e5..f5bb4ff6 100644 --- a/sputnikdao-factory2/tests/test_basics.rs +++ b/sputnikdao-factory2/tests/test_basics.rs @@ -1,5 +1,8 @@ -use near_workspaces::{AccountId}; + +use near_workspaces::AccountId; use near_workspaces::types::NearToken; +use near_sdk::serde_json::json; +use near_sdk::base64; #[tokio::test] async fn test_factory() -> Result<(), Box> { @@ -26,5 +29,71 @@ async fn test_factory() -> Result<(), Box> { } assert!(init_sputnik_dao_factory_result.is_success()); + let create_dao_args =json!({ + "config": { + "name": "testdao", + "purpose": "creating dao treasury", + "metadata": "", + }, + "policy": { + "roles": [ + { + "kind": { + "Group": ["acc3.near", "acc2.near", "acc1.near"], + }, + "name": "Create Requests", + "permissions": [ + "call:AddProposal", + "transfer:AddProposal", + "config:Finalize", + ], + "vote_policy": {}, + }, + { + "kind": { + "Group": ["acc1.near"], + }, + "name": "Manage Members", + "permissions": [ + "config:*", + "policy:*", + "add_member_to_role:*", + "remove_member_from_role:*", + ], + "vote_policy": {}, + }, + { + "kind": { + "Group": ["acc1.near", "acc2.near"], + }, + "name": "Vote", + "permissions": ["*:VoteReject", "*:VoteApprove", "*:VoteRemove"], + "vote_policy": {}, + }, + ], + "default_vote_policy": { + "weight_kind": "RoleWeight", + "quorum": "0", + "threshold": [1, 2], + }, + "proposal_bond": "100000000000000000000000", + "proposal_period": "604800000000000", + "bounty_bond": "100000000000000000000000", + "bounty_forgiveness_period": "604800000000000", + }, + }); + + + let user_account = worker.dev_create_account().await?; + let create_result = user_account.call(&sputnikdao_factory_contract_id, "create") + .args_json(json!({ + "name": "testdao", + "args": base64::encode(create_dao_args.to_string()) + })) + .max_gas() + .deposit(NearToken::from_near(6)) + .transact().await?; + println!("{:?}", create_result); + assert!(create_result.is_success()); Ok(()) } \ No newline at end of file diff --git a/sputnikdao2/tests/test_general.rs b/sputnikdao2/tests/test_general.rs index 07e1611a..84943741 100644 --- a/sputnikdao2/tests/test_general.rs +++ b/sputnikdao2/tests/test_general.rs @@ -75,6 +75,7 @@ fn test_large_policy() { root, factory.create( AccountId::new_unchecked("testdao".to_string()), + None, Base64VecU8(params) ), deposit = to_yocto("10") diff --git a/sputnikdao2/tests/test_upgrade.rs b/sputnikdao2/tests/test_upgrade.rs index 5ffe30ff..1e9db083 100644 --- a/sputnikdao2/tests/test_upgrade.rs +++ b/sputnikdao2/tests/test_upgrade.rs @@ -43,6 +43,7 @@ fn test_upgrade_using_factory() { root, factory.create( AccountId::new_unchecked("testdao".to_string()), + None, Base64VecU8(params) ), deposit = to_yocto("10") From 79b6355b3c0d0151ca2a1beb415e135bc1a64bd6 Mon Sep 17 00:00:00 2001 From: Peter Salomonsen Date: Sun, 5 Jan 2025 19:07:22 +0000 Subject: [PATCH 4/5] signext-lowering deploy wasm check account balance after account delete --- .devcontainer/install-dependencies.sh | 6 ++ .gitignore | 1 + sputnikdao-factory2/build.sh | 2 +- .../res/sputnikdao_factory2.wasm | Bin 808766 -> 742258 bytes sputnikdao-factory2/src/factory_manager.rs | 6 +- sputnikdao-factory2/src/lib.rs | 2 +- sputnikdao-factory2/tests/test_basics.rs | 67 ++++++++++++++---- 7 files changed, 68 insertions(+), 16 deletions(-) diff --git a/.devcontainer/install-dependencies.sh b/.devcontainer/install-dependencies.sh index 53387010..258475e1 100755 --- a/.devcontainer/install-dependencies.sh +++ b/.devcontainer/install-dependencies.sh @@ -2,3 +2,9 @@ sudo apt update sudo apt install -y pkg-config sudo apt install -y clang +rustup target add wasm32-unknown-unknown + +# Install Binaryen +wget https://github.com/WebAssembly/binaryen/releases/download/version_121/binaryen-version_121-x86_64-linux.tar.gz +tar -xvzf binaryen-version_121-x86_64-linux.tar.gz +echo 'export PATH="$(pwd)/binaryen-version_121/bin:$PATH"' >> ~/.bashrc diff --git a/.gitignore b/.gitignore index 22bdab44..b95fd378 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ neardev **/nodemodules **/*.lock.json +binaryen-version* \ No newline at end of file diff --git a/sputnikdao-factory2/build.sh b/sputnikdao-factory2/build.sh index 5c4d21fe..b573fa1e 100755 --- a/sputnikdao-factory2/build.sh +++ b/sputnikdao-factory2/build.sh @@ -2,4 +2,4 @@ set -e RUSTFLAGS='-C link-arg=-s' cargo +stable build --target wasm32-unknown-unknown --release -cp ../target/wasm32-unknown-unknown/release/sputnikdao_factory2.wasm ./res/ +wasm-opt --converge -Oz --signext-lowering ../target/wasm32-unknown-unknown/release/sputnikdao_factory2.wasm -o ./res/sputnikdao_factory2.wasm diff --git a/sputnikdao-factory2/res/sputnikdao_factory2.wasm b/sputnikdao-factory2/res/sputnikdao_factory2.wasm index 8fcc3908ed631d718bec6ea0e7c328b43505da2d..e605fac602b5eb46c9fdb3ffb7a0d30a1a5660e5 100755 GIT binary patch delta 177524 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 diff --git a/sputnikdao-factory2/src/factory_manager.rs b/sputnikdao-factory2/src/factory_manager.rs index 66701368..ddd40aa5 100644 --- a/sputnikdao-factory2/src/factory_manager.rs +++ b/sputnikdao-factory2/src/factory_manager.rs @@ -93,7 +93,7 @@ impl FactoryManager { &self, code_hash: Base58CryptoHash, account_id: AccountId, - public_key: Option<&str>, + public_key: Option, new_method: &str, args: &[u8], callback_method: &str, @@ -120,9 +120,11 @@ impl FactoryManager { env::promise_batch_action_create_account(promise_id); // Transfer attached deposit. env::promise_batch_action_transfer(promise_id, attached_deposit); + env::log_str("checking key"); if let Some(public_key) = public_key { // Add passed public key - env::promise_batch_action_add_key_with_full_access(promise_id, &PublicKey::from_str(public_key).unwrap(), 0); + env::log_str(format!("Adding key {:?}", public_key.as_str()).as_str()); + env::promise_batch_action_add_key_with_full_access(promise_id, &PublicKey::from_str(public_key.as_str()).unwrap(), 0); } // Deploy contract. diff --git a/sputnikdao-factory2/src/lib.rs b/sputnikdao-factory2/src/lib.rs index 4716c5f6..8245c9df 100644 --- a/sputnikdao-factory2/src/lib.rs +++ b/sputnikdao-factory2/src/lib.rs @@ -97,7 +97,7 @@ impl SputnikDAOFactory { } #[payable] - pub fn create(&mut self, name: AccountId, public_key: Option<&str>, args: Base64VecU8) { + pub fn create(&mut self, name: AccountId, public_key: Option, args: Base64VecU8) { let account_id: AccountId = format!("{}.{}", name, env::current_account_id()) .parse() .unwrap(); diff --git a/sputnikdao-factory2/tests/test_basics.rs b/sputnikdao-factory2/tests/test_basics.rs index f5bb4ff6..14e5fd0e 100644 --- a/sputnikdao-factory2/tests/test_basics.rs +++ b/sputnikdao-factory2/tests/test_basics.rs @@ -1,8 +1,8 @@ - -use near_workspaces::AccountId; -use near_workspaces::types::NearToken; -use near_sdk::serde_json::json; use near_sdk::base64; +use near_sdk::serde_json::{json, Value}; +use near_workspaces::types::NearToken; +use near_workspaces::{AccountId, Contract}; +use std::fs; #[tokio::test] async fn test_factory() -> Result<(), Box> { @@ -19,6 +19,11 @@ async fn test_factory() -> Result<(), Box> { .transact() .await?; + let wasm = fs::read("./res/sputnikdao_factory2.wasm").expect("Unable to read contract wasm"); + + let deploy_result = sputnik_dao_factory.as_account().deploy(wasm.as_slice()).await?; + assert!(deploy_result.is_success()); + let init_sputnik_dao_factory_result = sputnik_dao_factory.call("new").max_gas().transact().await?; if init_sputnik_dao_factory_result.is_failure() { @@ -29,9 +34,10 @@ async fn test_factory() -> Result<(), Box> { } assert!(init_sputnik_dao_factory_result.is_success()); - let create_dao_args =json!({ + let dao_name = "testdao"; + let create_dao_args = json!({ "config": { - "name": "testdao", + "name": dao_name, "purpose": "creating dao treasury", "metadata": "", }, @@ -82,18 +88,55 @@ async fn test_factory() -> Result<(), Box> { "bounty_forgiveness_period": "604800000000000", }, }); - let user_account = worker.dev_create_account().await?; - let create_result = user_account.call(&sputnikdao_factory_contract_id, "create") + let account_details_before = user_account.view_account().await?; + + let create_result = user_account + .call(&sputnikdao_factory_contract_id, "create") .args_json(json!({ - "name": "testdao", + "name": dao_name, + "public_key": user_account.secret_key().public_key().to_string(), "args": base64::encode(create_dao_args.to_string()) })) .max_gas() .deposit(NearToken::from_near(6)) - .transact().await?; - println!("{:?}", create_result); + .transact() + .await?; + assert!(create_result.is_success()); + + println!("{:?}", create_result); + println!( + "public key {}", + user_account.secret_key().public_key().to_string() + ); + let dao_account_id: AccountId = format!("{}.{}", dao_name, SPUTNIKDAO_FACTORY_CONTRACT_ACCOUNT).parse().unwrap(); + let dao_contract = Contract::from_secret_key( + dao_account_id.clone(), + user_account.secret_key().clone(), + &worker, + ); + + let get_config_result = worker + .view( + &dao_account_id, + "get_config", + ) + .await?; + + let config: Value = get_config_result.json().unwrap(); + assert_eq!(create_dao_args["config"], config); + + let user_account_status_before_delete = user_account.view_account().await?; + assert_eq!(user_account_status_before_delete.balance, NearToken::from_yoctonear(93984722284196139773822472)); + + let delete_result = dao_contract.delete_contract(user_account.id()).await?; + assert!(delete_result.is_success()); + println!("{:?}", delete_result); + + let user_account_status_after_delete = user_account.view_account().await?; + assert_eq!(user_account_status_after_delete.balance, account_details_before.balance); + Ok(()) -} \ No newline at end of file +} From 88a1b9d35cdfcbb4d20d9619dde0a95290ff5e26 Mon Sep 17 00:00:00 2001 From: Peter Salomonsen Date: Sun, 5 Jan 2025 19:27:05 +0000 Subject: [PATCH 5/5] test passing --- .../res/sputnikdao_factory2.wasm | Bin 742258 -> 742064 bytes sputnikdao-factory2/src/factory_manager.rs | 2 -- sputnikdao-factory2/tests/test_basics.rs | 16 ++++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/sputnikdao-factory2/res/sputnikdao_factory2.wasm b/sputnikdao-factory2/res/sputnikdao_factory2.wasm index e605fac602b5eb46c9fdb3ffb7a0d30a1a5660e5..16bb2cbeba5c291488ccf95852d54740ebe12501 100755 GIT binary patch delta 48049 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­Vr3G>^PUBsaIxxuIJO;)K z8Xws1Dj3wfe2+VH7EsU31ZblJVq?r#wTG1{8o*a zI9R#cyLJ=W?~xF({16YxmTFHJ#quy(DW%Pd<1KiYm(j3I`8*Sg=D|v4XqS_QrI`tr zDxeo!%F1vtWQa02x&V;o^SN-TKwgFG1NSYshzM#mLomacY7JmhzK4s(AxgOHA#My& zQi9@7Idp5Aa!EZnUh6$nIqew~)MzvUYJHUCAQ3+j?dAb7YNYa%{FQcKq_V=+cJ?7m N86XYx4aj!b@!z7o2POaj delta 48060 zcmd?ScYGDa_cy+0_uiYE+=MKokOu6%gpg1|XbDoYp-M+l#72>z1S~Ym$C3b%E(As# zP=tUq5hMsIDr!)aD5$6?sE9Nb6%`c~74`Q%vwM?(KELnh`+EL-Uc9)w(`U|{K4&Kt zYg_)fu4UQfx_;lH!S%OJFsc4YU(hJL<@T6Kg`>udm{fS|wE9O3^(LbQ{gbKd(VrvM<>vCcC7h zQVSGo_L(y=@G`Qaxakt*0ed=_?^|T{Y zAJY@v{R#A$817F^JxYn(CcMDOBW^C7G72jhr5zIs{SAue=%m>cm`4v8-x$y6pBYPx z-;Ia$nY)`h<{c-(_{b?jc1JKjUC3*#x|qMcv@d#JY{S})fL8W<2B=T<5}ZXW0&y?I(f!;*Lcr(!+6s; zX`H}v&(t%1GL9S4bJqCTIB!J#^?u|`@qFY}4YQ&tU}-?Il9D@fbuD1&wpo;}1tK&{ zGdGKzsHMKsyN+q*2=R85>3@40eots%jmXWDzme-1~cXE>-L~)=o z%@mIXuB8EsqubZntVesC0W8D(QFM>)o3L3&OHYw`hf{(+yynkhb@W~IfJloeq21!q zn3nX8*c;Qrx6ZJ1OzF>L(kwDxCCh_; zpRPNcMu^yYEohDCT<`jnH7?k4iY#KV8J5T1H@8wV?-SeWg#fmL^#C@}F0KY{fDW1W zi#y`_h7{c5!*I*gJA}NJo~h^b^5kP7IYs6Z;zZnP3^+5s2?pF0pH9uhyYY8Zo*0mj z-nR|!I)*jzi;cs6*Ta5e=S_61*=hU?Bq|i(bP@)_BU)wGsm@0F4)H?5F#1}=CHAKu z#K^?H>NipBN*saQVEqwDPpf|;{UW}qpI(3ejN_WQ(BptLQ}^?fqp@x2NiD5*meEp+ zjsXB$YB4>r48!*3>hS;}1J-OWCMLC}_TsUmTg-2C-j-VJgUP+4+6OhP98(%5CM6H0 z4q{JoYg#CNOMbk5C(8o}$LP^U0NckqYS^0DSv;4r0QLH$&Wu-cim+pHbuN!!jBF#0 zr-rDFeDOC=eM}Vl<3*G7v@A3kn3e+^DNgHC+yQ_@r?xf8{#@%7!?ffKVEN20inOYe zodX!(uAGJ~=Hcw4;kW80Ub9O8gDd*0^yuDVy05WjTjN8%bVj5OHU<59KJQyRwwt$4 z^lFeE=n$}cSU7656H^uoQ(G)ksLVpyXobV%%Ll#d=_tWMNUTxxNjw^+UL`;65yz9ZAS!N4-n*kG(_ zBVvQYsiPPd%xcuZiYSP>FXXp8n+yJ?8TW)DEdSLpSnwIOV6in=l%b~O!)Ab4V0xW+ zXKIq2c>oV4ZHH1Y>1#uM0Q0q>=Dbqkm1<_b_$1T}^YJxqhq6wMTVS3yHQrm?CTK+a zd2vx4wH!Q{y1+HQ){!5<`GJ4t`><(d2TX?9V5MdoX4{aFtLIoo4CaI`LWWs@mk4fZ z)b!`AX*a`dR~&BWt=+Ih??e~0#GZsloXIUcH6wazH`Fd_2PlQxX=Yc;lVxZH#$})t zh1KR)dM1|1NDkU?-nhDEYq_8`kDU(4Ip8}dhBs+fte^sv^P3dP_}X z;>MFibVgljBN}G(_S&eDD~d82rF2#7%hI!q%mQOb45c9Lhh#BZi?pUG;>C<8%9TIp z{ewBbHv%5Erm}3G!(E8E zOB=DHX;Y^~EVp1PLz|Fp|0z~wrZi~7P_5NA;exikGr8@pnL(^(QD(D-ZGzAU-THXN z1b7=<%*_)YWp;~26-)04ZbwW$y+zY3yY6{XT$zb+3O5-h?#j99}}(u?e+pNX7iX^>0KFcF=+SeE7 zo5jTqz*gwFdNi*NkOQwAC}LXX(PnXV^ConIC~4jN+F7YYy_b$6C+wQsmmEy5ta+g0Q*}imbB=BzCUi!AhFiSJT3!QGl#f? z_iWj^m_@7Y>8OFzvV1P(`6)ga3)BLT4$r7$^t?3SroZI02k8b3N8VUe`qr%!3+QoY zTDbQ4i(3B~PDi76Ag*o1o9D&3mVIf6=$_qzR*KuQ<3qau3YN?@k|sP$#=8!frC67p zGhm((1o?4A4Y0VlirQ0NO9(SGFUPi)QXt67W7<*NnWy04AHO+VG;UP{ATMau9YFRm zkRi92yv?h`u~x}FI3o;XiKF$A(Ed>ro>BzV^6VQXD4{7D$VPLwPxV8(RS=a`-?x1X+=Poj#?{~<+;69RyH~^>}Ex_51KLE+H^gh9843t!4Ta3r~{L{le%;ifBE6R$-`WYCE&vv{WR_R4fhXM5C zw);AaB503CFIfOx`PPnuK+P|AoPFvUUe;5(3V4vN^P#5Y~@nr%f1P&LJZ z(Cw(j+61QcD}|UvsrR?orqGdjUi9zQqSH}Sw~RbPQ(YDi-T*ws_-rl{W`tEsyA2L+fpqIqmU zv@U4aU@9h)Qxs$na7Q`jem(GnPTpcv`dYk^-v;}7KEI&RX5CH;VrI-{Fk>|ls!53J z?D{!>Fjs2_MhDQ?dT(aR=It1jan6Iugs>CfbBe+2*D&QZcDny|j0*GOcCp`1F2HJ( z)xjMoi`3}^wuob&pkfUm0ttW(bYS~_wq2c?Q$_QF^lqrbQl@%U(Yz|B_67a63RLG# ztLftov7q2Mtq>Et$F(}VwNkSinSYX6Hrbixa!*R2JvOO&ipt_rWcs}!Z@W!zAoh13 zPNzk)9vQS;4C#@W@Ze_9LX1K{d+F>-umbb6A>QuZLsa&tkD7;iv;_@E_iO{X)2(M} z+zpCtLZ~QH5bWB;ZV}t!x%6`m_e3?C+C#*ttcKmbe%ZgFNird>_3Vf0@bqvGBaJZ z5~Ba@&~c&$H1Ian^Ywgj?|_C;I*I@qubC-|2PBJ|2gFh)3Ra+>w1Kzhe8(by#kf*{ zF;?jVm^4`6x8z62=QdT@r!5=i z!vv3E!#n1$aA zNyU4_WeplEB35ppz+)9t7ZuDxtA0NUs| zSM0eg6B9XeSqpklG`PHXG%ql0dx_gFAI#Df92xqc4&#P5s8qanc}wq=z}r%BW4ksY zcW8@NSE8>{^4f}}DyC^NCRbB{Io!o|uwLDiV$slyW~}jeS+RkVfK}@qHR!6mCFXFI z<;ZldB90ABr-y~_idLymuUv0UQV}d~whE~i6f~|i_=*AWQmwe6Iey=~qE+*-0%$tB zjFAke`AVfq!YZi}im~ejsv2b{^DAsGCof|;aSBFnPLC)21fr!hm?u_5EtJ~0OvE`Zu z;^@_}FuKoN&FJO5rh|X!7BIL-m;pVn8KV1u0P<~ zo7?wL!jb1^c2|l!Fpv=uhKeW95-U->7Sg&_#r5L*YZ-OYuIu2rUk9;%+C5X0TsJy- zxehs7Iujfs59>a_F9&8}(Wk{9*ID$vNV|SG<;fo=cp8gk*IQWB^Ves93XWah12fJT z(So*!%SUvfC1TNtp@H4Z{P*FZ> z9uEvTe(WXSBm>9J47PHV0hWju0K7&G;MRp5)?55M_6o4Kem6D)6vF19xlv5Ju_g9v z%Z-JQvI#e}r&Zhf-87r@`EQC3#x<+A=}kvBBJ~MmQzECRe<~9au+U>Z z${Y~~2h1K_-?1#pMYnGkRmDEc?i#pd{RLV8K;~XV{REgx((DHcJC_T5$3G`PK+-aWaea7iyCBmqw9pT!=i?3d!l2U>`3#x z&KX8@G%~CRbD?N`YqQ31r$Bt`YG1h505oEVJr5Xe%(Ip~jVlKGbpou-{pja|7rvnd+g=qHQG|~P;>y2eV*Y{(6JZUz=ouW@r%@OE+4A+@V2=M#^_dbZ*C zp2FLO9zitzfCCa|3y}vn8Ft;;nId-br9iylldo<%0AN0&Ii6t?8bB}}XB>A80{1)o z4eX<~_UY4b5`8Z|p4vC=3^EGmJ(s76j=#YUAu~l zGDP;&G#a_B-_!z%UqvvG^T*phtDco;pW^b7+g9D4@0P%Dj8-M*oRXjK=|Ki5&lw*0&65PVpJ?&*Ry z58TtRrPD^WvNv##-!hGICs@16P;1-4MGM8Dd#->on0;?AI3%Xto1@QuR;<6b9o+VZ z?;RFU4*2aWRmHCNdQs@B91R;z<5V()ku zsRO)f-PQ-#Rny|&cn;gt^09uTl$=CZI2vviXUZ5^n#z0?A$ z{-AWC(uI=5i2I`@9dH4y}r12b~ZgEHmP*XoFN!!#2i+-O6RcOTZcBhe@-LnD$dMF zq8t%9m;Kk-a}$+L4Cl74oZExvwnpJ}Rk(icRWx()yks^AQ|IN-bkToa8vQNC%?rU7 zGk;!VdPP*s3neYmQy{-!q_O>#uEhrIlk0i+#n~P#!4sJ9Ko|W_lGmU1hQ#d;B!e`|9;lCXZFt~1 zdQtcmw1t({aY0H9^lUGaJ`6;&sTj4OQzOTJ=(pcnjh=~>XQu-5WUlkVg2mYDfeRa< zw_6roe#H(}%b|I}f{MoR2Oef90;je*R3sd+IZB6P-jn$pd@~jXi$EKgs(zE9OIE;& zGM~rV0V$XTe)D;eSk{(a5Pi#tq4}(=9!^~m&P-g)+oZ&IxBAh*9-z|%|TA-@| z5<4JxU{rNb8XCfZvi>PA@%AYH5KGl`F2|GoB%$G6Ob&7ou4K zhDT<|#f$BW?gV67E@sFKSbRmw-#kl&7mjlh`=q8~mW!Q>yLHFHFsvdWULOO_6l!e@ zPiJi`wXrsKbUHIv2w1b}T}6-e7Rw!OBwNrL2FDd#z-A@S39>Sz znXiefmNxQYbn^{y&(fr!Gj)rdb0MDU_D$$N+CGg3NCo)-NF8&u2fEGS*zAu+{h0MrU)|L8;!ezPfh)2@w-E21AxL)_u4!%@XY&4i?;r`IeDO_*j^oYL`F}H@|0oU&e2)5Qe2S6m=_+ zm8%c7h}Ge1k>L|d9}fBUbIl{7^5OUvZ}EEIIfV_5$$)iDR0c-@&Y#jPtza59tkOM; zI=lFhyjJJ8!p;06GhuGVb7s#Y63ns#`#luFr-b_fVA!dE<=97h*INP$4#<~TWY4aE z+2}VHi3;V73+=W+lW82BcObr3}aa(=?0W-{USl z=423>I)AfgZN&U`YuHjWe31A1Fy{bjn5b>>;&1>{!{8X+<{h9f6DKU#5Z<2EOaUqY zp&T0oHGlivA0S~nZ1j>Z0#X#O$HJ&J*gMdb~fPiF-3It^Pe3z&{Bzyg+WPaU8a zvz3b<52)hf@`16uY<1$T7W{z7Th*z)>j>xi_G~!9?E^gKX)$M2V=(B=tCAzZWObmZ zIZM2=Dxuq{J!(vF#u&2aKZQh=(kSew`8}xKvBVNSTEH3=djxX+!G0U2&c>@dFm*C- z#j1tk2QgttI?VssqATmt2f;O*UHr`qyQYXM^B0S*7OOS;)6Ta>GkfK#_+(rzCKGd zTpNKM%2?YIeN9-)Zmd~rJ1aL3w(7K2WS^T= ziH+ucIxX@a&nO11s@;S>0YU-?jtAVV?mv;I{HgAVr*zEXXf;Jul5z*jg>7jd zg5i#|rI2`eqZi0@+cujz$Ug0;0c{ogw~e^~bGmJxL%rmP_Rw95Hm#xFa&RuS2kxAC zIuVT?&81v=Omuyw89grl&ZVj1$TLY{FLI&y>zT=IfGgM#Ex?|^n(eRl`_&*!*qOXo zoO?2ZddiU+AgHr<5Cqt^ z2yC0jq5r`A|6<$zv1=Td)glOL2Ac|E^F+l{ZU2j1^qqMEQt|)EZLI&V+lbv;`24_P z))1J7D2m$4CQ{A*e3q@J7JI@*f!`r3zkLeqKEN#54-LW!T*Q(sKcaK7KX`QJ{b3T1 zLGLl_`;WF__@Kj&2m5{-Yi$&>k3@MSYuX-E!vX6lsQmUmttjY4`-*Df1cUIH>Num3 z*z^Jp^<;4qN)}(f0C6dPeu2+4I__*hPl>B`HV>3PQ^VL7?99W7#p@U4p5NKih&I`Q zksyY@*xVNl=4L)A=Ds-5s?}IUFKMh~u*Rsdt^#hC`Vx+a7Vk{(aqt(84ky1f6yo8f z4^zbPm+Il91BXz&Oy;k6hk|FA=j7bx)IcA&0x;?9>JxdcoCXQUnu_ykM5r&6t_Vkc3$VcE8;XP;K1q#i8t4LXJ;u zYaN_uER%3@(r81XX#3hA%3ZuOUdY$Xj**y0H6(#{nXIXJ?R1WOz}7lqkafFoj&k_G z5fUkmz1Fml8<^Q_T_}r>UzAJ&A}cWkGPud z4<c7C1|4fnM5&BL}~tA_1q5%Y*L%;DR|I5S1ro`TUBSu^{f?op-ax#yeE z7L$t!Y=0{Qj?WVb=W;iw5yub z{CA_qtw|TVHC??;xiv#k;@zqQe-vWJFvrc}yQ+r8;lU!Hp1OlY*cCiXA`fG*2@lWU z|1{TH&7GJvV6(FlAB2|4Zac)$=IC&l0VaqFWJ}6pcM$X5XxEpuAqPl^z<|+jzs}>w z*@y8kXYg7ppq~-PDw+Gpis5sN1b%pei44MoKt}#};EJB_{6pGe zl(XQS@f5@Iw9jF?5V?pPm{11uWFYwLCo45OU~k8REhsn;hJu%IODpzLY(Fq(GY$w# zO3L4e{WQe$+hjyYE^4yBoO ztTdFSnh)r9=@twcZI(fc1fQ;_j7N*2AP6U@ zYld7j!xLYuSy7jQjHutF7<9~LcvMl)v{1FBmJ^ELP|;vrU?l2|57o0HaPR=k(G1S1 z*9%8>nq_h&t8OoV7N#PO#hq^=yjEQtQPeZ%!C}NeB^(CwnTVuwG z*`~3>%9~{*g;Lk6d|phd81>fW#XOZDh|_fe@v#Vydb6c(F0f{n<{<(I2cq~2#y>PZCUX+u;E(`&15CDJ zgG~ycFb@Ta&C>78Gs+3vBf3B{7dX_3x{#k z;Gbx(VJ4|ulDqj$op~Bzu5=n%7jh-w4>J{X1Wr@Ue-3GQ$8r=uw$E}$M_5x(E4>FR zZH}`|b}%(}8rmB;u?9R3k(a0!&vT36pE!uidG9v#onEZ>ThXXs*Es@KQdCP>wFR8uM5}$w%5!x;Xq^DopEh z?{OqkqxXBHb+Ev>I%;=X;5oVa6r|vvb2Q(lMDhDAFE9n3eZLpZDgS!E3nEB69~gc? zS^0r17!PkAXnH~J`2+dTN4tEG2~~6K2b-v+i2JY$CNShf_6tq;aEMa;IlReNOX*i% zsQJuuix2k9x*#B|4zzk#{ZU+z)2^PfOx$vikL>7BTB_Sd>FEemao5B;>^jlm5Nq=z z4z;VTnLi;`9vYqM_N1Dr2xkQfr&-!Z+^qXY*?zb4LUGqeS$=mig<|7J{rb8I)gB!B zUtAHG3e-TjtbDcHSm6~E@~0j=SD;z9j~ihvBR)>W@7*6aqn={j$B!fS2_EX&nmp>Z z6k|Rqg4=1xhw;ag*XW`5R+8U2dI zk;5s7Wd7}Nv&@HB-6NK7rexjocJL0Ml;dy06yd~=hG5zy`hA*?=)>DSO~CQo%ukyJ z*asd3%8JC<=8jL(6)R??iV@oNU9+f17mCk0?s8>e>rjEf?L8J^r)IG0%wx}h0W=uT zQr7!`^3Sk?EXTokRDrTLTm8-_6X#t~jz1KgM=2|uPqT{o9QzAy*3>y&_ShggMO{$; z@U$P;j>1&8kh{E!)%~!6p~k+*!Z?wj$JQKmRFgHE8} zVIFN6*j;0xKV(pXxbA2OuCgq*>rx1=Sh|Qj z-p%5;UTEnoAz2JS!okJBl?=p$VH(o%QX?_zcw>Z4KXE)Az3xBWAgwl`A<`>6&E=Tp zI=RbB4I^XRS>GXYPPC%O#mEznR#T9C(MOG&1t4UxayQP?v4PdRICctZjvg*rETbam z)@FVto`0t;b}!V#2bPI%PVz*}&zXKYef~%$FCWSZoP~^nPVI{*%7MsVpSMPEdd?R~ zAgoKj=%R?qaEXdF`WDJQDR zn^l8Ymi|nK>KKe1WleqCk33zm0%mpRSary?D=+|0YAC*l=CK;vC*2%4&=s*m-oumq zV+uUk%H_tMY@Z`>Rm_@m3Zi1N!lJWUa=!M}zdEuJ_9Gg8?fS7(#H_EGI+uJ6Kejmd zwd2NaCK`Ry@gi4tlDOxaiD7qk$J20Ui_cECPh;|maKh%XJ4{+khKjUwxhj`30|qb> zrV>sE+1Z`p#rJHc>+m+dONy!{4`cDOqs6T6V%h6${4c%URo_*6y_zzD@Ah5n?-s*;=#zzwb3m;y8Is2=X5xj|s5u~Db+1%Z z{V=eOI=R>E`OMlmw*ANJ5RNeY#|(`0_>UjaJTc>^v9wHl{Zo72ZhR4A_7hFcHV(is z0|@{-9S262pG|KE*PjZi#Mqj>Q;7+D90g~*vba_EK;ZNINliVw>`C;4fTWFQGcnft zXVVe-aPDjnzbQYbx2oh)(xUCwZL@6(dHE(DJ&};pmGWOvxm92{p3qV#es|BDsh;8_5 zgA^qL!RFW~yy(Dj=&%1uYWxYo=3iY>YwYFNZd;_EyWq&Et9a#H#s#$Y(>eFps6f2@ z+mr6Gk@`Nx?+_Yr&?Pj;Fg`~LiBErz$63;kzvC=PH2C9z+Q&#^MB@3_PXGI(B!nPC zf(3#;L0cMx&y=1!{}1ZYtIw3gTYrMOWLigDNpS05Q8-Pywj(i(ZTRb&Vc41o$59!f zPK!9;g`gPm@i=e;a)HCg5as|{V2vuo&PB4FQ{*3kQ}BqxWk+lR!O&zEBbeWH;_APx zYBwLBLc4B0MNmqZ5y$dHf+yXI|5GjQ*05dqjt-es<0FVnz2d)dRl@7TfdWv7xFyEt zmN4)B3omEQjNmhHC*vae{v{nL&ClWksP)N`>nSN7mL$s(6(^$togh$_%%x_&b4*^R zmpo6w;@K*2fN{CnM)On$J8fVEuuUxma18r>YZO3msEZW9)d_lCM*-x+6$o8EYFDv7 z%C1u`HJtsscAd{GP==kFVHDGwp`3|q*l~bO*s$}l?r5-r7m5L?T}U|c5h7@h@)%KV z^^p&8pgLwm+wcYP=P>Yz1|)f*4kqkO$Jyyd9S5%erZ46xT`@ymZ&1hD3Zs0?AZU#8 zcY_?2v4gzELqq;uZfH3A{nwNV0uarX=RPvOU9Ieoj9ei}}1*&1Q#??ZP z+2;RQC%nsI#(lwg#lLETvMPccRq#^T*-w}KZ}h{TapEtBMUtZ_`jw_AmqZf2`II{&>AJSS3ZG+#`EWYH4ri!X2Gk%& zej=g+EI`jUSLp6%JLs=}6b(#Kp*bqXNDqs-HBM-b+!jR$@so$5D5Drc1S%Um+CVzx z<2E#wA^74}DPUNGy`7sW*+n)?RB#-`Uv<|DGE`P0KE@Sdm*3GIng>86`f6~b;zT9NEaURtnuhE4h3?s zOEm?887ga*$qJkdCM}c?3(+w0e1JMry1XQsa*~^{`;}~bDaL+1e3CjK6#_rnyg^Qn zrbVa~A48!SRVxa$qEgNIvU>~={SG-JhT60ngk>?e<)Ds#0s~%ixWd^Ub>r;*16%k` z`Be<1wgsEu$S^28FuAc2*lG0W3b^0atSy%Wfv+UcjtMOlln#_-wSg0w0Db zG;8^WN!heoo->KvONQfK@?LPJ+_5foPu|Dlhrc)s;B&bTIm2r%lMmIU=}FKCJp3UO z-1p{s`03s0td%+Su;{h&%6im1$L*sq=zITKHPj zcALX-l&>V4l6?!Z<2aAE^LPI8f{@|Bl1V za%Gcv%4ygFcW-d)Nu4~y#3MEjVf+yc3v3Oz$mDp|Jmji)Y7!1-@iBVWmU;3>JSEp- z9_1hnuot22X0eP+pc`nEyg7k#XtZ3BK#l1J`AP!KMdpA+Y7##hOb0%dcqX|>5K|-* z)67IgOs^+W>*C$jTnB(P2Vn#zEjE=dA}t`|O^l6-v|JSb4@4=erA`=A6*)1CjO4&k zM)H49n|%Pi>ugdx6c>lx1j&um^D$A!HMdO8seduafgfHxpMN1a?wq-rrfAQZ)Gg#; zCUn7^KzI%ZU^d0{3Rc7?nrMb?y;$jV_CWlxf0FZSmED<6LliQA+WhWNS zYQih1;2C}|A5WoyU0SJ$BmA{G$lQrw#{L_f=z5%q(LwHe==k%;a@|x z?j%2?%hVAmFQ15N^&mriYqS!!}53J}S0MKKe09b$*V4l(-_zkSDMMC~xIPtx>y zjxNF!RjrG_R1U>BDm^|UKs?KZ3O#EHRTNa3(>{3$x;nJ`V3Qi{{@NzQ_X#3I3kNk4 zQL%{6lHWAp_(>U=L1SwlvdI5r(CxHE{s89=ZIF3QY4-)izD&9f#bYw5D+&2nCJniu z`0q?G>{fDa7Bz)1c`A!`{X^Y{U&?GHXE#&o{?;a>BDcJdu_v0*7$q9i4GOt!9S5{pvEzTPzJg$}Y|x4}{?pbtbfMQ-e%XrB0nq3i%7Q;2H-~myWN0`I zfMd0favT^Z;>$f{WWdV|=LJsMaj5AU8D1C}0Dioj(wds7O5t-J1O(#1TAA^%f8~zW z)Go3WzBW@QJ@V())FSMZ{ugZ;%rhSb1|E#G_}(9kZeSalcRk2KXQ=_X!Bz<>SViEQ zG|_w$nP6z)uRoqP|Bn&GO2y;|Vj#nXBq08)0OF?qGYdH)U4_#-9Dl&YXUEvP`FoKPf+hq_4aaVL zQULj`u6c|^wF6u}T|U!^hS3;Vr!%$8R>qMIeNIn>0t2_bGNC$~H?RO^dj<~=n#LCa znI4hjI#V;74QKwgLRqx=I0H}DjC|-_jHB?&jIp8+Bjbv0MCw3(`a=k-Kz|%{5ipy` z1D!!nW%94ilnA>yp$pjwli?#*u;Rl$ghwmkEys7E79{1;F2t7)@~toGUOe_yTt{_;B6+MUHR$YKhw(2xMAz;C7kQY={?S9n zZj>H$ui$Wdh~PP3KY0#5^Z)?J;%<}_bv64c_yom9frnbzojF*?=qi**kWp{5&7jl_4L!hb-9wm*@1K{uZMus^BcD>{Z}n zDceb`vvX85bWkqm5Tj_6@T1d``g`${n6UhB-qT1=O?n$5)VF2lvUj!>eAD7K~Zhrd`1grkWCdd5(X) zwWd8oO$*bm9{nY*Qn#iiF92EQbUvnZW<0X`+bmt~DIk+7scn7#7P0_xi2Gxts| z^Hlid2P05dZDu_0XcBhmm>k)i`qFOsM0d)KJonde2PpFE?$ju`{MX|Eqh;v@Mjmzv zn7+AyRp>J^)PuSZ+V-H8$)$gz5#OW-iHdU_ppnILwZtQndQz7R_l|AD?p9R$j&0VK zFb6;XM4NxgyL(bA-~K8r@U*PxNdxF>`BzUUHFITJFWN}+d^`;TDKo<9=7lUWGn=deeeKh=rgA&Fa6gnGEBE@7j~1cMKo8scNu=m2;=1o2591XJCC7jt*)lQMS!;) z`;g2Z0Hy1^yk-D&z2owc0n{R}Uk^lL?U=zP`Q8B7`hQDfAl(gHzjz?ErYGgrfzSx6 zm`oPReFG`i_wnm^FPHv7ln-EEI*6|9F^zR=FeaFzW(g<&gg%3_IO-!XjhsuUEcXgD z4D|q@fw?&nf$!^MZ^em0nEd^+-eBqz|8E`2TLx32SH)nb)?O^6HfX zU+pH!#cG!^?tU&kS77F+W!EccEd3(aUP1TzO0ehVahZ7~<@w5-_rfbFGZpG7?maO z57*Ohk2nfZyu<18>Z^b}Z_4>s(Pi|2{Ol@7_sueLIN@UknK_(#)<2DUc5|>nQ1pgM zyzghkJ}pa!Q=4#Mq}>P?8FS%L9_X}uYdDsCPDWf!Yw`~7tlsGONP|7~ z>0umoDEujwIB`tyS^(IsZDi4A;n=*HKQks;@>>Z``TVhsxXVt~-#uTMa2wt_N?dl%21q-u}mQNB{#d zKJ%`p)R>C>$1n{G{7S<}+peck7$RW=&G(g~1OQz>0;8^#2S?DgosWiRW}m5kE8%Kt z)S9<4)szLOBdKZQ)wpCFSg{>YF z0FOE<>)1%j_HERI2#%Hsqo_6dQ7S3hK5$5B_I(pEOt@PNK^Sn{C~AY5FCRtY`mf^; z;SK0ast(&{z-YBk#CL{*!SfaaZN{5h6y?Le57@tst!MhhB!M^Zh9Pgc95R~Hv-YAg z7cqi_BY?4y;7;aSAgu)M5mn52a>ZyG9Qgvc4omLy^4HNciQbk)H_)AldzlCk;Dbxt zRh*AIz_}Y}tX1L(-#UwE7?7w3j@=Rn@HbsH{K>qRrXg5NREd=S#lx2lDoIQmsO!%1GUPw*o zIr(uRweg)jjCu!Ty|L8Xb5u8vNP8?LC7x%KQ?XDMjSdlFX}6B08)=q2IF=UDtY>e$ z5!aPMak=*<_^F}4+=MfUqaQK0$aim|PRNQG2i)2%yNsh=8BU2q9PyShUI}ZSDs(*# z1yto_^6_yr9!(O8sAbdL2XS9?D^2U9!G0+Cd)Gl+6zLB};A#Y1ZOVQiceHUuK!n|L zc@g36Mp;!vox<~o98U%Hot`l=uf;xt87is&FL$tR(VaV3cgwBgsYmKNE(&Nh+#NkQ z+})f&@o?NUnLusZp&l^VAG)9(av%kG|8)nFVI%~O6`4=U`4eaby(OF9Ov`!FH&e$Z z`&1kP(8__0LgIRw9hOKy9?kq!Hob+qWCJ_dBm`QqQOFuEGzE_v$-iF#9e=7v*TXN5>bW10oZ6L&VGcp;d(>G_c!J4rrmEk}0p|Bkjw|~Vo z%y!vd*yL5XBUh;_D{rGo-QMN=efVJ;MMGRZ&h4N8rJCCT8yH&Zb}(QnnLpzL5DxUi zVw5F{am|Br@I>lf^b2=FXrkl02gfwz9rF|gF*O`qDaR5%4MQ*Qam<4bWnVXGO)^sY%qpcUG-l1|~yi z#XEYC*H1g=)s#edLxNF4T z%?s5T*45d}lMgt}u=tJ|Zq9a$WYmy@@1W#MKtF5L?3pI{6O9mW&yVgpfl=<=CVBvu zvGP8sy~p;*ho(^9|LYxZG?kjB|Lcyc&-8%F<_Bs$vS=!0`_H++mE}_@K5YEL&M`lf zl~bun<66cq5CSx$;N>m~9Wm(rw^QScnq5-6twX)Wr*9ry{l-^@koglU2BmVy?bOSM zcW(FS?bM+-JOTIm81@qcc#jxx)lkRRht55;5scgT0d8Ngchxmvq}hK|BTRKRUn}$B zKUyG+Ne;aOW|6Zy^6on**Z)BnBG27H(|kKvPAru9cT)50D&E!?*?$6@VYYxD53mE5 zF|bdEZ)^j_;L9Q{gg8#Q>`ux^ImB&tvgAMvpK1Y&;q#>J@}oOxM9fae2|Lr?i9tcG zJ?{cpeu#H@X0<0?=DekQ@8L zE*bCzI8HtMcLYvVBRittvy2>9U^)po=Ra^dSA+D4|4@d%6kjSc>z1dBJmX}+-S8*A zB=5SL+R`Dp`EF>&haS2Ie)*SV<~?A9FUn!};3QzDTz(IInD7x$7uQwb=6GP2m;d4i znIFkn_fjDpdiL9U;nh!?uWW~CC~Is&Ft=u;F;B{c#gMB<<=SG{cSm*G&tD!!m`CN| zVj5i+GWrqRT+SJK5LX)>m4iyiN;nDSirYtr^g&P!b|1kumB~^R)&EQnMuIQmQ#Ab7 zt$KCqYM~SuATN|q1{dOM0mc!J`jRdJ(@lYjaIS>FT38d-pMPx=>D; zMuTIQe&+tY68^ru>@)fPG^qCTWz2NC-aNwm8@KYrhhpK7z^U@x(R!2V zt};jW%*9F5a_O5#ds5D-weqS<)xiArpqh;Qavr6dYxrH69_nqOOr1}m`ju*ts2l4l z)$8r#+hMj2ollqe_B#*|^XW?824@A|&!?f8UpOif4k-B42Lx_@sd7y9mxx%0Rr=Bi zIsO3}>MM78dF=rzFsoEAJhdH8fAts8bID&br&0>4Bb=a`ockTKT`j*_fOY;NeG4fQ z-ndo^X#$S#mM^4vxMfjhmC+>~!uphr*atT75kkVZ|KdKn1NXyh(X?ERH3s-I_aU8y zFO5}tw|uyaGFu&mhmOC0H45}R947P8i>Ju(%I%LX%`+^O<#)4=${)($kUl2sE~13` z_`^VaX>Lo6wHbpymV@WjJ}kQ|qLk1XZtYjhPoIL@j}BpQ=gU8QtcUrO%#wF4qQ>a! z(M9lm%$CnALX-w;n9=pw_Bir0ICK)M+vr42{=&&rP9|`2(Jx5yAMS{b=j0QdOy*=9 zCwFs_eX-H?IJuvbY$!+9<>ZO#B<>+b&zw|_*4O|PN4xaba9VxOwV0EtFLh7vit1AJ z5z40Or25F^c}}X45W}O{Z*fx1Qr-0MB`3S`Jk*U2YtJFce?SC>f2jN%lErpAPV-;> zvcKix7M$ci=w&ba4asy)vW;ZF$VoM8zP{ex%Skn`GTe@EGL0*Px;6WEPBJV5Fi$IB zH`#f>Fx&@Q@&VpUJ_M$5NVcWRF@lw9?}!XaZ919zGK;#ehMFaBMA_#iE=$<&?9JC@KRIb0LEm}-Ed zm!&WwQ5tCl#)l&N1)=H%eb9f%$S)vOP0n9RZROO5C{{)Y+{lFG4F}|o<EXA9TTGQ*1v1INSWC8xFzcmPa9F%Fe5% zA3REJQp)-L6GvMLsb;RWv_J+|P-;SjTds;g(`*YakV95bPR!3Aq2nBT!^i01pj@zm z5_2oLHp@E#m~Kv8PCpxoZab<+4?jDkrR> zAeS)3*Dh%!Z(BtTGEoBmthU++ABF7%f;XwWIxHt7*2wW$$o*8Y9#Ce#5}A1_~F51^T(hkZk6{vMwiqnpO1Qv z;m7i%+UwJ(E4~R2O*IeTZ$)&vit36?B%&iJ-*L2LY z-=PXC>)G*5v9+$Uw*Q58tK_mZ)Tu!wgf3r<6VfnINL=??M;MN5=lrmS;v4L`s0#jM zg)#%2DxtMBwe{AEsw8ohG&Voci&}{eCoYfSnv=3>En>t1uyUb1s>#YEM~@ceTGgX?f}i&{c^c zgPZ7tO_o~|=^9}GY=MO_1#*K5F0LtrjE9V{f4kN;O2ePwoQPlya>mVQX4m8(+ z(dr#24xVeiA-~@Q&E+o{yBXfKKV`vY%IY#5>JHAJ`Fetun%6#zOZG8M^Ihyb9v7AV z%vbQ&l>Q|*Y^Lnu8HNS<#Jmmbj%R_%AcH8xdN3s)>xX3j{kMUu{!CQ%*w78l-&LU+ z$*}8R*b0-sxD`Nv+<&VctM22k891<*nn;yRa-3ES5Sz1u1#>K<&71T<2%DO zM#x7iC>;lPuT)Te^YYT;T2VH^;c3$pyL`5r@~IS;wL%%}CzQ#STj6E>TaMdG4I)ZV z2HKDlpQ1+pT*uC>G+&=)$i7eE&)xiEmE})SA1?j+DctS%y0o^@j@UA%KPAS2RPxJh z&@4(Gz#xlco$b(WcAVe=<>2kqH~qnNC&2gpxN+Dy%wgU65SQ~ebaoZLmC2X3Q!@XZ z4c6QF4qX84Vfn>&f=VLqeVWo*oKp2bly>zSa08dP-pjBvXYrp`1D>gO`P$PowEd~I z&baO&5+5Pi=k<4$!<2lu9K&X#vR zM;(1@7N|Mwc#hJt&pij}f};lfEyj=+kw&&>%6MQ4uxUIx8E^l2VSD{~y1Lz2-c;tC zd}~bc{Z{ln7;z@P-UQAe<{we=rD_DO5nZ5{a;YqPp5iZiuqNMa0)Gw#BbAi2@TU>T ze)!aJ&Gq2J_gZ8xM;dxATu|t%+wAoKyK)EHC)F(EFVEA=#@o4Hr4Qk=Fe`e96*+11 zJ)tNoa5cL&RH0n?0zGG*3|F)dIJr0Nqypbr=e=SlCHhJML381=`*u=*5Xo@pMe5=^ zgE?T6Q(qz&3tzcI*>3Kzmk>8UN51e9;yvfegD)ZabB@II)4h-y_A<4(_NZ#jz=#4W z0zcu}L1Bh+Q_un}5hpDrv%h zS9AO>%4)tH!#JuB*cSM>l5!k;Q>6-ko``$d!E-5QI5q60uzii*U|-8#uh3uFi`4lSD~tTOJM&FAy%<&bu(n)BzVfRAagkmmC%sDN zt~`Gl$joPOSgU64!9aCE|J+QS9N-c+&&4^jRV)YMF23ca<}o9151y96acYe6&z8sxy}K3 z!y6D-=Q#g>T=oXd^p*Ui+BSKUN_>aT;C-Qd;!S9~2jpLGQuE{o&+_V^8nT}x9ZP_5 z%zyr@oh;Z3F>_Mhxff2gQ*z^8%8vV&Kq>jnUP|`NBy+9w@5A)Yqdy#k=HNYZGjs^x z1)nDas_X``h|gxB+PsAwZG{6ZbFC3F6etnycul^38 zGIk)1z$FxQ#h<`hpJUMBo4x~TxZwwIKD<}XIzTx|FMvrZie`$$8yF4WPrg^aa{%#d z+vS;KDuOiq0~jmitY1N(ShyQhOQ``X*elq|Js;2&G5axpgr!eouJMaJ@&WZJKK!Rb zd}QIn8-7O_)JvQ_0Dr#b;DoG>TAW?Vfp%OJS7e`cimFElI|dO=$-P|Y7*t9|Eyp07 zXEk0z-Ii-Vq_{pyxp)2xBM7sdjdu)e{$d2N6I-Y=00gJdT&wkMF^q6{-1!SLDt^vp3Y5 z1Y-~e#Lk64q4?`vb`>}E{i6r_ZPmTAj2+y=3{MbDPgfy2H~^I+4pBrpi-15+;7<(z zqa7xw0umKf%DIQAZF~j7LLmJW)q*8P1GpRHyNBS~u0jYSgk7DFs9~QfCwK%lz~6sI z@W*=loD5v1V($#U+Pj^%AT$EJ+2wmUo(Ok3xY@d0DW`k{Msr?n{D{)@`6bdmLUG;_ zNYEql=tnd)ppc)LEXQDeOxFd&JRH#RLf6D!|8QA3=HRU2$j9ITJLLI~X=b=NLKlz8 z2R;Fr?U0q9P&ekSbeMXMg79%66&QrSB3ca`#&{1DK0FYcRUurFJ0~d?EM< z`+!q%61FJYwN3&+yAk!WT_`HS9)>h9vMxE*Fms&X;NS{>>I~ju`NpSYwc9_({S$fE z)Y;A}JRlCIEt!XblspF8L0s=#OpYTjWrHIWYP<=hwPL{(23H}^y@CS`-;$$I5lrO% zBZ`-7JL2#Xw$*U74}@ZajenSzfWI{j?7-SE&k#ONf41dktImA%Wa9 za#J7;2q8e|WCKW%YM}}eAcPVKgwSjWQU%1Q=tM;cic}GV$VNm7C{2+XT4>=9DoTqQ zl=6`GJG*x;OCIn0-n-v-GV?ogW_EVw%$Yf}vl~{pQCzEl_f;lhFJg&!QKVm#6XPsb zAk(5hUBD}zv^R&GR0Mhy(PiSRi+GxNz%+N>|B?R;IpDIY5I4-P%c|NSZn3JhjqM&3 zzi9(1_K6sKNsf^##haJpG=EypxYG~o>Dn)sWDi-suU)+?Uy zl7zj@>y(LtoAR88Rjolob-^y&%t{ekDeuK~Dl5^??}?Z{>a+UC_!Wk}FFvDQzD^N^4h9Nnnr}Gl2^q%*3G~^ zkLhOMFm;qQdM2s2^g(0Imz-4vbqr29t%RqXT&M z3L8#4IGGaU65U9m7&vZGcgi-=>$V&mTVz+yLdO27anxHsAHT`2=C3w*yA=Er^e9Pn ziWRxCzi|3^aq-!0Ig1tS62W)m;JgBK7(HiGm0Tx#G6ZJ#UFR&0JeOU@V+Par11QGIZVsB zhZBq`3%*3dH&QDoI4rB1G=#s{?613C-+1?H;8^t+3O;7)f^QM7Wq1!D$v#F66P5!*|IcYgW#@y&#=yH>+H5-(A(I@+$Gnzw%e|S*_Lsc@XnDwidNGEGEdT ztz0D5$}CAfF3!k|j@5I<`q!=^74%e#NRHX7L^fl=IL@(H! zYh&$jTz0XI1@|hoe(^ErC(6AwHs zSKow6stMTlIw}6LVg0vYwFvWIL9Gu{Ie4N>W=Qw=Y_vs&!+ zD}z=#Dbbl*4}7w_V2xPe!JLT)*3dLM(CI}li;Tj?86DsOSJa#7HCTAwLhP29he>TJ$DVCk!9giM z?XvXhYTBTCG#wjkQd;Sp_WxVD7p3R#I+>Wi8lOd&^gj!rP2sfseH)7!7!u;}N?#A> zqZg?K8K*C5@XE`sDu}3>tRYqT$(pPeh40s7^(ov|lZ8-tvL+6PA-q?UJxO7=S}cmf z3AI=ng|guD@>uj|C)C6;=1zdtM|{xKR0_H zp9x`sMr!JK`0Uc7sT=Y1IF$0@>*`LAmr%yfc!)$#{^%=l-u63UsGY@QqFZ2R&FG`( z^equ5K2T2og6od>!Oj}cWN2sM7*%#ZHX6I>)BV^HJYMKthjl=(pbqPT;9wnAiC~96 z>*Z4nwZMdMQ40uQ+=J!gK)!>;Ak?}$*Z~>uC)EpPt>rVKZ!imy%SBc&%d7zp&l_8$ zzWAKt@8ZHE=`BK_F#m`TLsZ*KU=gRT@x$3fHQ3C~H*j*k_RN#DIfuEvu&p zdDu^A{X$uHS^ib~AdK~sz0QJ-r>TF|XD@kOGvc}7Y`^@y*1^eIuxAf!p&;7g z+Ub_!kzq4NXPKi^w*$jDBjbg!uxN(h#;)|kKa%xF2?&Ufy8a(VbjI{$A2-XK*JJw4= zA$WAylEDblX*vQ1Zxnj+SFL?C>n+PCw8afrFIj$9ls9A>18%zur)TOq zIxaqpVPm|mP|6Jr=f#p`=arQJD?M}@r!K|rz8jS4Kn#mxu~??ek2BQ2EDqabQ1`#% zSU(E8#~Z_Eay)AVOwzJ(Bbf#E#8O>hsm>Vqh*;i7(f+UG zj2W*#le3@FEo>Bh4jiNZ0sbQwSc)?$mK|mhO(4C@a~%F6Szm8!kN0AIU{_O!&@Svr9AX^Pg*Anhe6I^jXm$jO-I6W!aW+&7e8xdF)U%}T4b(ZG znC&Y^$VjDTAgMFr?=GyhT|REqFUD{SbgiD@uWc`)1aBrm9@a2`MfKO z!I{?+UD+WTEvve-=@>2bdoa9(pe^aam|H6o8i)mO%I2bp%q1L z#wN(BjnxWwmWst-gsFvaR`si(kBzZrL#JtVda^#utCFP8h|Jz>bwEB9MZJkO_EQUV zBqIB;{|e5>LJPSuF7#L|9SmDT#r`Q;^<`h6D}V3H+9QbV$J*;-4X>TxQIKn_P3_0J zCSj1FTzpc{8AiS_;`^8@PAx2}*C>NCY`kjERqa!uqu2Yf5cQPJl}o~~b7i8aI}hsR z9+dEzie&sV6ntjYcpris;O7dxyaEAs{$BTFPa!oE$1fNb`1?b(4W%1d6R%^b#F zV6aD3!`YJPhpO*~j`$uOZFEaxw-(wYF>wG()=sD6>3%4T8#PCgnnaHo6Jf)Wu*Ib| zbtb~l$r&uht4uFLG|6Cz>Sc-_r*3vy$}@K+%xjUW^ROO|4zrIkFnyd8Co@0=D3*T(2lyT;&6iFa`(N%S7e>WjFsZ07LCy6)HnFkN@aaNV)Irs_p9b(Y)* z4a9)d|4Uwtjbn2>W`V>fYA###`|ite6T@N=+wUJG2(2|WHRf)N+mIKGCa2%V$EbW5!VXL zVa*Zr%)v_Wym%{zWj1|mm9h9YZmc+8`M5Cg z>1X1)B6S&0Y^+{efTCwbP|@{tfrmu~R>KZ$$8=_6VL{-Vl?<*X6C#>^%Ij)XGucG$ z7g{YbOiY=>mdo`u|G6x{77~t~s&%-!CtV!cP)MKwfe4YdfHlg)#_1`y0PUh$!EGy8 zu-+^OVue<)#tot*wZsh|w$BPqS-}+pG(t@vciWn@;4|xm2%Pb!8b@kDudz%yZseGZ zk>kfs%yf>=n5m8$<%&6_fI9f-s1aY7nrh5QnzaB-i8|^U(k-e!=7UD=J^c@8OR3m0C|GEK;9r9 ztwEvh)gj)?XP=jp>%L;i03NBeuJZlKgNfHQpF6$->#*gUwGj$m>Lc&a{_*FY_GQbx-4(h+P3F|JiXsoL3zBzhEye5+mXg++q}P71J?0Stw#m_ z*jKyShkxn8f7}h8{G6oT)Yd)2hsesk{lt(Zb@`8)y+5BJ+m;`^ASTE2hTew`BI%-R zT(oQe-;0Yb8_0cS+rgt3w2puC0d?~}zfalilKQP436Ru-dL&3v&ryV>LZz?ku?7B; zdS8!?bHGFW7pb=VIrTC9>e0h>kp7t-opUk}Pc-ys#!q256;4qP=krDAurqr6%Cv3} zx%zJ&C49Uz7(#a`!87&eWlbTq@Bx8>`rmJ_C#mo2pn1bv<3q6-M!+k-B4y@xemJbI zqoPxD2Q-J^ejV-WojGA=h@_s@QTsQCUmgg_D}=mL7k@b;Y-3%F03G&KZvN-QX=PpeU(g>vA@Mj%*96N2hc?d>V!`=Kz1Ub9;(+KwL=E(@| z?&jeLg7@(72(!es$V~&v#Oo1{BrFC)%(tw+1N*}SU){r_l1!;BU}1uH=h6@lv*2xr z8w2;m9-iVJ<|n}>+gL2>@8u!x(*6aj1F>D!fNmwif&+l{I*M_7c@*wo$zC3qXG+H+ zwTneM9$2;D#=x~KxC5|WH`mpA0=KZF_Xf6>*AKWe(kEDCy35iNQb!BpxoVk)0jrku zbl_AA9&O5tar@BBmj{~7{MJ4`TQ1h>?dO@aRrksdJcY3#Li>S7%CVyS2i}<#YQp&= z5A0QK)etW>tCuI;gH55+=K+0qfNXSnC_!e^gG6^u%@*G|+u!RM>HM?0kFaEUiSULY&>v|zGi zR{Xh%#kmuFd|qy*LmC9uN4RNPb(%Pc8J%s#)T1U2MLP9~iNk=SEI0xf6G{m_=ArD? zSHjd*WCY2oBu<@@lbDq~GF{vs!0Q@HcmE`hkh_WSQ~ZtYC1V`Y%a9`_r9qSiGBu!6 zHQX7Pc-_W2bhGvZ;$1;qh$sFz#l!vQAc@R!APDu6ipDy`o6}%*=A7nrU~a`}-Zjd4 zjqVWY0eTWsB3{Z;7I9LZo`z*85L3(f>}K}y4rwyD;b?stL{=PO!T#=aE&dFTm+>a+ zvuCmNDG(o?G44^97wH#xNc&z$>g^&^vA zp0AzPI#=*fHG-mEcIe|R4k6k_NBE5PxV^x6y! z*2u!JL4fWzUwm_&kC%swxEs7vi{Y;rc4fV{k!s>EU6?oGlF2(^%7_&=xPOGnZi;px z%V**!;8eom_zm9NUiJVzPm6c@B8{@5me}+Rk0BeN=FQ4C^t%Z6O5@kWD}ci-_*3Ba z)v&(>uR?lV3*G=sGlyB;mTKi~1;*gZa|@gXgWAT-a15B{2ov80wqB6hl8l>~{s8IJ z1Sa-HI?X#KZtiM(6L$b^OF2wNe=w{U7z0e&VWy7*_9LuquH@MsHRI=c?viYliKBt3)lB>=;z)1p zX50qDS^*ja)(j1SX}Hi2&fIFP{oj00-MsnRpeW>?2|WV$Y_%SNd$yG#x_h=qkCA(J zLXVMq_A|u{_w1G))!nnXUlUh%&)(6ax_h>gqAvHWSdSa-+4o=PQG(%~9is%(J-eg> zmwWb?4qWcptJ@*wcF*3@k?Ed&tRvGs+pHtgJ=;m>p?h{jhkbob_w1tfVGU)df6~A& z43m+BW}@aZaSz1FBv>)c{R6cGr;;MqE#2&po(Cp-Mg68@VV}$6L{Ws27M8ljNGH2S z<(Rk$;(jirid53lOCdKHJh~nkI}?vVJi>y*L*y^!N%BkLYLtSv zWx=QE*^(~FqR(s=ChjffDaP8PAX=%812(3!#u7`kV z$3q+w2#%(N-FIkev-^%Wm9P#)OMXb!P)DszZ8%K0EsD@Li2G^XTHU%`s02TW}G z3S-2RF-m3~$5)1Pa|I%FLC06(`xxaZ&jRq%M9=qlTYeT%nl*g3iQ%!z6KeD}hi(IC zVL{UowF)i2thlp_mjzkUx8b0!Ad07pM(^|PwP5{kLD%sQM8O+D3#*~xgE%F4ko2{& ztfDm|nQUvhBY{VONO#GaQeOHkLmrBo;aJ4Yx{(f!2W4rs;+1e)+yul&W{=81py#1{ z6G7P98)eOxE&4ZB!u=+Z9Da10M3cq5#!8g$(>shF8YVV3R#GD70n&W)0Ya+Wl-yB? zQ*uTore|T1i=}&s;7ycHc)Z)Y2~;wm)KJOUkR+AWFDsTHsRfW*r)acH1x*8y$20>( ziwCO4OwbFU7eOy+2b(B=vAoM@g({Hec83%QiUFm7dVrn-jRj2yEd~{WJ^_`0egd5Z z{SLYhiu%SO4FTnX7J&q)2(%8g4Ri$bJLopZ^IJGAponiB4W)L7^Z*S8O#;mY6@XTO zwt&6`?H8k)DeLo=p$S%kib1-27)p{FM#HP3P2x%)_^vHG*B1a zv6OUg#8jzQ(CB%fe9*}BN$DfU=FW6xPs_*|os~@;RVZ#GDO(P z6xSeqngD7aOboG0A4;m6lJwc=sFN-V9m7DT2;#3PI(es(T=uVNp znnNM8rcQxd-&AKoaE7R8p#+J>Yk2+kCXcj&?7oS2Ax?#w_#Wbo+lN8=+>AZU${$MOp-E z1M3&m%2JeBtky?`XjOA_@iT2?8)X|)OAb2pjUZaj(6BV|TEr={iPu%b>rE_%wO2a! zGsQNVY*(@54ALsbOsAWs<~4C@HN3&hFK)C~lDR2%Ru&gqC?VpPjl8y>$vo$}zY;OJ zgOcK|Lb7YQXNuv#?IV}Ws)jEC_qJ5&CNRy`CE`X0%&es%xFg={!LY4JokYeE(&IIIvf6!s&s|l{=TY2 z$)m)#s*)YH{g^{?BHLMnKB2B+tPpL(0mPOA!w2C>VzA-BwBV-{z1^BvohW<^@KxTQ-6XI8$u{m ztm~|FN_Yuus^t=dkqC3rCuU|iGbWC5VoJ!E;VcE8>@Lzp;Z`1}RDeOg=igu)*vh-q z4LE6-|2TvRNC?G!%VMy`6MeJ5qG@cNINwD{_E`fM4=8qO{6%4Zn|Z=AeDuX7p_cGg z-eRhYs_=H0kUqqiF^}WvPBvOzR*M_wX{b+{80XELwI|Qi8glHayY+2&n^x zAf($FFXnYsx<)Jpq^VyZq(=D$A+2h5BSb+EyU`W%pea@bHr@MpQNNoKg7>i6bW;-j zx|KV0@0;$FhI2RVg>K3jPrsxJLlH<7sme)WbZ;d_&J{~~D=*47G~P#f+vdOY2qqTL MNzi>z)KSNO1N24>7ytkO diff --git a/sputnikdao-factory2/src/factory_manager.rs b/sputnikdao-factory2/src/factory_manager.rs index ddd40aa5..5313645c 100644 --- a/sputnikdao-factory2/src/factory_manager.rs +++ b/sputnikdao-factory2/src/factory_manager.rs @@ -120,10 +120,8 @@ impl FactoryManager { env::promise_batch_action_create_account(promise_id); // Transfer attached deposit. env::promise_batch_action_transfer(promise_id, attached_deposit); - env::log_str("checking key"); if let Some(public_key) = public_key { // Add passed public key - env::log_str(format!("Adding key {:?}", public_key.as_str()).as_str()); env::promise_batch_action_add_key_with_full_access(promise_id, &PublicKey::from_str(public_key.as_str()).unwrap(), 0); } diff --git a/sputnikdao-factory2/tests/test_basics.rs b/sputnikdao-factory2/tests/test_basics.rs index 14e5fd0e..de51cf2f 100644 --- a/sputnikdao-factory2/tests/test_basics.rs +++ b/sputnikdao-factory2/tests/test_basics.rs @@ -106,11 +106,6 @@ async fn test_factory() -> Result<(), Box> { assert!(create_result.is_success()); - println!("{:?}", create_result); - println!( - "public key {}", - user_account.secret_key().public_key().to_string() - ); let dao_account_id: AccountId = format!("{}.{}", dao_name, SPUTNIKDAO_FACTORY_CONTRACT_ACCOUNT).parse().unwrap(); let dao_contract = Contract::from_secret_key( dao_account_id.clone(), @@ -129,14 +124,15 @@ async fn test_factory() -> Result<(), Box> { assert_eq!(create_dao_args["config"], config); let user_account_status_before_delete = user_account.view_account().await?; - assert_eq!(user_account_status_before_delete.balance, NearToken::from_yoctonear(93984722284196139773822472)); - + assert_eq!(user_account_status_before_delete.balance.as_near(), account_details_before.balance.saturating_sub(NearToken::from_near(7)).as_near()); + let delete_result = dao_contract.delete_contract(user_account.id()).await?; assert!(delete_result.is_success()); - println!("{:?}", delete_result); + + worker.fast_forward(10).await?; let user_account_status_after_delete = user_account.view_account().await?; - assert_eq!(user_account_status_after_delete.balance, account_details_before.balance); - + assert_eq!(user_account_status_after_delete.balance.as_near(), account_details_before.balance.saturating_sub(NearToken::from_near(1)).as_near()); + Ok(()) }