From 654970ae1a2e1affc6ac8e1183f57c2bf04f1b20 Mon Sep 17 00:00:00 2001 From: Donovan Solms Date: Fri, 6 Oct 2023 12:45:58 +0200 Subject: [PATCH 01/84] feat(tokenfactory): Add denom creation on instantiate --- contracts/tokenomics/staking/Cargo.toml | 6 +- contracts/tokenomics/staking/src/contract.rs | 302 +++++++++---------- contracts/tokenomics/staking/src/error.rs | 3 + contracts/tokenomics/staking/src/state.rs | 8 +- packages/astroport/src/staking.rs | 8 +- 5 files changed, 160 insertions(+), 167 deletions(-) diff --git a/contracts/tokenomics/staking/Cargo.toml b/contracts/tokenomics/staking/Cargo.toml index 402c3f0fa..39cb75cbd 100644 --- a/contracts/tokenomics/staking/Cargo.toml +++ b/contracts/tokenomics/staking/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "astroport-staking" -version = "1.1.0" +version = "2.0.0" authors = ["Astroport"] edition = "2021" @@ -26,9 +26,11 @@ thiserror = { version = "1.0" } cw2 = "0.15" cw20 = "0.15" astroport = { path = "../../../packages/astroport", version = "3" } -protobuf = { version = "2", features = ["with-bytes"] } +# protobuf = { version = "2", features = ["with-bytes"] } +protobuf = "=3.2.0" cosmwasm-schema = { version = "1.1" } cw-utils = "1.0.1" +neutron-sdk = "0.6" [dev-dependencies] astroport-token = { path = "../../token" } diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index b639630b1..fa3c3b620 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -1,9 +1,12 @@ use cosmwasm_std::{ - attr, entry_point, from_binary, to_binary, wasm_execute, Addr, Binary, CosmosMsg, Deps, - DepsMut, Env, MessageInfo, Reply, ReplyOn, Response, StdError, StdResult, SubMsg, - SubMsgResponse, SubMsgResult, Uint128, WasmMsg, + attr, entry_point, from_binary, to_binary, wasm_execute, Addr, BankMsg, Binary, CosmosMsg, + CustomMsg, DenomMetadata, Deps, DepsMut, Env, MessageInfo, Reply, ReplyOn, Response, StdError, + StdResult, SubMsg, SubMsgResponse, SubMsgResult, Uint128, WasmMsg, }; use cw_utils::parse_instantiate_response_data; +use neutron_sdk::bindings::msg::NeutronMsg; +use neutron_sdk::bindings::query::NeutronQuery; +use neutron_sdk::query::token_factory::{query_full_denom, FullDenomResponse}; use crate::error::ContractError; use crate::state::{Config, CONFIG}; @@ -26,7 +29,7 @@ const TOKEN_NAME: &str = "Staked Astroport"; const TOKEN_SYMBOL: &str = "xASTRO"; /// A `reply` call code ID used for sub-messages. -const INSTANTIATE_TOKEN_REPLY_ID: u64 = 1; +const INSTANTIATE_DENOM_REPLY_ID: u64 = 1; /// Minimum initial xastro share pub(crate) const MINIMUM_STAKE_AMOUNT: Uint128 = Uint128::new(1_000); @@ -38,44 +41,35 @@ pub fn instantiate( env: Env, _info: MessageInfo, msg: InstantiateMsg, -) -> StdResult { +) -> StdResult> { set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; // Store config CONFIG.save( deps.storage, &Config { - astro_token_addr: deps.api.addr_validate(&msg.deposit_token_addr)?, - xastro_token_addr: Addr::unchecked(""), + // TODO: Remove + // astro_token_addr: deps.api.addr_validate(&msg.deposit_token_addr)?, + // xastro_token_addr: Addr::unchecked(""), + astro_denom: "not-set".to_string(), + xastro_denom: "".to_string(), }, )?; - // Create the xASTRO token - let sub_msg: Vec = vec![SubMsg { - msg: WasmMsg::Instantiate { - admin: Some(msg.owner), - code_id: msg.token_code_id, - msg: to_binary(&TokenInstantiateMsg { - name: TOKEN_NAME.to_string(), - symbol: TOKEN_SYMBOL.to_string(), - decimals: 6, - initial_balances: vec![], - mint: Some(MinterResponse { - minter: env.contract.address.to_string(), - cap: None, - }), - marketing: msg.marketing, - })?, - funds: vec![], - label: String::from("Staked Astroport Token"), + // Create the xASTRO TokenFactory token + // TODO: After creating the TokenFactory token, also set the tracking contract + + let sub_msg: SubMsg = SubMsg { + id: INSTANTIATE_DENOM_REPLY_ID, + msg: NeutronMsg::CreateDenom { + subdenom: TOKEN_SYMBOL.to_string(), } .into(), - id: INSTANTIATE_TOKEN_REPLY_ID, gas_limit: None, reply_on: ReplyOn::Success, - }]; + }; - Ok(Response::new().add_submessages(sub_msg)) + Ok(Response::new().add_submessage(sub_msg)) } /// Exposes execute functions available in the contract. @@ -97,29 +91,24 @@ pub fn execute( /// The entry point to the contract for processing replies from submessages. #[cfg_attr(not(feature = "library"), entry_point)] -pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result { - match msg { - Reply { - id: INSTANTIATE_TOKEN_REPLY_ID, - result: - SubMsgResult::Ok(SubMsgResponse { - data: Some(data), .. - }), - } => { - let mut config = CONFIG.load(deps.storage)?; - - if config.xastro_token_addr != Addr::unchecked("") { - return Err(ContractError::Unauthorized {}); - } - - let init_response = parse_instantiate_response_data(data.as_slice()) - .map_err(|e| StdError::generic_err(format!("{e}")))?; - - config.xastro_token_addr = deps.api.addr_validate(&init_response.contract_address)?; +pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result { + match msg.id { + INSTANTIATE_DENOM_REPLY_ID => { + // Query the chain to get the final xASTRO denom + // Neutron does not respond with the created denom in the reply + // so msg.result.try_into()? has no value + let denom_response = query_full_denom( + deps.as_ref(), + env.contract.address, + TOKEN_SYMBOL.to_string(), + ) + .map_err(|_| ContractError::FailedToCreateDenom {})?; + let mut config = CONFIG.load(deps.storage)?; + config.xastro_denom = denom_response.denom; CONFIG.save(deps.storage, &config)?; - Ok(Response::new()) + Ok(Response::new().add_attribute("xastro_denom", config.xastro_denom)) } _ => Err(ContractError::FailedToParseReply {}), } @@ -134,109 +123,110 @@ fn receive_cw20( info: MessageInfo, cw20_msg: Cw20ReceiveMsg, ) -> Result { - let config: Config = CONFIG.load(deps.storage)?; - - let recipient = cw20_msg.sender; - let mut amount = cw20_msg.amount; - - let mut total_deposit = query_token_balance( - &deps.querier, - &config.astro_token_addr, - env.contract.address.clone(), - )?; - let total_shares = query_supply(&deps.querier, &config.xastro_token_addr)?; - - match from_binary(&cw20_msg.msg)? { - Cw20HookMsg::Enter {} => { - let mut messages = vec![]; - if info.sender != config.astro_token_addr { - return Err(ContractError::Unauthorized {}); - } - - // In a CW20 `send`, the total balance of the recipient is already increased. - // To properly calculate the total amount of ASTRO deposited in staking, we should subtract the user deposit from the pool - total_deposit -= amount; - let mint_amount: Uint128 = if total_shares.is_zero() || total_deposit.is_zero() { - amount = amount - .checked_sub(MINIMUM_STAKE_AMOUNT) - .map_err(|_| ContractError::MinimumStakeAmountError {})?; - - // amount cannot become zero after minimum stake subtraction - if amount.is_zero() { - return Err(ContractError::MinimumStakeAmountError {}); - } - - messages.push(wasm_execute( - config.xastro_token_addr.clone(), - &Cw20ExecuteMsg::Mint { - recipient: env.contract.address.to_string(), - amount: MINIMUM_STAKE_AMOUNT, - }, - vec![], - )?); - - amount - } else { - amount = amount - .checked_mul(total_shares)? - .checked_div(total_deposit)?; - - if amount.is_zero() { - return Err(ContractError::StakeAmountTooSmall {}); - } - - amount - }; - - messages.push(wasm_execute( - config.xastro_token_addr, - &Cw20ExecuteMsg::Mint { - recipient: recipient.clone(), - amount: mint_amount, - }, - vec![], - )?); - - Ok(Response::new().add_messages(messages).add_attributes(vec![ - attr("action", "enter"), - attr("recipient", recipient), - attr("astro_amount", cw20_msg.amount), - attr("xastro_amount", mint_amount), - ])) - } - Cw20HookMsg::Leave {} => { - if info.sender != config.xastro_token_addr { - return Err(ContractError::Unauthorized {}); - } - - let what = amount - .checked_mul(total_deposit)? - .checked_div(total_shares)?; - - // Burn share - let res = Response::new() - .add_message(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: config.xastro_token_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Burn { amount })?, - funds: vec![], - })) - .add_message(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: config.astro_token_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Transfer { - recipient: recipient.clone(), - amount: what, - })?, - funds: vec![], - })); - - Ok(res.add_attributes(vec![ - attr("action", "leave"), - attr("recipient", recipient), - attr("xastro_amount", cw20_msg.amount), - attr("astro_amount", what), - ])) - } - } + Ok(Response::default()) + // let config: Config = CONFIG.load(deps.storage)?; + + // let recipient = cw20_msg.sender; + // let mut amount = cw20_msg.amount; + + // let mut total_deposit = query_token_balance( + // &deps.querier, + // &config.astro_token_addr, + // env.contract.address.clone(), + // )?; + // let total_shares = query_supply(&deps.querier, &config.xastro_token_addr)?; + + // match from_binary(&cw20_msg.msg)? { + // Cw20HookMsg::Enter {} => { + // let mut messages = vec![]; + // if info.sender != config.astro_token_addr { + // return Err(ContractError::Unauthorized {}); + // } + + // // In a CW20 `send`, the total balance of the recipient is already increased. + // // To properly calculate the total amount of ASTRO deposited in staking, we should subtract the user deposit from the pool + // total_deposit -= amount; + // let mint_amount: Uint128 = if total_shares.is_zero() || total_deposit.is_zero() { + // amount = amount + // .checked_sub(MINIMUM_STAKE_AMOUNT) + // .map_err(|_| ContractError::MinimumStakeAmountError {})?; + + // // amount cannot become zero after minimum stake subtraction + // if amount.is_zero() { + // return Err(ContractError::MinimumStakeAmountError {}); + // } + + // messages.push(wasm_execute( + // config.xastro_token_addr.clone(), + // &Cw20ExecuteMsg::Mint { + // recipient: env.contract.address.to_string(), + // amount: MINIMUM_STAKE_AMOUNT, + // }, + // vec![], + // )?); + + // amount + // } else { + // amount = amount + // .checked_mul(total_shares)? + // .checked_div(total_deposit)?; + + // if amount.is_zero() { + // return Err(ContractError::StakeAmountTooSmall {}); + // } + + // amount + // }; + + // messages.push(wasm_execute( + // config.xastro_token_addr, + // &Cw20ExecuteMsg::Mint { + // recipient: recipient.clone(), + // amount: mint_amount, + // }, + // vec![], + // )?); + + // Ok(Response::new().add_messages(messages).add_attributes(vec![ + // attr("action", "enter"), + // attr("recipient", recipient), + // attr("astro_amount", cw20_msg.amount), + // attr("xastro_amount", mint_amount), + // ])) + // } + // Cw20HookMsg::Leave {} => { + // if info.sender != config.xastro_token_addr { + // return Err(ContractError::Unauthorized {}); + // } + + // let what = amount + // .checked_mul(total_deposit)? + // .checked_div(total_shares)?; + + // // Burn share + // let res = Response::new() + // .add_message(CosmosMsg::Wasm(WasmMsg::Execute { + // contract_addr: config.xastro_token_addr.to_string(), + // msg: to_binary(&Cw20ExecuteMsg::Burn { amount })?, + // funds: vec![], + // })) + // .add_message(CosmosMsg::Wasm(WasmMsg::Execute { + // contract_addr: config.astro_token_addr.to_string(), + // msg: to_binary(&Cw20ExecuteMsg::Transfer { + // recipient: recipient.clone(), + // amount: what, + // })?, + // funds: vec![], + // })); + + // Ok(res.add_attributes(vec![ + // attr("action", "leave"), + // attr("recipient", recipient), + // attr("xastro_amount", cw20_msg.amount), + // attr("astro_amount", what), + // ])) + // } + // } } /// Exposes all the queries available in the contract. @@ -252,15 +242,13 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { let config = CONFIG.load(deps.storage)?; match msg { QueryMsg::Config {} => Ok(to_binary(&ConfigResponse { - deposit_token_addr: config.astro_token_addr, - share_token_addr: config.xastro_token_addr, + deposit_denom: config.astro_denom, + share_denom: config.xastro_denom, })?), - QueryMsg::TotalShares {} => { - to_binary(&query_supply(&deps.querier, &config.xastro_token_addr)?) - } + QueryMsg::TotalShares {} => to_binary(&query_supply(&deps.querier, &config.xastro_denom)?), QueryMsg::TotalDeposit {} => to_binary(&query_token_balance( &deps.querier, - &config.astro_token_addr, + &config.astro_denom, env.contract.address, )?), } diff --git a/contracts/tokenomics/staking/src/error.rs b/contracts/tokenomics/staking/src/error.rs index 3b5ce5f9f..8993d82a3 100644 --- a/contracts/tokenomics/staking/src/error.rs +++ b/contracts/tokenomics/staking/src/error.rs @@ -22,6 +22,9 @@ pub enum ContractError { #[error("Failed to parse or process reply message")] FailedToParseReply {}, + + #[error("Failed to create new TokenFactory denom")] + FailedToCreateDenom {}, } impl From for ContractError { diff --git a/contracts/tokenomics/staking/src/state.rs b/contracts/tokenomics/staking/src/state.rs index e9f425a23..d28b00555 100644 --- a/contracts/tokenomics/staking/src/state.rs +++ b/contracts/tokenomics/staking/src/state.rs @@ -5,10 +5,10 @@ use cw_storage_plus::Item; /// This structure stores the main parameters for the staking contract. #[cw_serde] pub struct Config { - /// The ASTRO token contract address - pub astro_token_addr: Addr, - /// The xASTRO token contract address - pub xastro_token_addr: Addr, + /// The ASTRO token denom + pub astro_denom: String, + /// The xASTRO token denom + pub xastro_denom: String, } /// Stores the contract config at the given key diff --git a/packages/astroport/src/staking.rs b/packages/astroport/src/staking.rs index 7cc9b9a8a..acbe4ed13 100644 --- a/packages/astroport/src/staking.rs +++ b/packages/astroport/src/staking.rs @@ -38,10 +38,10 @@ pub enum QueryMsg { #[cw_serde] pub struct ConfigResponse { - /// The ASTRO token address - pub deposit_token_addr: Addr, - /// The xASTRO token address - pub share_token_addr: Addr, + /// The ASTRO denom + pub deposit_denom: String, + /// The xASTRO denom + pub share_denom: String, } /// This structure describes a migration message. From d51670cc9b10fd7f60f9080df8582bfef4d0f6cc Mon Sep 17 00:00:00 2001 From: Donovan Solms Date: Mon, 9 Oct 2023 15:06:40 +0200 Subject: [PATCH 02/84] feat(tokenfactory): Remove CW20 support, move to TokenFactory --- contracts/tokenomics/staking/Cargo.toml | 3 +- contracts/tokenomics/staking/src/contract.rs | 325 ++++++++++--------- contracts/tokenomics/staking/src/error.rs | 4 + packages/astroport/src/staking.rs | 34 +- 4 files changed, 193 insertions(+), 173 deletions(-) diff --git a/contracts/tokenomics/staking/Cargo.toml b/contracts/tokenomics/staking/Cargo.toml index 39cb75cbd..5cc3f4894 100644 --- a/contracts/tokenomics/staking/Cargo.toml +++ b/contracts/tokenomics/staking/Cargo.toml @@ -20,11 +20,10 @@ crate-type = ["cdylib", "rlib"] backtraces = ["cosmwasm-std/backtraces"] [dependencies] -cosmwasm-std = { version = "1.1" } +cosmwasm-std = { version = "1.1", features = ["cosmwasm_1_1"] } cw-storage-plus = "0.15" thiserror = { version = "1.0" } cw2 = "0.15" -cw20 = "0.15" astroport = { path = "../../../packages/astroport", version = "3" } # protobuf = { version = "2", features = ["with-bytes"] } protobuf = "=3.2.0" diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index fa3c3b620..3715bb79b 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -1,31 +1,29 @@ use cosmwasm_std::{ - attr, entry_point, from_binary, to_binary, wasm_execute, Addr, BankMsg, Binary, CosmosMsg, - CustomMsg, DenomMetadata, Deps, DepsMut, Env, MessageInfo, Reply, ReplyOn, Response, StdError, - StdResult, SubMsg, SubMsgResponse, SubMsgResult, Uint128, WasmMsg, + attr, coin, entry_point, to_binary, BankMsg, Binary, Deps, DepsMut, Env, MessageInfo, Reply, + ReplyOn, Response, StdResult, SubMsg, Uint128, }; -use cw_utils::parse_instantiate_response_data; use neutron_sdk::bindings::msg::NeutronMsg; use neutron_sdk::bindings::query::NeutronQuery; -use neutron_sdk::query::token_factory::{query_full_denom, FullDenomResponse}; +use neutron_sdk::query::token_factory::query_full_denom; use crate::error::ContractError; use crate::state::{Config, CONFIG}; use astroport::staking::{ - ConfigResponse, Cw20HookMsg, ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg, + ConfigResponse, ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg, StakingResponse, }; -use cw2::{get_contract_version, set_contract_version}; -use cw20::{Cw20ExecuteMsg, Cw20ReceiveMsg, MinterResponse}; +use cw2::set_contract_version; +use cw_utils::must_pay; -use astroport::querier::{query_supply, query_token_balance}; -use astroport::xastro_token::InstantiateMsg as TokenInstantiateMsg; +use astroport::querier::query_balance; /// Contract name that is used for migration. const CONTRACT_NAME: &str = "astroport-staking"; /// Contract version that is used for migration. const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); -/// xASTRO information. -const TOKEN_NAME: &str = "Staked Astroport"; +/// xASTRO information +/// TODO: Once Neutron allows setting metadata, add this as decimals +const TOKEN_NAME: &str = "Staked Astroport Token"; const TOKEN_SYMBOL: &str = "xASTRO"; /// A `reply` call code ID used for sub-messages. @@ -38,26 +36,26 @@ pub(crate) const MINIMUM_STAKE_AMOUNT: Uint128 = Uint128::new(1_000); #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( deps: DepsMut, - env: Env, + _env: Env, _info: MessageInfo, msg: InstantiateMsg, ) -> StdResult> { set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + // TODO: Validate that deposit_token_denom exists on chain + // Store config CONFIG.save( deps.storage, &Config { - // TODO: Remove - // astro_token_addr: deps.api.addr_validate(&msg.deposit_token_addr)?, - // xastro_token_addr: Addr::unchecked(""), - astro_denom: "not-set".to_string(), + astro_denom: msg.deposit_token_denom, xastro_denom: "".to_string(), }, )?; // Create the xASTRO TokenFactory token // TODO: After creating the TokenFactory token, also set the tracking contract + // we need a Neutron upgrade to enable that let sub_msg: SubMsg = SubMsg { id: INSTANTIATE_DENOM_REPLY_ID, @@ -75,17 +73,18 @@ pub fn instantiate( /// Exposes execute functions available in the contract. /// /// ## Variants -/// * **ExecuteMsg::Receive(msg)** Receives a message of type [`Cw20ReceiveMsg`] and processes -/// it depending on the received template. +/// * **ExecuteMsg::Enter** Stake the provided ASTRO tokens for xASTRO +/// * **ExecuteMsg::Leave** Unstake the provided xASTRO tokens for ASTRO #[cfg_attr(not(feature = "library"), entry_point)] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, -) -> Result { +) -> Result, ContractError> { match msg { - ExecuteMsg::Receive(msg) => receive_cw20(deps, env, info, msg), + ExecuteMsg::Enter {} => execute_enter(deps, env, info), + ExecuteMsg::Leave {} => execute_leave(deps, env, info), } } @@ -114,119 +113,153 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result Result { - Ok(Response::default()) - // let config: Config = CONFIG.load(deps.storage)?; - - // let recipient = cw20_msg.sender; - // let mut amount = cw20_msg.amount; - - // let mut total_deposit = query_token_balance( - // &deps.querier, - // &config.astro_token_addr, - // env.contract.address.clone(), - // )?; - // let total_shares = query_supply(&deps.querier, &config.xastro_token_addr)?; - - // match from_binary(&cw20_msg.msg)? { - // Cw20HookMsg::Enter {} => { - // let mut messages = vec![]; - // if info.sender != config.astro_token_addr { - // return Err(ContractError::Unauthorized {}); - // } - - // // In a CW20 `send`, the total balance of the recipient is already increased. - // // To properly calculate the total amount of ASTRO deposited in staking, we should subtract the user deposit from the pool - // total_deposit -= amount; - // let mint_amount: Uint128 = if total_shares.is_zero() || total_deposit.is_zero() { - // amount = amount - // .checked_sub(MINIMUM_STAKE_AMOUNT) - // .map_err(|_| ContractError::MinimumStakeAmountError {})?; - - // // amount cannot become zero after minimum stake subtraction - // if amount.is_zero() { - // return Err(ContractError::MinimumStakeAmountError {}); - // } - - // messages.push(wasm_execute( - // config.xastro_token_addr.clone(), - // &Cw20ExecuteMsg::Mint { - // recipient: env.contract.address.to_string(), - // amount: MINIMUM_STAKE_AMOUNT, - // }, - // vec![], - // )?); - - // amount - // } else { - // amount = amount - // .checked_mul(total_shares)? - // .checked_div(total_deposit)?; - - // if amount.is_zero() { - // return Err(ContractError::StakeAmountTooSmall {}); - // } - - // amount - // }; - - // messages.push(wasm_execute( - // config.xastro_token_addr, - // &Cw20ExecuteMsg::Mint { - // recipient: recipient.clone(), - // amount: mint_amount, - // }, - // vec![], - // )?); - - // Ok(Response::new().add_messages(messages).add_attributes(vec![ - // attr("action", "enter"), - // attr("recipient", recipient), - // attr("astro_amount", cw20_msg.amount), - // attr("xastro_amount", mint_amount), - // ])) - // } - // Cw20HookMsg::Leave {} => { - // if info.sender != config.xastro_token_addr { - // return Err(ContractError::Unauthorized {}); - // } - - // let what = amount - // .checked_mul(total_deposit)? - // .checked_div(total_shares)?; - - // // Burn share - // let res = Response::new() - // .add_message(CosmosMsg::Wasm(WasmMsg::Execute { - // contract_addr: config.xastro_token_addr.to_string(), - // msg: to_binary(&Cw20ExecuteMsg::Burn { amount })?, - // funds: vec![], - // })) - // .add_message(CosmosMsg::Wasm(WasmMsg::Execute { - // contract_addr: config.astro_token_addr.to_string(), - // msg: to_binary(&Cw20ExecuteMsg::Transfer { - // recipient: recipient.clone(), - // amount: what, - // })?, - // funds: vec![], - // })); - - // Ok(res.add_attributes(vec![ - // attr("action", "leave"), - // attr("recipient", recipient), - // attr("xastro_amount", cw20_msg.amount), - // attr("astro_amount", what), - // ])) - // } - // } +) -> Result, ContractError> { + let config = CONFIG.load(deps.storage)?; + + // Ensure that the correct token is sent. This will fail if + // zero tokens are sent. + let mut amount = must_pay(&info, &config.astro_denom)?; + + // Receiver of the xASTRO tokens + let recipient = info.sender; + + // Get the current deposits and shares held in the contract + let total_deposit = query_balance( + &deps.querier, + env.contract.address.clone(), + config.astro_denom.clone(), + )?; + let total_shares = deps + .querier + .query_supply(config.xastro_denom.clone())? + .amount; + + let mut messages = vec![]; + + let mint_amount: Uint128 = if total_shares.is_zero() || total_deposit.is_zero() { + amount = amount + .checked_sub(MINIMUM_STAKE_AMOUNT) + .map_err(|_| ContractError::MinimumStakeAmountError {})?; + + // There needs to be a minimum amount initially staked, thus the result + // cannot be zero if the amount if not enough + if amount.is_zero() { + return Err(ContractError::MinimumStakeAmountError {}); + } + + // Mint the xASTRO tokens to ourselves if this is the first stake + messages.push(NeutronMsg::MintTokens { + denom: config.xastro_denom.clone(), + amount: MINIMUM_STAKE_AMOUNT, + mint_to_address: env.contract.address.to_string(), + }); + + amount + } else { + amount = amount + .checked_mul(total_shares)? + .checked_div(total_deposit)?; + + if amount.is_zero() { + return Err(ContractError::StakeAmountTooSmall {}); + } + + amount + }; + + // Mint new xASTRO tokens to the sender + messages.push(NeutronMsg::MintTokens { + denom: config.xastro_denom, + amount: mint_amount, + mint_to_address: recipient.to_string(), + }); + + // Set the data to be returned in set_data to easy integration with + // other contracts + let staking_response = to_binary(&StakingResponse { + astro_amount: amount, + xastro_amount: mint_amount, + })?; + + Ok(Response::new() + .add_messages(messages) + .set_data(staking_response) + .add_attributes(vec![ + attr("action", "enter"), + attr("recipient", recipient), + attr("astro_amount", amount), + attr("xastro_amount", mint_amount), + ])) +} + +/// Leave unstakes TokenFactory xASTRO for ASTRO. xASTRO is burned and ASTRO +/// returned to the sender +fn execute_leave( + deps: DepsMut, + env: Env, + info: MessageInfo, +) -> Result, ContractError> { + let config = CONFIG.load(deps.storage)?; + + // Ensure that the correct token is sent. This will fail if + // zero tokens are sent. + let amount = must_pay(&info, &config.xastro_denom)?; + + // Receiver of the xASTRO tokens + let recipient = info.sender; + + // Get the current deposits and shares held in the contract + let total_deposit = query_balance( + &deps.querier, + env.contract.address, + config.astro_denom.clone(), + )?; + let total_shares = deps + .querier + .query_supply(config.xastro_denom.clone())? + .amount; + + // Calculate the amount of ASTRO to return based on the ratios of + // deposit and shares + let return_amount = amount + .checked_mul(total_deposit)? + .checked_div(total_shares)?; + + // Burn the received xASTRO tokens + let burn_msg = NeutronMsg::BurnTokens { + denom: config.xastro_denom, + amount, + burn_from_address: "".to_string(), // This needs to be "" for now + }; + + // Return the ASTRO tokens to the sender + let transfer_msg = BankMsg::Send { + to_address: recipient.to_string(), + amount: vec![coin(return_amount.u128(), config.astro_denom)], + }; + + // Set the data to be returned in set_data to easy integration with + // other contracts + let staking_response = to_binary(&StakingResponse { + astro_amount: return_amount, + xastro_amount: amount, + })?; + + Ok(Response::new() + .add_message(burn_msg) + .add_message(transfer_msg) + .set_data(staking_response) + .add_attributes(vec![ + attr("action", "leave"), + attr("recipient", recipient), + attr("xastro_amount", amount), + attr("astro_amount", return_amount), + ])) } /// Exposes all the queries available in the contract. @@ -245,11 +278,13 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { deposit_denom: config.astro_denom, share_denom: config.xastro_denom, })?), - QueryMsg::TotalShares {} => to_binary(&query_supply(&deps.querier, &config.xastro_denom)?), - QueryMsg::TotalDeposit {} => to_binary(&query_token_balance( + QueryMsg::TotalShares {} => { + to_binary(&deps.querier.query_supply(config.xastro_denom)?.amount) + } + QueryMsg::TotalDeposit {} => to_binary(&query_balance( &deps.querier, - &config.astro_denom, env.contract.address, + config.astro_denom, )?), } } @@ -263,22 +298,8 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { /// /// * **_msg** is the object of type [`MigrateMsg`]. #[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { - let contract_version = get_contract_version(deps.storage)?; - - match contract_version.contract.as_ref() { - "astroport-staking" => match contract_version.version.as_ref() { - "1.0.0" | "1.0.1" | "1.0.2" => {} - _ => return Err(ContractError::MigrationError {}), - }, - _ => return Err(ContractError::MigrationError {}), - } - - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - Ok(Response::new() - .add_attribute("previous_contract_name", &contract_version.contract) - .add_attribute("previous_contract_version", &contract_version.version) - .add_attribute("new_contract_name", CONTRACT_NAME) - .add_attribute("new_contract_version", CONTRACT_VERSION)) +pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { + // No migration is possible to move from CW20 ASTRO and + // xASTRO to TokenFactory versions + Err(ContractError::MigrationError {}) } diff --git a/contracts/tokenomics/staking/src/error.rs b/contracts/tokenomics/staking/src/error.rs index 8993d82a3..b41506b59 100644 --- a/contracts/tokenomics/staking/src/error.rs +++ b/contracts/tokenomics/staking/src/error.rs @@ -1,5 +1,6 @@ use crate::contract::MINIMUM_STAKE_AMOUNT; use cosmwasm_std::{DivideByZeroError, OverflowError, StdError}; +use cw_utils::PaymentError; use thiserror::Error; /// This enum describes staking contract errors @@ -25,6 +26,9 @@ pub enum ContractError { #[error("Failed to create new TokenFactory denom")] FailedToCreateDenom {}, + + #[error("{0}")] + PaymentError(#[from] PaymentError), } impl From for ContractError { diff --git a/packages/astroport/src/staking.rs b/packages/astroport/src/staking.rs index acbe4ed13..6aafddca6 100644 --- a/packages/astroport/src/staking.rs +++ b/packages/astroport/src/staking.rs @@ -1,26 +1,22 @@ -use crate::xastro_token::InstantiateMarketingInfo; use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{Addr, Uint128}; -use cw20::Cw20ReceiveMsg; +use cosmwasm_std::Uint128; /// This structure describes the parameters used for creating a contract. #[cw_serde] pub struct InstantiateMsg { /// The contract owner address pub owner: String, - /// CW20 token code identifier - pub token_code_id: u64, /// The ASTRO token contract address - pub deposit_token_addr: String, - /// the marketing info of type [`InstantiateMarketingInfo`] - pub marketing: Option, + pub deposit_token_denom: String, } /// This structure describes the execute messages available in the contract. #[cw_serde] pub enum ExecuteMsg { - /// Receive receives a message of type [`Cw20ReceiveMsg`] and processes it depending on the received template. - Receive(Cw20ReceiveMsg), + /// Deposits ASTRO in exchange for xASTRO + Enter {}, + /// Burns xASTRO in exchange for ASTRO + Leave {}, } /// This structure describes the query messages available in the contract. @@ -44,15 +40,15 @@ pub struct ConfigResponse { pub share_denom: String, } -/// This structure describes a migration message. +// The structure returned as part of set_data when staking or unstaking #[cw_serde] -pub struct MigrateMsg {} +pub struct StakingResponse { + /// The ASTRO denom + pub astro_amount: Uint128, + /// The xASTRO denom + pub xastro_amount: Uint128, +} -/// This structure describes a CW20 hook message. +/// This structure describes a migration message. #[cw_serde] -pub enum Cw20HookMsg { - /// Deposits ASTRO in exchange for xASTRO - Enter {}, - /// Burns xASTRO in exchange for ASTRO - Leave {}, -} +pub struct MigrateMsg {} From 2281e2e90f1d92b86522b91025b6c4c9a9fad912 Mon Sep 17 00:00:00 2001 From: Donovan Solms <4567303+donovansolms@users.noreply.github.com> Date: Fri, 27 Oct 2023 14:01:23 +0200 Subject: [PATCH 03/84] feat(tokenfactory_tracker): Add initial tracking contract --- Cargo.lock | 870 +++++++++++------- .../tokenfactory_tracker/.cargo/config | 6 + .../periphery/tokenfactory_tracker/Cargo.toml | 25 + .../periphery/tokenfactory_tracker/README.md | 158 ++++ .../examples/tokenfactory_tracker_schema.rs | 12 + .../tokenfactory_tracker/src/contract.rs | 86 ++ .../tokenfactory_tracker/src/error.rs | 12 + .../periphery/tokenfactory_tracker/src/lib.rs | 4 + .../tokenfactory_tracker/src/query.rs | 38 + .../tokenfactory_tracker/src/state.rs | 62 ++ .../tokenfactory_tracker/tests/helper.rs | 771 ++++++++++++++++ .../tests/liquidity_manager_integration.rs | 8 + .../tokenfactory_tracker/tests/unit.rs | 10 + .../astroport/src/tokenfactory_tracker.rs | 34 + 14 files changed, 1774 insertions(+), 322 deletions(-) create mode 100644 contracts/periphery/tokenfactory_tracker/.cargo/config create mode 100644 contracts/periphery/tokenfactory_tracker/Cargo.toml create mode 100644 contracts/periphery/tokenfactory_tracker/README.md create mode 100644 contracts/periphery/tokenfactory_tracker/examples/tokenfactory_tracker_schema.rs create mode 100644 contracts/periphery/tokenfactory_tracker/src/contract.rs create mode 100644 contracts/periphery/tokenfactory_tracker/src/error.rs create mode 100644 contracts/periphery/tokenfactory_tracker/src/lib.rs create mode 100644 contracts/periphery/tokenfactory_tracker/src/query.rs create mode 100644 contracts/periphery/tokenfactory_tracker/src/state.rs create mode 100644 contracts/periphery/tokenfactory_tracker/tests/helper.rs create mode 100644 contracts/periphery/tokenfactory_tracker/tests/liquidity_manager_integration.rs create mode 100644 contracts/periphery/tokenfactory_tracker/tests/unit.rs create mode 100644 packages/astroport/src/tokenfactory_tracker.rs diff --git a/Cargo.lock b/Cargo.lock index 5ffc9d261..72a579938 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -15,9 +15,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "ap-valkyrie" @@ -43,7 +43,7 @@ name = "astro-satellite-package" version = "0.1.0" source = "git+https://github.com/astroport-fi/astroport_ibc#ffb48ebfd7dbbc010cf86c9b02bad236c456fca0" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/astroport-governance)", + "astroport-governance 1.2.0", "cosmwasm-schema", "cosmwasm-std", ] @@ -56,7 +56,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.2", "cw20 0.15.1", "cw3", "injective-math", @@ -83,24 +83,24 @@ dependencies = [ "astroport", "cosmwasm-schema", "cosmwasm-std", - "cw-controllers 1.1.0", + "cw-controllers 1.1.1", "cw-storage-plus 1.1.0", - "cw-utils 1.0.1", - "cw2 1.1.0", - "cw20 1.1.0", + "cw-utils 1.0.2", + "cw2 1.1.1", + "cw20 1.1.1", "cw20-ics20", "schemars", "semver", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] [[package]] name = "astroport-escrow-fee-distributor" version = "1.0.2" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -121,12 +121,12 @@ dependencies = [ "cosmwasm-std", "cw-multi-test 0.15.1", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.2", "cw2 0.15.1", "cw20 0.15.1", "itertools 0.10.5", "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -138,10 +138,10 @@ dependencies = [ "cosmos-sdk-proto", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.16.5", + "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", - "cw2 1.1.0", + "cw-utils 1.0.2", + "cw2 1.1.1", "thiserror", ] @@ -152,7 +152,7 @@ dependencies = [ "anyhow", "astroport", "astroport-factory", - "astroport-governance 1.4.0", + "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance)", "astroport-mocks", "astroport-native-coin-registry", "astroport-nft", @@ -165,14 +165,14 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.2", "cw1-whitelist", "cw2 0.15.1", "cw20 0.15.1", "cw721-base", "generator-controller", "generator-proxy-to-vkr", - "protobuf", + "protobuf 2.28.0", "thiserror", "valkyrie", "valkyrie-lp-staking", @@ -197,7 +197,7 @@ dependencies = [ [[package]] name = "astroport-governance" version = "1.2.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ "astroport", "cosmwasm-schema", @@ -208,20 +208,21 @@ dependencies = [ [[package]] name = "astroport-governance" -version = "1.2.0" -source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" +version = "1.4.0" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" dependencies = [ "astroport", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw20 0.15.1", + "thiserror", ] [[package]] name = "astroport-governance" version = "1.4.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance#259fbc78d33f1b76e4213054babc95a1d9202f5c" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance#19cf042770a787414a1966b321e05eb2548c7c16" dependencies = [ "astroport", "cosmwasm-schema", @@ -246,13 +247,13 @@ dependencies = [ "astroport-whitelist", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.16.5", + "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", "cw-storage-plus 1.1.0", "cw20 0.15.1", "cw20-base 0.15.1", "derivative", "itertools 0.10.5", - "serde_json 1.0.104", + "serde_json 1.0.107", "thiserror", ] @@ -264,7 +265,7 @@ dependencies = [ "astroport", "astroport-escrow-fee-distributor", "astroport-factory", - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "astroport-native-coin-registry", "astroport-pair", "astroport-pair-stable", @@ -299,13 +300,13 @@ dependencies = [ "astroport-xastro-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.16.5", - "cw-utils 1.0.1", + "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", + "cw-utils 1.0.2", "cw20 0.15.1", "cw3", "injective-cosmwasm", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -341,9 +342,9 @@ dependencies = [ [[package]] name = "astroport-nft" version = "1.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -383,13 +384,13 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.2", "cw2 0.15.1", "cw20 0.15.1", "integer-sqrt", "proptest", "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -506,7 +507,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.2", "cw2 0.15.1", "cw20 0.15.1", "derivative", @@ -527,7 +528,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.1.0", - "cw20 1.1.0", + "cw20 1.1.1", "itertools 0.11.0", "thiserror", ] @@ -563,8 +564,8 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", - "cw2 1.1.0", + "cw-utils 1.0.2", + "cw2 1.1.1", "cw20 0.15.1", "cw3", "itertools 0.10.5", @@ -573,19 +574,22 @@ dependencies = [ [[package]] name = "astroport-staking" -version = "1.1.0" +version = "2.0.0" dependencies = [ + "anyhow", "astroport", "astroport-token", "astroport-xastro-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", + "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_cozy_fork)", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.2", "cw2 0.15.1", - "cw20 0.15.1", - "protobuf", + "derivative", + "itertools 0.11.0", + "osmosis-std 0.17.0-rc0", + "protobuf 3.2.0", "thiserror", ] @@ -602,6 +606,23 @@ dependencies = [ "snafu", ] +[[package]] +name = "astroport-tokenfactory-tracker" +version = "1.0.0" +dependencies = [ + "anyhow", + "astroport", + "cosmwasm-schema", + "cosmwasm-std", + "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", + "cw-storage-plus 1.1.0", + "derivative", + "itertools 0.10.5", + "osmosis-std 0.20.1", + "serde_json 1.0.107", + "thiserror", +] + [[package]] name = "astroport-vesting" version = "1.3.2" @@ -672,12 +693,24 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +[[package]] +name = "base64" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" + [[package]] name = "base64ct" version = "1.6.0" @@ -717,9 +750,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "block-buffer" @@ -741,32 +774,23 @@ dependencies = [ [[package]] name = "bnum" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "845141a4fade3f790628b7daaaa298a25b204fb28907eb54febe5142db6ce653" +checksum = "128a44527fc0d6abf05f9eda748b9027536e12dff93f5acc8449f51583309350" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" -dependencies = [ - "serde 1.0.180", -] - -[[package]] -name = "cc" -version = "1.0.81" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c6b2562119bf28c3439f7f02db99faf0aa1a8cdfe5772a2ee155d32227239f0" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" dependencies = [ - "libc", + "serde 1.0.188", ] [[package]] @@ -775,6 +799,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "num-traits", +] + [[package]] name = "cloudabi" version = "0.0.3" @@ -786,9 +819,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] name = "cosmos-sdk-proto" @@ -803,44 +836,44 @@ dependencies = [ [[package]] name = "cosmwasm-crypto" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e272708a9745dad8b591ef8a718571512130f2b39b33e3d7a27c558e3069394" +checksum = "a6fb22494cf7d23d0c348740e06e5c742070b2991fd41db77bba0bcfbae1a723" dependencies = [ "digest 0.10.7", "ed25519-zebra", - "k256", + "k256 0.13.1", "rand_core 0.6.4", "thiserror", ] [[package]] name = "cosmwasm-derive" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "296db6a3caca5283425ae0cf347f4e46999ba3f6620dbea8939a0e00347831ce" +checksum = "6e199424486ea97d6b211db6387fd72e26b4a439d40cc23140b2d8305728055b" dependencies = [ "syn 1.0.109", ] [[package]] name = "cosmwasm-schema" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63c337e097a089e5b52b5d914a7ff6613332777f38ea6d9d36e1887cd0baa72e" +checksum = "fef683a9c1c4eabd6d31515719d0d2cc66952c4c87f7eb192bfc90384517dc34" dependencies = [ "cosmwasm-schema-derive", "schemars", - "serde 1.0.180", - "serde_json 1.0.104", + "serde 1.0.188", + "serde_json 1.0.107", "thiserror", ] [[package]] name = "cosmwasm-schema-derive" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "766cc9e7c1762d8fc9c0265808910fcad755200cd0e624195a491dd885a61169" +checksum = "9567025acbb4c0c008178393eb53b3ac3c2e492c25949d3bf415b9cbe80772d8" dependencies = [ "proc-macro2", "quote", @@ -849,11 +882,11 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5e05a95fd2a420cca50f4e94eb7e70648dac64db45e90403997ebefeb143bd" +checksum = "7d89d680fb60439b7c5947b15f9c84b961b88d1f8a3b20c4bd178a3f87db8bae" dependencies = [ - "base64", + "base64 0.21.4", "bnum", "cosmwasm-crypto", "cosmwasm-derive", @@ -861,20 +894,20 @@ dependencies = [ "forward_ref", "hex", "schemars", - "serde 1.0.180", + "serde 1.0.188", "serde-json-wasm", - "sha2 0.10.7", + "sha2 0.10.8", "thiserror", ] [[package]] name = "cosmwasm-storage" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "800aaddd70ba915e19bf3d2d992aa3689d8767857727fdd3b414df4fd52d2aa1" +checksum = "54a1c574d30feffe4b8121e61e839c231a5ce21901221d2fb4d5c945968a4f00" dependencies = [ "cosmwasm-std", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -910,6 +943,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -943,22 +988,22 @@ dependencies = [ "cw-storage-plus 0.13.4", "cw-utils 0.13.4", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] [[package]] name = "cw-controllers" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d8edce4b78785f36413f67387e4be7d0cb7d032b5d4164bcc024f9c3f3f2ea" +checksum = "23b129ca74fa41111fd2e1727426532556dc63973420343b659f5c072b85d789" dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.1.0", - "cw-utils 1.0.1", + "cw-utils 1.0.2", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -977,7 +1022,25 @@ dependencies = [ "itertools 0.10.5", "prost 0.9.0", "schemars", - "serde 1.0.180", + "serde 1.0.188", + "thiserror", +] + +[[package]] +name = "cw-multi-test" +version = "0.16.5" +source = "git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_cozy_fork#08a11aa26f9f35b41f707e803d4cdec38fd2e78d" +dependencies = [ + "anyhow", + "cosmwasm-std", + "cw-storage-plus 1.1.0", + "cw-utils 1.0.2", + "derivative", + "itertools 0.11.0", + "prost 0.11.9", + "schemars", + "serde 1.0.188", + "sha2 0.10.8", "thiserror", ] @@ -989,13 +1052,13 @@ dependencies = [ "anyhow", "cosmwasm-std", "cw-storage-plus 1.1.0", - "cw-utils 1.0.1", + "cw-utils 1.0.2", "derivative", "itertools 0.10.5", - "k256", + "k256 0.11.6", "prost 0.9.0", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -1007,7 +1070,7 @@ checksum = "7d7ee1963302b0ac2a9d42fe0faec826209c17452bfd36fbfd9d002a88929261" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1018,7 +1081,7 @@ checksum = "648b1507290bbc03a8d88463d7cd9b04b1fa0155e5eef366c4fa052b9caaac7a" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1029,7 +1092,7 @@ checksum = "dc6cf70ef7686e2da9ad7b067c5942cd3e88dd9453f7af42f54557f8af300fb0" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1040,7 +1103,7 @@ checksum = "3f0e92a069d62067f3472c62e30adedb4cab1754725c0f2a682b3128d2bf3c79" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1051,7 +1114,7 @@ checksum = "ef842a1792e4285beff7b3b518705f760fa4111dc1e296e53f3e92d1ef7f6220" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -1063,7 +1126,7 @@ checksum = "9dbaecb78c8e8abfd6b4258c7f4fbeb5c49a5e45ee4d910d3240ee8e1d714e1b" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -1078,22 +1141,22 @@ dependencies = [ "cw2 0.15.1", "schemars", "semver", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] [[package]] name = "cw-utils" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c80e93d1deccb8588db03945016a292c3c631e6325d349ebb35d2db6f4f946f7" +checksum = "1b9f351a4e4d81ef7c890e44d903f8c0bdcdc00f094fd3a181eaf70c0eec7a3a" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw2 1.1.0", + "cw2 1.1.1", "schemars", "semver", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -1106,7 +1169,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1122,7 +1185,7 @@ dependencies = [ "cw1", "cw2 0.15.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -1135,7 +1198,7 @@ dependencies = [ "cosmwasm-std", "cw-storage-plus 0.11.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1147,7 +1210,7 @@ dependencies = [ "cosmwasm-std", "cw-storage-plus 0.13.4", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1160,20 +1223,20 @@ dependencies = [ "cosmwasm-std", "cw-storage-plus 0.15.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] name = "cw2" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ac2dc7a55ad64173ca1e0a46697c31b7a5c51342f55a1e84a724da4eb99908" +checksum = "9431d14f64f49e41c6ef5561ed11a5391c417d0cb16455dea8cdcb9037a8d197" dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.1.0", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -1186,7 +1249,7 @@ dependencies = [ "cosmwasm-std", "cw-utils 0.11.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1198,7 +1261,7 @@ dependencies = [ "cosmwasm-std", "cw-utils 0.13.4", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1211,20 +1274,20 @@ dependencies = [ "cosmwasm-std", "cw-utils 0.15.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] name = "cw20" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011c45920f8200bd5d32d4fe52502506f64f2f75651ab408054d4cfc75ca3a9b" +checksum = "786e9da5e937f473cecd2463e81384c1af65d0f6398bbd851be7655487c55492" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-utils 1.0.1", + "cw-utils 1.0.2", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1239,7 +1302,7 @@ dependencies = [ "cw2 0.11.1", "cw20 0.11.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -1257,7 +1320,7 @@ dependencies = [ "cw20 0.15.1", "schemars", "semver", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -1275,22 +1338,22 @@ dependencies = [ "cw20 0.13.4", "schemars", "semver", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] [[package]] name = "cw3" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171af3d9127de6805a7dd819fb070c7d2f6c3ea85f4193f42cef259f0a7f33d5" +checksum = "1d056ec33ec146554aa1d16c9535763341db75589a47743c006c377e62b54034" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-utils 1.0.1", - "cw20 1.1.0", + "cw-utils 1.0.2", + "cw20 1.1.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -1304,7 +1367,7 @@ dependencies = [ "cosmwasm-std", "cw-utils 0.15.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1320,7 +1383,7 @@ dependencies = [ "cw2 0.15.1", "cw721", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -1334,11 +1397,21 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "deranged" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" [[package]] name = "derivative" @@ -1367,6 +1440,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid", "crypto-common", "subtle", ] @@ -1379,9 +1453,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "dyn-clone" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272" +checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" [[package]] name = "ecdsa" @@ -1389,10 +1463,24 @@ version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" dependencies = [ - "der", - "elliptic-curve", - "rfc6979", - "signature", + "der 0.6.1", + "elliptic-curve 0.12.3", + "rfc6979 0.3.1", + "signature 1.6.4", +] + +[[package]] +name = "ecdsa" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +dependencies = [ + "der 0.7.8", + "digest 0.10.7", + "elliptic-curve 0.13.6", + "rfc6979 0.4.0", + "signature 2.1.0", + "spki 0.7.2", ] [[package]] @@ -1405,7 +1493,7 @@ dependencies = [ "hashbrown", "hex", "rand_core 0.6.4", - "serde 1.0.180", + "serde 1.0.188", "sha2 0.9.9", "zeroize", ] @@ -1422,39 +1510,47 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" dependencies = [ - "base16ct", - "crypto-bigint", - "der", + "base16ct 0.1.1", + "crypto-bigint 0.4.9", + "der 0.6.1", "digest 0.10.7", - "ff", + "ff 0.12.1", "generic-array", - "group", - "pkcs8", + "group 0.12.1", + "pkcs8 0.9.0", "rand_core 0.6.4", - "sec1", + "sec1 0.3.0", "subtle", "zeroize", ] [[package]] -name = "errno" -version = "0.3.2" +name = "elliptic-curve" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", + "base16ct 0.2.0", + "crypto-bigint 0.5.3", + "digest 0.10.7", + "ff 0.13.0", + "generic-array", + "group 0.13.0", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sec1 0.7.3", + "subtle", + "zeroize", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "errno" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "cc", "libc", + "windows-sys", ] [[package]] @@ -1480,7 +1576,7 @@ dependencies = [ "ethbloom", "ethereum-types-serialize", "fixed-hash", - "serde 1.0.180", + "serde 1.0.188", "uint 0.5.0", ] @@ -1490,14 +1586,14 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1873d77b32bc1891a79dad925f2acbc318ee942b38b9110f9dbc5fbeffcea350" dependencies = [ - "serde 1.0.180", + "serde 1.0.188", ] [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "ff" @@ -1509,6 +1605,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "fixed-hash" version = "0.3.2" @@ -1558,9 +1664,9 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generator-controller" version = "1.3.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -1594,6 +1700,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1613,7 +1720,18 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ - "ff", + "ff 0.12.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.0", "rand_core 0.6.4", "subtle", ] @@ -1642,7 +1760,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" dependencies = [ - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1669,7 +1787,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" dependencies = [ - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -1680,9 +1798,9 @@ checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" [[package]] name = "injective-cosmwasm" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4295a2d118cae0e21bba1c856464f6678b5db907cb085b3723d04efb65fa0d0d" +checksum = "ea4feaba1e0816808642abaed4eb369799c863a759f77bb71a15daca076d9874" dependencies = [ "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -1690,7 +1808,7 @@ dependencies = [ "hex", "injective-math", "schemars", - "serde 1.0.180", + "serde 1.0.188", "serde_repr", "subtle-encoding", "tiny-keccak 1.5.0", @@ -1698,16 +1816,15 @@ dependencies = [ [[package]] name = "injective-math" -version = "0.1.18" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a4077c240f057406b6efa4bf94bb9e8f86c83687d917c562a02da15466d0a9" +checksum = "e8b28dc06633a0fc1ac0345d350ff6ecead60989119a985c94053ce9448c1aa9" dependencies = [ "bigint", "cosmwasm-std", "ethereum-types", - "num 0.4.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", "subtle-encoding", ] @@ -1718,14 +1835,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "980b8e23acb5310a44ea725fe05c15ba01d3e00bbb3725076373ae27111efa3d" dependencies = [ "anyhow", - "base64", + "base64 0.13.1", "cosmwasm-std", - "cw-multi-test 0.16.5", + "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", "injective-cosmwasm", "injective-math", "rand 0.4.6", "secp256k1", - "serde 1.0.180", + "serde 1.0.188", "tiny-keccak 1.5.0", ] @@ -1769,9 +1886,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" dependencies = [ "cfg-if", - "ecdsa", - "elliptic-curve", - "sha2 0.10.7", + "ecdsa 0.14.8", + "elliptic-curve 0.12.3", + "sha2 0.10.8", +] + +[[package]] +name = "k256" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +dependencies = [ + "cfg-if", + "ecdsa 0.16.8", + "elliptic-curve 0.13.6", + "once_cell", + "sha2 0.10.8", + "signature 2.1.0", ] [[package]] @@ -1782,21 +1913,21 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "libm" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "lock_api" @@ -1829,25 +1960,11 @@ version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" dependencies = [ - "num-bigint 0.1.44", - "num-complex 0.1.43", + "num-bigint", + "num-complex", "num-integer", "num-iter", - "num-rational 0.1.42", - "num-traits", -] - -[[package]] -name = "num" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" -dependencies = [ - "num-bigint 0.4.3", - "num-complex 0.4.3", - "num-integer", - "num-iter", - "num-rational 0.4.1", + "num-rational", "num-traits", ] @@ -1863,17 +1980,6 @@ dependencies = [ "rustc-serialize", ] -[[package]] -name = "num-bigint" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-complex" version = "0.1.43" @@ -1884,15 +1990,6 @@ dependencies = [ "rustc-serialize", ] -[[package]] -name = "num-complex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" -dependencies = [ - "num-traits", -] - [[package]] name = "num-derive" version = "0.3.3" @@ -1931,29 +2028,17 @@ version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e" dependencies = [ - "num-bigint 0.1.44", + "num-bigint", "num-integer", "num-traits", "rustc-serialize", ] -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-bigint 0.4.3", - "num-integer", - "num-traits", -] - [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", "libm", @@ -1977,6 +2062,64 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "osmosis-std" +version = "0.17.0-rc0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b022b748710ecdf1adc6a124c3bef29f17ef05e7fa1260a08889d1d53f9cc5" +dependencies = [ + "chrono", + "cosmwasm-std", + "osmosis-std-derive 0.16.2", + "prost 0.11.9", + "prost-types", + "schemars", + "serde 1.0.188", + "serde-cw-value", +] + +[[package]] +name = "osmosis-std" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d7aa053bc3fad557ac90a0377688b400c395e2537f0f1de3293a15cad2e970" +dependencies = [ + "chrono", + "cosmwasm-std", + "osmosis-std-derive 0.20.1", + "prost 0.11.9", + "prost-types", + "schemars", + "serde 1.0.188", + "serde-cw-value", +] + +[[package]] +name = "osmosis-std-derive" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47f0b2f22adb341bb59e5a3a1b464dde033181954bd055b9ae86d6511ba465b" +dependencies = [ + "itertools 0.10.5", + "proc-macro2", + "prost-types", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "osmosis-std-derive" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5ebdfd1bc8ed04db596e110c6baa9b174b04f6ed1ec22c666ddc5cb3fa91bd7" +dependencies = [ + "itertools 0.10.5", + "proc-macro2", + "prost-types", + "quote", + "syn 1.0.109", +] + [[package]] name = "parking_lot" version = "0.12.1" @@ -2012,8 +2155,18 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" dependencies = [ - "der", - "spki", + "der 0.6.1", + "spki 0.6.0", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.8", + "spki 0.7.2", ] [[package]] @@ -2048,22 +2201,22 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" +checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" dependencies = [ "bit-set", - "bitflags 1.3.2", - "byteorder", + "bit-vec", + "bitflags 2.4.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -2139,6 +2292,26 @@ dependencies = [ "bytes", ] +[[package]] +name = "protobuf" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55bad9126f378a853655831eb7363b7b01b81d19f8cb1218861086ca4a1a61e" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror", +] + +[[package]] +name = "protobuf-support" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d4d7b8601c814cfb36bcebb79f0e61e45e1e93640cf778837833bbed05c372" +dependencies = [ + "thiserror", +] + [[package]] name = "pyo3" version = "0.18.3" @@ -2207,9 +2380,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -2330,9 +2503,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.29" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "rfc6979" @@ -2340,11 +2513,21 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" dependencies = [ - "crypto-bigint", + "crypto-bigint 0.4.9", "hmac", "zeroize", ] +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + [[package]] name = "rlp" version = "0.4.6" @@ -2368,11 +2551,11 @@ checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" [[package]] name = "rustix" -version = "0.38.6" +version = "0.38.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee020b1716f0a80e2ace9b03441a749e402e86712f15f16fe8a8f75afac732f" +checksum = "5a74ee2d7c2581cd139b42447d7d9389b889bdaad3a73f1ebb16f2a3237bb19c" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.0", "errno", "libc", "linux-raw-sys", @@ -2399,21 +2582,21 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" dependencies = [ "dyn-clone", "schemars_derive", - "serde 1.0.180", - "serde_json 1.0.104", + "serde 1.0.188", + "serde_json 1.0.107", ] [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" dependencies = [ "proc-macro2", "quote", @@ -2433,10 +2616,24 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ - "base16ct", - "der", + "base16ct 0.1.1", + "der 0.6.1", "generic-array", - "pkcs8", + "pkcs8 0.9.0", + "subtle", + "zeroize", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct 0.2.0", + "der 0.7.8", + "generic-array", + "pkcs8 0.10.2", "subtle", "zeroize", ] @@ -2458,9 +2655,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" @@ -2468,25 +2665,34 @@ version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c97b18e9e53de541f11e497357d6c5eaeb39f0cb9c8734e274abe4935f6991fa" dependencies = [ - "num 0.1.42", + "num", ] [[package]] name = "serde" -version = "1.0.180" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea67f183f058fe88a4e3ec6e2788e003840893b91bac4559cabedd00863b3ed" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-cw-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75d32da6b8ed758b7d850b6c3c08f1d7df51a4df3cb201296e63e34a78e99d4" +dependencies = [ + "serde 1.0.188", +] + [[package]] name = "serde-json-wasm" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16a62a1fad1e1828b24acac8f2b468971dade7b8c3c2e672bcadefefb1f8c137" dependencies = [ - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -2495,18 +2701,18 @@ version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" dependencies = [ - "serde 1.0.180", + "serde 1.0.188", ] [[package]] name = "serde_derive" -version = "1.0.180" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e744d7782b686ab3b73267ef05697159cc0e5abbed3f47f9933165e5219036" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -2526,19 +2732,19 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5aaee47e038bf9552d30380d3973fff2593ee0a76d81ad4c581f267cdcadf36" dependencies = [ - "num 0.1.42", + "num", "serde 0.6.15", ] [[package]] name = "serde_json" -version = "1.0.104" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", - "serde 1.0.180", + "serde 1.0.188", ] [[package]] @@ -2549,7 +2755,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -2567,9 +2773,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -2586,6 +2792,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "signature" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + [[package]] name = "sim" version = "0.1.0" @@ -2596,9 +2812,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" [[package]] name = "snafu" @@ -2628,7 +2844,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" dependencies = [ "base64ct", - "der", + "der 0.6.1", +] + +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +dependencies = [ + "base64ct", + "der 0.7.8", ] [[package]] @@ -2671,9 +2897,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.28" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -2688,9 +2914,9 @@ checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" [[package]] name = "tempfile" -version = "3.7.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if", "fastrand", @@ -2711,7 +2937,7 @@ dependencies = [ "num-traits", "prost 0.11.9", "prost-types", - "serde 1.0.180", + "serde 1.0.188", "serde_bytes", "subtle-encoding", "time", @@ -2736,7 +2962,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -2748,35 +2974,35 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", "test-case-core", ] [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] name = "time" -version = "0.3.25" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" +checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" dependencies = [ "deranged", "time-core", @@ -2785,15 +3011,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -2818,9 +3044,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uint" @@ -2854,9 +3080,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unindent" @@ -2875,7 +3101,7 @@ dependencies = [ "cw-storage-plus 0.11.1", "cw20 0.11.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -2888,7 +3114,7 @@ dependencies = [ "cw-storage-plus 0.11.1", "cw20 0.11.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", "valkyrie", ] @@ -2903,7 +3129,7 @@ dependencies = [ "cw20 0.11.1", "cw20-base 0.11.1", "schemars", - "serde 1.0.180", + "serde 1.0.188", "thiserror", ] @@ -2916,9 +3142,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "voting-escrow" version = "1.3.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -2931,9 +3157,9 @@ dependencies = [ [[package]] name = "voting-escrow-delegation" version = "1.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -2992,9 +3218,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -3007,45 +3233,45 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "zeroize" diff --git a/contracts/periphery/tokenfactory_tracker/.cargo/config b/contracts/periphery/tokenfactory_tracker/.cargo/config new file mode 100644 index 000000000..52fc65ffd --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/.cargo/config @@ -0,0 +1,6 @@ +[alias] +wasm = "build --release --target wasm32-unknown-unknown" +wasm-debug = "build --target wasm32-unknown-unknown" +unit-test = "test --lib" +integration-test = "test --test integration" +schema = "run --example tokenfactory_tracker_schema" diff --git a/contracts/periphery/tokenfactory_tracker/Cargo.toml b/contracts/periphery/tokenfactory_tracker/Cargo.toml new file mode 100644 index 000000000..166e445e0 --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "astroport-tokenfactory-tracker" +version = "1.0.0" +edition = "2021" + +[features] +library = [] + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +osmosis-std = "0.20.1" +cosmwasm-std = "1.1" +cosmwasm-schema = "1.1" +cw-storage-plus = "1.0" +thiserror = "1.0" +astroport = { path = "../../../packages/astroport", version = "3" } + +[dev-dependencies] +cw-multi-test = "0.16.4" +serde_json = "1.0.96" +anyhow = "1" +derivative = "2.2" +itertools = "0.10" diff --git a/contracts/periphery/tokenfactory_tracker/README.md b/contracts/periphery/tokenfactory_tracker/README.md new file mode 100644 index 000000000..54e1a5589 --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/README.md @@ -0,0 +1,158 @@ +# Astroport TokenFactory Tracker + +TODO: Add README + +Tracks balances of TokenFactory token holders using timestamps + +--- + +## InstantiateMsg + +Initializes the contract with the Astroport factory contract address. + +```json +{ + "astroport_factory": "wasm1..." +} +``` + +## ExecuteMsg + +### `receive` + +CW20 receive msg. Handles only withdraw messages which should come from Astroport LP tokens. + +```json +{ + "receive": { + "sender": "wasm...", + "amount": "123", + "msg": "" + } +} +``` + +where is a base64 encoded json string of the following format: + +```json +{ + "withdraw_liquidity": { + "pair_msg": { + "withdraw_liquidity": {} + }, + "min_assets_to_receive": [ + { + "info": { + "native_token": { + "denom": "uusd" + } + }, + "amount": "100000" + }, + { + "info": { + "token": { + "contract_addr": "wasm1...cw20address" + } + }, + "amount": "100000" + } + ] + } +} +``` + +`min_assets_to_receive` enforces after-withdraw check that the user receives at least the specified amount of assets. + +### `provide_liquidity` + +Provides liquidity through Liquidity Manager with slippage limit enforcement. Handles XYK pair imbalanced provide and +returns excess assets to the user. + +```json +{ + "provide_liquidity": { + "pair_addr": "wasm1...", + "pair_msg": { + "provide_liquidity": { + "assets": [ + { + "info": { + "native_token": { + "denom": "uusd" + } + }, + "amount": "100000" + }, + { + "info": { + "token": { + "contract_addr": "wasm1...cw20address" + } + }, + "amount": "100000" + } + ], + "slippage_tolerance": "0.02", + "auto_stake": true, + "receiver": "wasm1...addr" + } + }, + "min_lp_to_receive": "1000" + } +} +``` + +`pair_msg` is equal to original Astroport provide message for all pools. `min_lp_to_receive` enforces after-provide check that the user receives at least the specified amount of LP tokens. + +## QueryMsg + +### `simulate` + +Simulates liquidity provide or withdraw. + +Provide simulation example: + +```json +{ + "simulate_provide": { + "pair_addr": "wasm1...addr", + "pair_msg": { + "provide_liquidity": { + "assets": [ + { + "info": { + "native_token": { + "denom": "uusd" + } + }, + "amount": "100000" + }, + { + "info": { + "token": { + "contract_addr": "wasm1...cw20address" + } + }, + "amount": "100000" + } + ], + "slippage_tolerance": "0.02", + "auto_stake": true, + "receiver": "wasm1...addr" + } + } + } +} +``` + +Withdraw simulation example: + +```json +{ + "simulate_withdraw": { + "pair_addr": "wasm1...addr", + "lp_tokens": "1000" + } +} +``` diff --git a/contracts/periphery/tokenfactory_tracker/examples/tokenfactory_tracker_schema.rs b/contracts/periphery/tokenfactory_tracker/examples/tokenfactory_tracker_schema.rs new file mode 100644 index 000000000..37bab6273 --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/examples/tokenfactory_tracker_schema.rs @@ -0,0 +1,12 @@ +use cosmwasm_schema::write_api; + +use astroport::tokenfactory_tracker::{ExecuteMsg, InstantiateMsg, QueryMsg, SudoMsg}; + +fn main() { + write_api! { + instantiate: InstantiateMsg, + query: QueryMsg, + execute: ExecuteMsg, + sudo: SudoMsg, + } +} diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs new file mode 100644 index 000000000..cbedacbea --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -0,0 +1,86 @@ +use astroport::tokenfactory_tracker::{InstantiateMsg, SudoMsg}; +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, StdResult}; +use osmosis_std::types::cosmos::auth::v1beta1::AuthQuerier; + +use crate::error::ContractError; +use crate::state::{Config, BALANCES, CONFIG}; + +const CONTRACT_NAME: &str = "astroport-tokenfactory-tracker"; +const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + CONFIG.save( + deps.storage, + &Config { + // Temporary save the module address until we can fetch on init + tokenfactory_module_address: msg.tokenfactory_module_address, + tracked_denom: msg.tracked_denom, + }, + )?; + + // TODO: We need to get the module account for TokenFactory so we don't try and + // subtract from it when minting to an account + let accounts = AuthQuerier::new(&deps.querier).module_accounts()?; + // cosmos.auth.v1beta1.ModuleAccount + + Ok(Response::default() + .add_attribute("action", "instantiate") + .add_attribute("contract", CONTRACT_NAME) + .add_attribute("accounts", format!("{:?}", accounts.accounts))) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result { + match msg { + // BlockBeforeSend is called before a send - if an error is returned the send + // is cancelled + // TODO: Check if gas is charged for this, I suspect it might not according to the SDK code + SudoMsg::BlockBeforeSend { .. } => Ok(Response::default()), + // TrackBeforeSend is called before a send - if an error is returned it will + // be ignored and the send will continue + // Minting a token directly to an address is also tracked + // TODO: Check if gas is charged for this, I think gas is charged for this + SudoMsg::TrackBeforeSend { from, to, amount } => { + let config = CONFIG.load(deps.storage)?; + + // Temporary checks + // If the token is minted directly to an address, we don't need to subtract + if config.tokenfactory_module_address != from { + BALANCES.update( + deps.storage, + &from, + env.block.time.seconds(), + |balance| -> StdResult<_> { + Ok(balance.unwrap_or_default().checked_sub(amount.amount)?) + }, + )?; + } + + // Temporary checks + // TODO: Check if burn follows this path + if config.tokenfactory_module_address != to { + BALANCES.update( + deps.storage, + &to, + env.block.time.seconds(), + |balance| -> StdResult<_> { + Ok(balance.unwrap_or_default().checked_add(amount.amount)?) + }, + )?; + } + + // TODO: Update total supply + + // Sudo calls don't emit the attributes, so we need to emit them here + Ok(Response::default()) + } + } +} diff --git a/contracts/periphery/tokenfactory_tracker/src/error.rs b/contracts/periphery/tokenfactory_tracker/src/error.rs new file mode 100644 index 000000000..fd96094a7 --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/src/error.rs @@ -0,0 +1,12 @@ +use cosmwasm_std::StdError; + +use thiserror::Error; + +#[derive(Error, Debug, PartialEq)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("Invalid reply data")] + InvalidReplyData {}, +} diff --git a/contracts/periphery/tokenfactory_tracker/src/lib.rs b/contracts/periphery/tokenfactory_tracker/src/lib.rs new file mode 100644 index 000000000..326d47202 --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/src/lib.rs @@ -0,0 +1,4 @@ +pub mod contract; +pub mod error; +pub mod query; +pub mod state; diff --git a/contracts/periphery/tokenfactory_tracker/src/query.rs b/contracts/periphery/tokenfactory_tracker/src/query.rs new file mode 100644 index 000000000..fea81d4f2 --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/src/query.rs @@ -0,0 +1,38 @@ +use astroport::tokenfactory_tracker::QueryMsg; +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{to_binary, Binary, Deps, Env, StdError, StdResult, Uint128, Uint64}; + +use crate::{error::ContractError, state::BALANCES}; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::BalanceAt { address, timestamp } => balance_at(deps, env, address, timestamp), + QueryMsg::TotalSupplyAt { timestamp } => total_supply_at(deps, env, timestamp), + } +} + +fn balance_at(deps: Deps, env: Env, address: String, timestamp: Uint64) -> StdResult { + let balance = BALANCES + .may_load_at_height(deps.storage, &address, timestamp.u64())? + .unwrap_or_default(); + to_binary(&balance) +} + +fn total_supply_at(deps: Deps, env: Env, timestamp: Uint64) -> StdResult { + let amount = Uint128::one(); + to_binary(&amount) +} + +#[cfg(test)] +mod tests { + use std::str::FromStr; + + use cosmwasm_std::{Addr, Decimal}; + + use super::*; + + #[test] + fn query_amount() {} +} diff --git a/contracts/periphery/tokenfactory_tracker/src/state.rs b/contracts/periphery/tokenfactory_tracker/src/state.rs new file mode 100644 index 000000000..e262ede38 --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/src/state.rs @@ -0,0 +1,62 @@ +use cosmwasm_schema::cw_serde; +use cosmwasm_std::{Addr, Env, Order, StdResult, Storage, Uint128, Uint64}; +use cw_storage_plus::Item; +use cw_storage_plus::{Bound, Map, SnapshotMap, Strategy}; + +#[cw_serde] +pub struct Config { + pub tokenfactory_module_address: String, + pub tracked_denom: String, +} + +pub const CONFIG: Item = Item::new("config"); + +/// Contains snapshotted balances at every block. +pub const BALANCES: SnapshotMap<&String, Uint128> = SnapshotMap::new( + "balance", + "balance__checkpoints", + "balance__changelog", + Strategy::EveryBlock, +); + +/// Contains the history of the xASTRO total supply. +pub const TOTAL_SUPPLY_HISTORY: Map = Map::new("total_supply_history"); + +// /// Snapshots the total token supply at current timestamp. +// /// +// /// * **total_supply** current token total supply. +// pub fn capture_total_supply_history( +// storage: &mut dyn Storage, +// env: &Env, +// total_supply: Uint128, +// ) -> StdResult<()> { +// TOTAL_SUPPLY_HISTORY.save(storage, env.block.time.seconds(), &total_supply) +// } + +// /// Returns the total token supply at the given timestamp. +// pub fn get_total_supply_at(storage: &dyn Storage, timestamp: Uint64) -> StdResult { +// // Look for the last value recorded before the current timestamp (if none then value is zero) +// let end = Bound::inclusive(timestamp); +// let last_value_up_to_second = TOTAL_SUPPLY_HISTORY +// .range(storage, None, Some(end), Order::Descending) +// .next(); + +// if let Some(value) = last_value_up_to_second { +// let (_, v) = value?; +// return Ok(v); +// } + +// Ok(Uint128::zero()) +// } + +// /// Checks that the sender is the minter. This is to authorise minting and burning of tokens +// pub fn check_sender_is_minter(sender: &Addr, config: &TokenInfo) -> Result<(), ContractError> { +// if let Some(ref mint_data) = config.mint { +// if mint_data.minter != sender { +// return Err(ContractError::Unauthorized {}); +// } +// } else { +// return Err(ContractError::Unauthorized {}); +// } +// Ok(()) +// } diff --git a/contracts/periphery/tokenfactory_tracker/tests/helper.rs b/contracts/periphery/tokenfactory_tracker/tests/helper.rs new file mode 100644 index 000000000..7a2c3ee53 --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/tests/helper.rs @@ -0,0 +1,771 @@ +#![allow(dead_code)] +#![cfg(not(tarpaulin_include))] + +use std::collections::HashMap; +use std::error::Error; +use std::fmt::Display; +use std::str::FromStr; + +use anyhow::Result as AnyResult; +use cosmwasm_schema::serde::de::DeserializeOwned; +use cosmwasm_std::{ + coin, from_slice, to_binary, Addr, Coin, Decimal, Empty, StdError, StdResult, Uint128, +}; +use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg}; +use cw_multi_test::{App, AppResponse, Contract, ContractWrapper, Executor}; +use derivative::Derivative; +use itertools::Itertools; + +use astroport::asset::{native_asset_info, token_asset_info, Asset, AssetInfo, PairInfo}; +use astroport::factory::{PairConfig, PairType}; +use astroport::liquidity_manager::{Cw20HookMsg, ExecuteMsg}; +use astroport::liquidity_manager::{InstantiateMsg, QueryMsg}; +use astroport::pair::{Cw20HookMsg as PairCw20HookMsg, ExecuteMsg as PairExecuteMsg}; +use astroport::pair::{ + ReverseSimulationResponse, SimulationResponse, StablePoolParams, XYKPoolParams, +}; +use astroport::pair_concentrated::{ConcentratedPoolParams, QueryMsg as PairQueryMsg}; +use astroport::{factory, generator}; +use astroport_liquidity_manager::contract::{execute, instantiate, reply}; +use astroport_liquidity_manager::query::query; + +const NATIVE_TOKEN_PRECISION: u8 = 6; + +const INIT_BALANCE: u128 = 1_000_000_000_000; + +pub enum PoolParams { + Constant(XYKPoolParams), + Stable(StablePoolParams), + Concentrated(ConcentratedPoolParams), +} + +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +pub enum TestCoin { + Cw20(String), + Cw20Precise(String, u8), + Native(String), +} + +impl TestCoin { + pub fn denom(&self) -> Option { + match self { + TestCoin::Native(denom) => Some(denom.clone()), + _ => None, + } + } + + pub fn cw20_init_data(&self) -> Option<(String, u8)> { + match self { + TestCoin::Cw20(name) => Some((name.clone(), 6u8)), + TestCoin::Cw20Precise(name, precision) => Some((name.clone(), *precision)), + _ => None, + } + } + + pub fn native(denom: &str) -> Self { + Self::Native(denom.to_string()) + } + + pub fn cw20(name: &str) -> Self { + Self::Cw20(name.to_string()) + } + + pub fn cw20precise(name: &str, precision: u8) -> Self { + Self::Cw20Precise(name.to_string(), precision) + } +} + +pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { + let mut test_coins: Vec = test_coins + .iter() + .filter_map(|test_coin| match test_coin { + TestCoin::Native(name) => { + let init_balance = INIT_BALANCE * 10u128.pow(NATIVE_TOKEN_PRECISION as u32); + Some(coin(init_balance, name)) + } + _ => None, + }) + .collect(); + test_coins.push(coin(INIT_BALANCE, "random-coin")); + + test_coins +} + +fn token_contract() -> Box> { + Box::new(ContractWrapper::new_with_empty( + astroport_token::contract::execute, + astroport_token::contract::instantiate, + astroport_token::contract::query, + )) +} + +fn xyk_pair_contract() -> Box> { + Box::new( + ContractWrapper::new_with_empty( + astroport_pair::contract::execute, + astroport_pair::contract::instantiate, + astroport_pair::contract::query, + ) + .with_reply_empty(astroport_pair::contract::reply), + ) +} + +fn stable_pair_contract() -> Box> { + Box::new( + ContractWrapper::new_with_empty( + astroport_pair_stable::contract::execute, + astroport_pair_stable::contract::instantiate, + astroport_pair_stable::contract::query, + ) + .with_reply_empty(astroport_pair_stable::contract::reply), + ) +} + +fn coin_registry_contract() -> Box> { + Box::new(ContractWrapper::new_with_empty( + astroport_native_coin_registry::contract::execute, + astroport_native_coin_registry::contract::instantiate, + astroport_native_coin_registry::contract::query, + )) +} + +fn factory_contract() -> Box> { + Box::new( + ContractWrapper::new_with_empty( + astroport_factory::contract::execute, + astroport_factory::contract::instantiate, + astroport_factory::contract::query, + ) + .with_reply_empty(astroport_factory::contract::reply), + ) +} + +fn whitelist_contract() -> Box> { + Box::new(ContractWrapper::new_with_empty( + astroport_whitelist::contract::execute, + astroport_whitelist::contract::instantiate, + astroport_whitelist::contract::query, + )) +} + +fn generator_contract() -> Box> { + Box::new( + ContractWrapper::new_with_empty( + astroport_generator::contract::execute, + astroport_generator::contract::instantiate, + astroport_generator::contract::query, + ) + .with_reply_empty(astroport_generator::contract::reply), + ) +} + +fn manager_contract() -> Box> { + Box::new(ContractWrapper::new_with_empty(execute, instantiate, query).with_reply_empty(reply)) +} + +#[derive(Derivative)] +#[derivative(Debug)] +pub struct Helper { + #[derivative(Debug = "ignore")] + pub app: App, + pub owner: Addr, + pub assets: HashMap, + pub factory: Addr, + pub pair_addr: Addr, + pub lp_token: Addr, + pub fake_maker: Addr, + pub liquidity_manager: Addr, + pub generator: Addr, +} + +impl Helper { + pub fn new(owner: &Addr, test_coins: Vec, params: PoolParams) -> AnyResult { + let mut app = App::new(|router, _, storage| { + router + .bank + .init_balance(storage, owner, init_native_coins(&test_coins)) + .unwrap() + }); + + let mut asset_infos_vec: Vec<_> = test_coins + .clone() + .into_iter() + .filter_map(|coin| Some((coin.clone(), native_asset_info(coin.denom()?)))) + .collect(); + + let token_code_id = app.store_code(token_contract()); + + test_coins.into_iter().for_each(|coin| { + if let Some((name, decimals)) = coin.cw20_init_data() { + let token_addr = Self::init_token(&mut app, token_code_id, name, decimals, owner); + asset_infos_vec.push((coin, token_asset_info(token_addr))) + } + }); + + let factory_code_id = app.store_code(factory_contract()); + + let (pair_code_id, pair_type, inner_params); + match ¶ms { + PoolParams::Constant(inner) => { + pair_code_id = app.store_code(xyk_pair_contract()); + pair_type = PairType::Xyk {}; + inner_params = to_binary(inner).unwrap(); + } + PoolParams::Stable(inner) => { + pair_code_id = app.store_code(stable_pair_contract()); + pair_type = PairType::Stable {}; + inner_params = to_binary(inner).unwrap(); + } + PoolParams::Concentrated(_) => { + unimplemented!("Concentrated pool is not supported yet"); + // pair_code_id = app.store_code(pcl_pair_contract()); + // pair_type = PairType::Custom("concentrated".to_owned()); + // inner_params = to_binary(inner).unwrap(); + } + } + + let fake_maker = Addr::unchecked("fake_maker"); + + let coin_registry_id = app.store_code(coin_registry_contract()); + + let coin_registry_address = app + .instantiate_contract( + coin_registry_id, + owner.clone(), + &astroport::native_coin_registry::InstantiateMsg { + owner: owner.to_string(), + }, + &[], + "Coin registry", + None, + ) + .unwrap(); + + app.execute_contract( + owner.clone(), + coin_registry_address.clone(), + &astroport::native_coin_registry::ExecuteMsg::Add { + native_coins: vec![("uluna".to_owned(), 6), ("uusd".to_owned(), 6)], + }, + &[], + ) + .unwrap(); + let init_msg = astroport::factory::InstantiateMsg { + fee_address: Some(fake_maker.to_string()), + pair_configs: vec![PairConfig { + code_id: pair_code_id, + maker_fee_bps: 5000, + total_fee_bps: 30, + pair_type: pair_type.clone(), + is_disabled: false, + is_generator_disabled: false, + }], + token_code_id, + generator_address: None, + owner: owner.to_string(), + whitelist_code_id: 234u64, + coin_registry_address: coin_registry_address.to_string(), + }; + + let factory = app.instantiate_contract( + factory_code_id, + owner.clone(), + &init_msg, + &[], + "FACTORY", + None, + )?; + + let whitelist_code_id = app.store_code(whitelist_contract()); + let generator_code_id = app.store_code(generator_contract()); + let generator = app + .instantiate_contract( + generator_code_id, + owner.clone(), + &generator::InstantiateMsg { + owner: owner.to_string(), + factory: factory.to_string(), + generator_controller: None, + voting_escrow_delegation: None, + voting_escrow: None, + guardian: None, + astro_token: native_asset_info("astro".to_string()), + tokens_per_block: Default::default(), + start_block: Default::default(), + vesting_contract: "vesting".to_string(), + whitelist_code_id, + }, + &[], + "Generator", + None, + ) + .unwrap(); + + app.execute_contract( + owner.clone(), + factory.clone(), + &factory::ExecuteMsg::UpdateConfig { + token_code_id: None, + fee_address: None, + generator_address: Some(generator.to_string()), + whitelist_code_id: None, + coin_registry_address: None, + }, + &[], + ) + .unwrap(); + + let manager_code = app.store_code(manager_contract()); + let liquidity_manager = app + .instantiate_contract( + manager_code, + owner.clone(), + &InstantiateMsg { + astroport_factory: factory.to_string(), + }, + &[], + "Liquidity manager", + None, + ) + .unwrap(); + + let asset_infos = asset_infos_vec + .clone() + .into_iter() + .map(|(_, asset_info)| asset_info) + .collect_vec(); + let init_pair_msg = astroport::factory::ExecuteMsg::CreatePair { + pair_type, + asset_infos: asset_infos.clone(), + init_params: Some(inner_params), + }; + + app.execute_contract(owner.clone(), factory.clone(), &init_pair_msg, &[])?; + + let resp: PairInfo = app.wrap().query_wasm_smart( + &factory, + &astroport::factory::QueryMsg::Pair { asset_infos }, + )?; + + Ok(Self { + app, + owner: owner.clone(), + assets: asset_infos_vec.into_iter().collect(), + factory, + pair_addr: resp.contract_addr, + lp_token: resp.liquidity_token, + fake_maker, + liquidity_manager, + generator, + }) + } + + pub fn simulate_provide( + &self, + slippage_tolerance: Option, + assets: &[Asset], + ) -> AnyResult { + let pair_msg = PairExecuteMsg::ProvideLiquidity { + assets: assets.to_vec(), + slippage_tolerance, + auto_stake: None, + receiver: None, + }; + + self.app + .wrap() + .query_wasm_smart( + &self.liquidity_manager, + &QueryMsg::SimulateProvide { + pair_addr: self.pair_addr.to_string(), + pair_msg, + }, + ) + .map_err(Into::into) + } + + pub fn simulate_withdraw(&self, lp_tokens_amount: impl Into) -> AnyResult> { + self.app + .wrap() + .query_wasm_smart( + &self.liquidity_manager, + &QueryMsg::SimulateWithdraw { + pair_addr: self.pair_addr.to_string(), + lp_tokens: lp_tokens_amount.into(), + }, + ) + .map_err(Into::into) + } + + /// If min_lp_receive is Some provide is done via liquidity manager contract. + pub fn provide_liquidity( + &mut self, + sender: &Addr, + assets: &[Asset], + min_lp_receive: Option, + ) -> AnyResult { + self.provide_liquidity_with_slip_tolerance( + sender, + assets, + Some(f64_to_dec(0.5)), + min_lp_receive, + false, + None, + ) + } + + /// If min_lp_receive is Some provide is done via liquidity manager contract. + pub fn provide_liquidity_with_slip_tolerance( + &mut self, + sender: &Addr, + assets: &[Asset], + slippage_tolerance: Option, + min_lp_receive: Option, + auto_stake: bool, + receiver: Option, + ) -> AnyResult { + let msg = PairExecuteMsg::ProvideLiquidity { + assets: assets.to_vec(), + slippage_tolerance, + auto_stake: Some(auto_stake), + receiver, + }; + + if min_lp_receive.is_some() { + let funds = assets.mock_coins_sent( + &mut self.app, + sender, + &self.liquidity_manager, + SendType::Allowance, + ); + + let manager_msg = ExecuteMsg::ProvideLiquidity { + pair_addr: self.pair_addr.to_string(), + pair_msg: msg, + min_lp_to_receive: min_lp_receive, + }; + self.app.execute_contract( + sender.clone(), + self.liquidity_manager.clone(), + &manager_msg, + &funds, + ) + } else { + let funds = + assets.mock_coins_sent(&mut self.app, sender, &self.pair_addr, SendType::Allowance); + self.app + .execute_contract(sender.clone(), self.pair_addr.clone(), &msg, &funds) + } + } + + pub fn withdraw_liquidity( + &mut self, + sender: &Addr, + amount: u128, + min_assets: Option>, + ) -> AnyResult { + let pair_msg = PairCw20HookMsg::WithdrawLiquidity { assets: vec![] }; + let (contract, msg); + if let Some(min_assets_to_receive) = min_assets { + contract = self.liquidity_manager.to_string(); + msg = to_binary(&Cw20HookMsg::WithdrawLiquidity { + pair_msg, + min_assets_to_receive, + }) + .unwrap(); + } else { + contract = self.pair_addr.to_string(); + msg = to_binary(&pair_msg).unwrap(); + } + + let msg = Cw20ExecuteMsg::Send { + contract, + amount: Uint128::from(amount), + msg, + }; + + self.app + .execute_contract(sender.clone(), self.lp_token.clone(), &msg, &[]) + } + + pub fn swap( + &mut self, + sender: &Addr, + offer_asset: &Asset, + max_spread: Option, + ) -> AnyResult { + match &offer_asset.info { + AssetInfo::Token { contract_addr } => { + let msg = Cw20ExecuteMsg::Send { + contract: self.pair_addr.to_string(), + amount: offer_asset.amount, + msg: to_binary(&PairCw20HookMsg::Swap { + ask_asset_info: None, + belief_price: None, + max_spread, + to: None, + }) + .unwrap(), + }; + + self.app + .execute_contract(sender.clone(), contract_addr.clone(), &msg, &[]) + } + AssetInfo::NativeToken { .. } => { + let funds = offer_asset.mock_coin_sent( + &mut self.app, + sender, + &self.pair_addr, + SendType::None, + ); + + let msg = PairExecuteMsg::Swap { + offer_asset: offer_asset.clone(), + ask_asset_info: None, + belief_price: None, + max_spread, + to: None, + }; + + self.app + .execute_contract(sender.clone(), self.pair_addr.clone(), &msg, &funds) + } + } + } + + pub fn simulate_swap( + &self, + offer_asset: &Asset, + ask_asset_info: Option, + ) -> StdResult { + self.app.wrap().query_wasm_smart( + &self.pair_addr, + &PairQueryMsg::Simulation { + offer_asset: offer_asset.clone(), + ask_asset_info, + }, + ) + } + + pub fn simulate_reverse_swap( + &self, + ask_asset: &Asset, + offer_asset_info: Option, + ) -> StdResult { + self.app.wrap().query_wasm_smart( + &self.pair_addr, + &PairQueryMsg::ReverseSimulation { + ask_asset: ask_asset.clone(), + offer_asset_info, + }, + ) + } + + fn init_token( + app: &mut App, + token_code: u64, + name: String, + decimals: u8, + owner: &Addr, + ) -> Addr { + let init_balance = INIT_BALANCE * 10u128.pow(decimals as u32); + app.instantiate_contract( + token_code, + owner.clone(), + &astroport::token::InstantiateMsg { + symbol: name.to_string(), + name, + decimals, + initial_balances: vec![Cw20Coin { + address: owner.to_string(), + amount: Uint128::from(init_balance), + }], + mint: None, + marketing: None, + }, + &[], + "{name}_token", + None, + ) + .unwrap() + } + + pub fn token_balance(&self, token_addr: &Addr, user: &Addr) -> u128 { + let resp: BalanceResponse = self + .app + .wrap() + .query_wasm_smart( + token_addr, + &Cw20QueryMsg::Balance { + address: user.to_string(), + }, + ) + .unwrap(); + + resp.balance.u128() + } + + pub fn coin_balance(&self, coin: &TestCoin, user: &Addr) -> u128 { + match &self.assets[coin] { + AssetInfo::Token { contract_addr } => self.token_balance(contract_addr, user), + AssetInfo::NativeToken { denom } => self + .app + .wrap() + .query_balance(user, denom) + .unwrap() + .amount + .u128(), + } + } + + pub fn give_me_money(&mut self, assets: &[Asset], recipient: &Addr) { + let funds = + assets.mock_coins_sent(&mut self.app, &self.owner, recipient, SendType::Transfer); + + if !funds.is_empty() { + self.app + .send_tokens(self.owner.clone(), recipient.clone(), &funds) + .unwrap(); + } + } + + pub fn query_config(&self) -> StdResult + where + T: DeserializeOwned, + { + let binary = self + .app + .wrap() + .query_wasm_raw(&self.pair_addr, b"config")? + .ok_or_else(|| StdError::generic_err("Failed to find config in storage"))?; + from_slice(&binary) + } + + pub fn query_asset_balance_at( + &self, + asset_info: &AssetInfo, + block_height: u64, + ) -> StdResult> { + self.app.wrap().query_wasm_smart( + &self.pair_addr, + &PairQueryMsg::AssetBalanceAt { + asset_info: asset_info.clone(), + block_height: block_height.into(), + }, + ) + } + + pub fn query_staked_lp(&self, user: &Addr) -> StdResult { + self.app.wrap().query_wasm_smart( + &self.generator, + &generator::QueryMsg::Deposit { + lp_token: self.lp_token.to_string(), + user: user.to_string(), + }, + ) + } +} + +#[derive(Clone, Copy)] +pub enum SendType { + Allowance, + Transfer, + None, +} + +pub trait AssetExt { + fn mock_coin_sent( + &self, + app: &mut App, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec; +} + +impl AssetExt for Asset { + fn mock_coin_sent( + &self, + app: &mut App, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec { + let mut funds = vec![]; + match &self.info { + AssetInfo::Token { contract_addr } if !self.amount.is_zero() => { + let msg = match typ { + SendType::Allowance => Cw20ExecuteMsg::IncreaseAllowance { + spender: spender.to_string(), + amount: self.amount, + expires: None, + }, + SendType::Transfer => Cw20ExecuteMsg::Transfer { + recipient: spender.to_string(), + amount: self.amount, + }, + _ => unimplemented!(), + }; + app.execute_contract(user.clone(), contract_addr.clone(), &msg, &[]) + .unwrap(); + } + AssetInfo::NativeToken { denom } if !self.amount.is_zero() => { + funds = vec![coin(self.amount.u128(), denom)]; + } + _ => {} + } + + funds + } +} + +pub trait AssetsExt { + fn mock_coins_sent( + &self, + app: &mut App, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec; +} + +impl AssetsExt for &[Asset] { + fn mock_coins_sent( + &self, + app: &mut App, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec { + let mut funds = vec![]; + for asset in self.iter() { + funds.extend(asset.mock_coin_sent(app, user, spender, typ)); + } + funds + } +} + +pub trait AppExtension { + fn next_block(&mut self, time: u64); +} + +impl AppExtension for App { + fn next_block(&mut self, time: u64) { + self.update_block(|block| { + block.time = block.time.plus_seconds(time); + block.height += 1 + }); + } +} + +pub fn f64_to_dec(val: f64) -> T +where + T: FromStr, + T::Err: Error, +{ + T::from_str(&val.to_string()).unwrap() +} + +pub fn dec_to_f64(val: impl Display) -> f64 { + f64::from_str(&val.to_string()).unwrap() +} diff --git a/contracts/periphery/tokenfactory_tracker/tests/liquidity_manager_integration.rs b/contracts/periphery/tokenfactory_tracker/tests/liquidity_manager_integration.rs new file mode 100644 index 000000000..0a542958d --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/tests/liquidity_manager_integration.rs @@ -0,0 +1,8 @@ +#![cfg(not(tarpaulin_include))] + +use cosmwasm_std::{Addr, Uint128}; + +mod helper; + +#[test] +fn test_tracking() {} diff --git a/contracts/periphery/tokenfactory_tracker/tests/unit.rs b/contracts/periphery/tokenfactory_tracker/tests/unit.rs new file mode 100644 index 000000000..0471521c1 --- /dev/null +++ b/contracts/periphery/tokenfactory_tracker/tests/unit.rs @@ -0,0 +1,10 @@ +#![cfg(not(tarpaulin_include))] +use cosmwasm_std::testing::{mock_dependencies, mock_env}; +use cosmwasm_std::{Reply, SubMsgResponse, SubMsgResult}; + +use astroport_liquidity_manager::contract::reply; +use astroport_liquidity_manager::error::ContractError; +use astroport_liquidity_manager::state::{ActionParams, ReplyData, REPLY_DATA}; + +#[test] +fn test_tracking() {} diff --git a/packages/astroport/src/tokenfactory_tracker.rs b/packages/astroport/src/tokenfactory_tracker.rs new file mode 100644 index 000000000..04cac7a14 --- /dev/null +++ b/packages/astroport/src/tokenfactory_tracker.rs @@ -0,0 +1,34 @@ +use cosmwasm_schema::{cw_serde, QueryResponses}; +use cosmwasm_std::{Addr, Coin, Uint128, Uint64}; + +#[cw_serde] +pub struct InstantiateMsg { + pub tracked_denom: String, + pub tokenfactory_module_address: String, +} + +#[cw_serde] +pub enum ExecuteMsg {} + +#[cw_serde] +pub enum SudoMsg { + BlockBeforeSend { + from: String, + to: String, + amount: Coin, + }, + TrackBeforeSend { + from: String, + to: String, + amount: Coin, + }, +} + +#[cw_serde] +#[derive(QueryResponses)] +pub enum QueryMsg { + #[returns(Uint128)] + BalanceAt { address: String, timestamp: Uint64 }, + #[returns(Uint128)] + TotalSupplyAt { timestamp: Uint64 }, +} From 4d10f7dde3937d4d7a30c292c5639959dbd5f6da Mon Sep 17 00:00:00 2001 From: Donovan Solms <4567303+donovansolms@users.noreply.github.com> Date: Fri, 27 Oct 2023 14:02:17 +0200 Subject: [PATCH 04/84] feat(staking): Add neutron-sdk based TokenFactory version --- contracts/tokenomics/staking/Cargo.toml | 10 +- contracts/tokenomics/staking/src/contract.rs | 98 +- contracts/tokenomics/staking/src/state.rs | 1 - .../tokenomics/staking/tests/common/helper.rs | 409 ++++ .../tokenomics/staking/tests/common/mod.rs | 2 + .../staking/tests/common/neutron_ext.rs | 122 ++ .../tokenomics/staking/tests/integration.rs | 1751 +++++++++-------- packages/astroport/src/lib.rs | 1 + 8 files changed, 1512 insertions(+), 882 deletions(-) create mode 100644 contracts/tokenomics/staking/tests/common/helper.rs create mode 100644 contracts/tokenomics/staking/tests/common/mod.rs create mode 100644 contracts/tokenomics/staking/tests/common/neutron_ext.rs diff --git a/contracts/tokenomics/staking/Cargo.toml b/contracts/tokenomics/staking/Cargo.toml index 5cc3f4894..ce3364afc 100644 --- a/contracts/tokenomics/staking/Cargo.toml +++ b/contracts/tokenomics/staking/Cargo.toml @@ -29,9 +29,15 @@ astroport = { path = "../../../packages/astroport", version = "3" } protobuf = "=3.2.0" cosmwasm-schema = { version = "1.1" } cw-utils = "1.0.1" -neutron-sdk = "0.6" +osmosis-std = "0.17.0-rc0" [dev-dependencies] astroport-token = { path = "../../token" } astroport-xastro-token = { path = "../../tokenomics/xastro_token" } -cw-multi-test = "0.15" +anyhow = "1" +derivative = "2" +itertools = "0.11" +# cw-multi-test = "0.15" +cw-multi-test = { git = "https://github.com/astroport-fi/cw-multi-test", branch = "astroport_cozy_fork", features = [ + "stargate", +] } diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index 3715bb79b..b38d8a853 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -1,10 +1,8 @@ use cosmwasm_std::{ - attr, coin, entry_point, to_binary, BankMsg, Binary, Deps, DepsMut, Env, MessageInfo, Reply, - ReplyOn, Response, StdResult, SubMsg, Uint128, + attr, coin, entry_point, to_binary, BankMsg, Binary, CosmosMsg, Deps, DepsMut, Env, + MessageInfo, Reply, ReplyOn, Response, StdResult, SubMsg, Uint128, }; -use neutron_sdk::bindings::msg::NeutronMsg; -use neutron_sdk::bindings::query::NeutronQuery; -use neutron_sdk::query::token_factory::query_full_denom; +use osmosis_std::types::osmosis::tokenfactory::v1beta1::{MsgBurn, MsgCreateDenom, MsgMint}; use crate::error::ContractError; use crate::state::{Config, CONFIG}; @@ -36,10 +34,10 @@ pub(crate) const MINIMUM_STAKE_AMOUNT: Uint128 = Uint128::new(1_000); #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( deps: DepsMut, - _env: Env, + env: Env, _info: MessageInfo, msg: InstantiateMsg, -) -> StdResult> { +) -> StdResult { set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; // TODO: Validate that deposit_token_denom exists on chain @@ -57,10 +55,11 @@ pub fn instantiate( // TODO: After creating the TokenFactory token, also set the tracking contract // we need a Neutron upgrade to enable that - let sub_msg: SubMsg = SubMsg { + let sub_msg = SubMsg { id: INSTANTIATE_DENOM_REPLY_ID, - msg: NeutronMsg::CreateDenom { - subdenom: TOKEN_SYMBOL.to_string(), + msg: MsgCreateDenom { + sender: env.contract.address.to_string(), + subdenom: TOKEN_SYMBOL.to_owned(), } .into(), gas_limit: None, @@ -81,7 +80,7 @@ pub fn execute( env: Env, info: MessageInfo, msg: ExecuteMsg, -) -> Result, ContractError> { +) -> Result { match msg { ExecuteMsg::Enter {} => execute_enter(deps, env, info), ExecuteMsg::Leave {} => execute_leave(deps, env, info), @@ -90,21 +89,16 @@ pub fn execute( /// The entry point to the contract for processing replies from submessages. #[cfg_attr(not(feature = "library"), entry_point)] -pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result { +pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result { match msg.id { INSTANTIATE_DENOM_REPLY_ID => { - // Query the chain to get the final xASTRO denom - // Neutron does not respond with the created denom in the reply - // so msg.result.try_into()? has no value - let denom_response = query_full_denom( - deps.as_ref(), - env.contract.address, - TOKEN_SYMBOL.to_string(), - ) - .map_err(|_| ContractError::FailedToCreateDenom {})?; + // TODO: Once Neutron implements the same flow as Osmosis, we'll + // be able to get the created denom from the reply data + // For now, we reconstruct the denom from the contract address + let created_denom = format!("factory/{}/{}", env.contract.address, TOKEN_SYMBOL); let mut config = CONFIG.load(deps.storage)?; - config.xastro_denom = denom_response.denom; + config.xastro_denom = created_denom; CONFIG.save(deps.storage, &config)?; Ok(Response::new().add_attribute("xastro_denom", config.xastro_denom)) @@ -114,11 +108,7 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result Result, ContractError> { +fn execute_enter(deps: DepsMut, env: Env, info: MessageInfo) -> Result { let config = CONFIG.load(deps.storage)?; // Ensure that the correct token is sent. This will fail if @@ -139,7 +129,7 @@ fn execute_enter( .query_supply(config.xastro_denom.clone())? .amount; - let mut messages = vec![]; + let mut messages: Vec = vec![]; let mint_amount: Uint128 = if total_shares.is_zero() || total_deposit.is_zero() { amount = amount @@ -153,11 +143,14 @@ fn execute_enter( } // Mint the xASTRO tokens to ourselves if this is the first stake - messages.push(NeutronMsg::MintTokens { - denom: config.xastro_denom.clone(), - amount: MINIMUM_STAKE_AMOUNT, - mint_to_address: env.contract.address.to_string(), - }); + messages.push( + MsgMint { + sender: env.contract.address.to_string(), + amount: Some(coin(MINIMUM_STAKE_AMOUNT.u128(), config.xastro_denom.clone()).into()), + mint_to_address: env.contract.address.to_string(), + } + .into(), + ); amount } else { @@ -172,12 +165,27 @@ fn execute_enter( amount }; + let minted_coins = coin(mint_amount.u128(), config.xastro_denom); + // Mint new xASTRO tokens to the sender - messages.push(NeutronMsg::MintTokens { - denom: config.xastro_denom, - amount: mint_amount, - mint_to_address: recipient.to_string(), - }); + messages.push( + MsgMint { + sender: env.contract.address.to_string(), + amount: Some(minted_coins.clone().into()), + mint_to_address: env.contract.address.to_string(), + } + .into(), + ); + + // TokenFactory minting only allows minting to the sender for now, thus we + // need to send the minted tokens to the recipient + messages.push( + BankMsg::Send { + to_address: recipient.to_string(), + amount: vec![minted_coins], + } + .into(), + ); // Set the data to be returned in set_data to easy integration with // other contracts @@ -199,11 +207,7 @@ fn execute_enter( /// Leave unstakes TokenFactory xASTRO for ASTRO. xASTRO is burned and ASTRO /// returned to the sender -fn execute_leave( - deps: DepsMut, - env: Env, - info: MessageInfo, -) -> Result, ContractError> { +fn execute_leave(deps: DepsMut, env: Env, info: MessageInfo) -> Result { let config = CONFIG.load(deps.storage)?; // Ensure that the correct token is sent. This will fail if @@ -216,7 +220,7 @@ fn execute_leave( // Get the current deposits and shares held in the contract let total_deposit = query_balance( &deps.querier, - env.contract.address, + env.contract.address.clone(), config.astro_denom.clone(), )?; let total_shares = deps @@ -231,9 +235,9 @@ fn execute_leave( .checked_div(total_shares)?; // Burn the received xASTRO tokens - let burn_msg = NeutronMsg::BurnTokens { - denom: config.xastro_denom, - amount, + let burn_msg = MsgBurn { + sender: env.contract.address.to_string(), + amount: Some(coin(amount.u128(), config.xastro_denom).into()), burn_from_address: "".to_string(), // This needs to be "" for now }; diff --git a/contracts/tokenomics/staking/src/state.rs b/contracts/tokenomics/staking/src/state.rs index d28b00555..eb0b5f1bb 100644 --- a/contracts/tokenomics/staking/src/state.rs +++ b/contracts/tokenomics/staking/src/state.rs @@ -1,5 +1,4 @@ use cosmwasm_schema::cw_serde; -use cosmwasm_std::Addr; use cw_storage_plus::Item; /// This structure stores the main parameters for the staking contract. diff --git a/contracts/tokenomics/staking/tests/common/helper.rs b/contracts/tokenomics/staking/tests/common/helper.rs new file mode 100644 index 000000000..688dc91bd --- /dev/null +++ b/contracts/tokenomics/staking/tests/common/helper.rs @@ -0,0 +1,409 @@ +#![allow(dead_code)] + +use std::collections::HashMap; +use std::error::Error; +use std::fmt::Display; +use std::str::FromStr; + +use anyhow::Result as AnyResult; +use astroport::asset::{native_asset_info, token_asset_info, Asset, AssetInfo, PairInfo}; +use astroport::factory::{PairConfig, PairType}; +use astroport::observation::OracleObservation; +use astroport::pair::{ + ConfigResponse, CumulativePricesResponse, Cw20HookMsg, ReverseSimulationResponse, + SimulationResponse, +}; +use astroport::pair_concentrated::{ + ConcentratedPoolParams, ConcentratedPoolUpdateParams, QueryMsg, +}; +use astroport::token; +use astroport::token::Cw20Coin; +use cosmwasm_schema::cw_serde; +use cosmwasm_std::testing::MockApi; +use cosmwasm_std::{ + coin, coins, from_slice, to_binary, Addr, Coin, Decimal, Decimal256, Empty, GovMsg, IbcMsg, + IbcQuery, MemoryStorage, StdError, StdResult, Storage, Uint128, +}; +use cw_multi_test::{ + AddressGenerator, App, AppResponse, BankKeeper, BasicAppBuilder, Contract, ContractWrapper, + DistributionKeeper, Executor, FailingModule, StakeKeeper, WasmKeeper, +}; +use cw_storage_plus::Item; +use derivative::Derivative; +use itertools::Itertools; + +use crate::common::neutron_ext::NeutronStargate; + +const NATIVE_TOKEN_PRECISION: u8 = 6; + +const FACTORY_ADDRESS: &str = "osmo1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrqvlx82r"; + +const INIT_BALANCE: u128 = 1_000_000_000000; + +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +pub enum TestCoin { + Native(String), +} + +impl TestCoin { + pub fn denom(&self) -> Option { + match self { + TestCoin::Native(denom) => Some(denom.clone()), + _ => None, + } + } + + pub fn native(denom: &str) -> Self { + Self::Native(denom.to_string()) + } +} + +pub type NeutronApp = App< + BankKeeper, + MockApi, + MemoryStorage, + FailingModule, + WasmKeeper, + StakeKeeper, + DistributionKeeper, + FailingModule, + FailingModule, + NeutronStargate, +>; + +pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { + let mut test_coins: Vec = test_coins + .iter() + .filter_map(|test_coin| match test_coin { + TestCoin::Native(name) => { + let init_balance = INIT_BALANCE * 10u128.pow(NATIVE_TOKEN_PRECISION as u32); + Some(coin(init_balance, name)) + } + _ => None, + }) + .collect(); + test_coins.push(coin(INIT_BALANCE, "random-coin")); + test_coins.push(coin(INIT_BALANCE, "untrn")); + + test_coins +} + +#[derive(Default)] +struct HackyAddressGenerator<'a> { + _phantom: std::marker::PhantomData<&'a ()>, +} + +impl<'a> HackyAddressGenerator<'a> { + pub const CONTRACTS_COUNT: Item<'a, u64> = Item::new("wasm_contracts_count"); + pub const FACTORY_MARKER: Item<'a, ()> = Item::new("factory_marker"); +} + +impl<'a> AddressGenerator for HackyAddressGenerator<'a> { + fn next_address(&self, storage: &mut dyn Storage) -> Addr { + if Self::FACTORY_MARKER.may_load(storage).unwrap().is_some() { + Self::FACTORY_MARKER.remove(storage); + + Addr::unchecked(FACTORY_ADDRESS) + } else { + let count = if let Some(count) = Self::CONTRACTS_COUNT.may_load(storage).unwrap() { + Self::CONTRACTS_COUNT.save(storage, &(count + 1)).unwrap(); + count + 1 + } else { + Self::CONTRACTS_COUNT.save(storage, &1u64).unwrap(); + 1 + }; + + Addr::unchecked(format!("contract{count}")) + } + } +} + +#[derive(Derivative)] +#[derivative(Debug)] +pub struct Helper { + #[derivative(Debug = "ignore")] + pub app: NeutronApp, + pub owner: Addr, + pub assets: HashMap, + // pub factory: Addr, + // pub pair_addr: Addr, + // pub lp_token: String, + // pub fake_maker: Addr, +} + +impl Helper { + pub fn new( + owner: &Addr, + test_coins: Vec, + params: ConcentratedPoolParams, + ) -> AnyResult { + let mut app = BasicAppBuilder::new() + .with_stargate(NeutronStargate::default()) + .with_wasm::, WasmKeeper>( + WasmKeeper::new_with_custom_address_generator(HackyAddressGenerator::default()), + ) + .build(|router, _, storage| { + router + .bank + .init_balance(storage, owner, init_native_coins(&test_coins)) + .unwrap() + }); + + // let token_code_id = app.store_code(token_contract()); + + let asset_infos_vec = test_coins + .iter() + .cloned() + .map(|coin| { + let asset_info = match &coin { + TestCoin::Native(denom) => native_asset_info(denom.clone()), + }; + (coin, asset_info) + }) + .collect::>(); + + // let pair_code_id = app.store_code(pair_contract()); + // let factory_code_id = app.store_code(factory_contract()); + // let pair_type = PairType::Custom("concentrated".to_string()); + + // let fake_maker = Addr::unchecked("fake_maker"); + + // let coin_registry_id = app.store_code(coin_registry_contract()); + + // let coin_registry_address = app + // .instantiate_contract( + // coin_registry_id, + // owner.clone(), + // &astroport::native_coin_registry::InstantiateMsg { + // owner: owner.to_string(), + // }, + // &[], + // "Coin registry", + // None, + // ) + // .unwrap(); + + // app.execute_contract( + // owner.clone(), + // coin_registry_address.clone(), + // &astroport::native_coin_registry::ExecuteMsg::Add { + // native_coins: vec![ + // ("uosmo".to_owned(), 6), + // ("uusd".to_owned(), 6), + // ("rc".to_owned(), 6), + // ("foo".to_owned(), 5), + // ], + // }, + // &[], + // ) + // .unwrap(); + // let init_msg = astroport::factory::InstantiateMsg { + // fee_address: Some(fake_maker.to_string()), + // pair_configs: vec![PairConfig { + // code_id: pair_code_id, + // maker_fee_bps: 5000, + // total_fee_bps: 0u16, // Concentrated pair does not use this field, + // pair_type: pair_type.clone(), + // is_disabled: false, + // is_generator_disabled: false, + // }], + // token_code_id, + // generator_address: None, + // owner: owner.to_string(), + // whitelist_code_id: 234u64, + // coin_registry_address: coin_registry_address.to_string(), + // }; + + // Set marker in storage that the next contract is factory. We need this to have exact FACTORY_ADDRESS constant + // which is hardcoded in the PCL code. + app.init_modules(|_, _, storage| HackyAddressGenerator::FACTORY_MARKER.save(storage, &())) + .unwrap(); + // let factory = app.instantiate_contract( + // factory_code_id, + // owner.clone(), + // &init_msg, + // &[], + // "Factory", + // None, + // )?; + + // let asset_infos = asset_infos_vec + // .clone() + // .into_iter() + // .map(|(_, asset_info)| asset_info) + // .collect_vec(); + // let init_pair_msg = astroport::factory::ExecuteMsg::CreatePair { + // pair_type, + // asset_infos: asset_infos.clone(), + // init_params: Some(to_binary(¶ms).unwrap()), + // }; + + // app.execute_contract( + // owner.clone(), + // factory.clone(), + // &init_pair_msg, + // &osmo_create_pair_fee(), + // )?; + + // let resp: PairInfo = app.wrap().query_wasm_smart( + // &factory, + // &astroport::factory::QueryMsg::Pair { asset_infos }, + // )?; + + Ok(Self { + app, + owner: owner.clone(), + assets: asset_infos_vec.into_iter().collect(), + // factory, + // pair_addr: resp.contract_addr, + // lp_token: resp.liquidity_token.to_string(), + // fake_maker, + }) + } + + pub fn native_balance(&self, denom: &str, user: &Addr) -> u128 { + self.app + .wrap() + .query_balance(user, denom) + .unwrap() + .amount + .u128() + } + + pub fn token_balance(&self, token_addr: &Addr, user: &Addr) -> u128 { + let resp: token::BalanceResponse = self + .app + .wrap() + .query_wasm_smart( + token_addr, + &token::QueryMsg::Balance { + address: user.to_string(), + }, + ) + .unwrap(); + + resp.balance.u128() + } + + pub fn coin_balance(&self, coin: &TestCoin, user: &Addr) -> u128 { + match &self.assets[coin] { + AssetInfo::Token { contract_addr } => self.token_balance(contract_addr, user), + AssetInfo::NativeToken { denom } => self.native_balance(denom, user), + } + } + + pub fn give_me_money(&mut self, assets: &[Asset], recipient: &Addr) { + let funds = + assets.mock_coins_sent(&mut self.app, &self.owner, recipient, SendType::Transfer); + + if !funds.is_empty() { + self.app + .send_tokens(self.owner.clone(), recipient.clone(), &funds) + .unwrap(); + } + } +} + +#[derive(Clone, Copy)] +pub enum SendType { + Allowance, + Transfer, + None, +} + +pub trait AssetExt { + fn mock_coin_sent( + &self, + app: &mut NeutronApp, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec; +} + +impl AssetExt for Asset { + fn mock_coin_sent( + &self, + app: &mut NeutronApp, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec { + let mut funds = vec![]; + match &self.info { + AssetInfo::Token { contract_addr } if !self.amount.is_zero() => { + let msg = match typ { + SendType::Allowance => token::ExecuteMsg::IncreaseAllowance { + spender: spender.to_string(), + amount: self.amount, + expires: None, + }, + SendType::Transfer => token::ExecuteMsg::Transfer { + recipient: spender.to_string(), + amount: self.amount, + }, + _ => unimplemented!(), + }; + app.execute_contract(user.clone(), contract_addr.clone(), &msg, &[]) + .unwrap(); + } + AssetInfo::NativeToken { denom } if !self.amount.is_zero() => { + funds = vec![coin(self.amount.u128(), denom)]; + } + _ => {} + } + + funds + } +} + +pub trait AssetsExt { + fn mock_coins_sent( + &self, + app: &mut NeutronApp, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec; +} + +impl AssetsExt for &[Asset] { + fn mock_coins_sent( + &self, + app: &mut NeutronApp, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec { + let mut funds = vec![]; + for asset in self.iter() { + funds.extend(asset.mock_coin_sent(app, user, spender, typ)); + } + funds + } +} + +pub trait AppExtension { + fn next_block(&mut self, time: u64); +} + +impl AppExtension for NeutronApp { + fn next_block(&mut self, time: u64) { + self.update_block(|block| { + block.time = block.time.plus_seconds(time); + block.height += 1 + }); + } +} + +pub fn f64_to_dec(val: f64) -> T +where + T: FromStr, + T::Err: Error, +{ + T::from_str(&val.to_string()).unwrap() +} + +pub fn dec_to_f64(val: impl Display) -> f64 { + f64::from_str(&val.to_string()).unwrap() +} diff --git a/contracts/tokenomics/staking/tests/common/mod.rs b/contracts/tokenomics/staking/tests/common/mod.rs new file mode 100644 index 000000000..8d3bd57f1 --- /dev/null +++ b/contracts/tokenomics/staking/tests/common/mod.rs @@ -0,0 +1,2 @@ +pub mod helper; +pub mod neutron_ext; diff --git a/contracts/tokenomics/staking/tests/common/neutron_ext.rs b/contracts/tokenomics/staking/tests/common/neutron_ext.rs new file mode 100644 index 000000000..93d9cc75f --- /dev/null +++ b/contracts/tokenomics/staking/tests/common/neutron_ext.rs @@ -0,0 +1,122 @@ +use std::cell::RefCell; +use std::collections::HashMap; +use std::fmt::Debug; + +use anyhow::Result as AnyResult; +use cosmwasm_schema::schemars::JsonSchema; +use cosmwasm_schema::serde::de::DeserializeOwned; +use cosmwasm_std::{ + coins, Addr, Api, Binary, BlockInfo, CustomQuery, Empty, Querier, Storage, SubMsgResponse, +}; +use cw_multi_test::{ + AppResponse, BankSudo, CosmosRouter, Module, Stargate, StargateMsg, StargateQuery, +}; + +use osmosis_std::types::osmosis::tokenfactory::v1beta1::{ + MsgBurn, MsgCreateDenom, MsgCreateDenomResponse, MsgMint, +}; + +#[derive(Default)] +pub struct NeutronStargate { + pub cw_pools: RefCell>, +} + +impl Module for NeutronStargate { + type ExecT = StargateMsg; + type QueryT = StargateQuery; + type SudoT = Empty; + + fn execute( + &self, + api: &dyn Api, + storage: &mut dyn Storage, + router: &dyn CosmosRouter, + block: &BlockInfo, + sender: Addr, + msg: Self::ExecT, + ) -> AnyResult + where + ExecC: Debug + Clone + PartialEq + JsonSchema + DeserializeOwned + 'static, + QueryC: CustomQuery + DeserializeOwned + 'static, + { + match msg.type_url.as_str() { + MsgCreateDenom::TYPE_URL => { + let tf_msg: MsgCreateDenom = msg.value.try_into()?; + let submsg_response = SubMsgResponse { + events: vec![], + data: Some( + MsgCreateDenomResponse { + new_token_denom: format!( + "factory/{}/{}", + tf_msg.sender, tf_msg.subdenom + ), + } + .into(), + ), + }; + Ok(submsg_response.into()) + } + MsgMint::TYPE_URL => { + let tf_msg: MsgMint = msg.value.try_into()?; + let mint_coins = tf_msg + .amount + .expect("Empty amount in tokenfactory MsgMint!"); + let bank_sudo = BankSudo::Mint { + to_address: tf_msg.mint_to_address, + amount: coins(mint_coins.amount.parse()?, mint_coins.denom), + }; + router.sudo(api, storage, block, bank_sudo.into()) + } + MsgBurn::TYPE_URL => { + let tf_msg: MsgBurn = msg.value.try_into()?; + let burn_coins = tf_msg + .amount + .expect("Empty amount in tokenfactory MsgBurn!"); + let bank_sudo = BankSudo::Burn { + from_address: tf_msg.sender, + amount: coins(burn_coins.amount.parse()?, burn_coins.denom), + }; + router.sudo(api, storage, block, bank_sudo.into()) + } + _ => { + return Err(anyhow::anyhow!( + "Unexpected exec msg {msg:?} from {sender:?}", + )) + } + } + } + + fn sudo( + &self, + _api: &dyn Api, + _storage: &mut dyn Storage, + _router: &dyn CosmosRouter, + _block: &BlockInfo, + _msg: Self::SudoT, + ) -> AnyResult + where + ExecC: Debug + Clone + PartialEq + JsonSchema + DeserializeOwned + 'static, + QueryC: CustomQuery + DeserializeOwned + 'static, + { + unimplemented!("sudo for Neutron Stargate mock module is not implemented") + } + + fn query( + &self, + _api: &dyn Api, + _storage: &dyn Storage, + _querier: &dyn Querier, + _block: &BlockInfo, + request: Self::QueryT, + ) -> AnyResult { + match request.path.as_str() { + _ => { + return Err(anyhow::anyhow!( + "Unexpected stargate query request {request:?}", + )) + } + } + } +} + +impl Stargate for NeutronStargate {} diff --git a/contracts/tokenomics/staking/tests/integration.rs b/contracts/tokenomics/staking/tests/integration.rs index 198b2e1ed..762454f84 100644 --- a/contracts/tokenomics/staking/tests/integration.rs +++ b/contracts/tokenomics/staking/tests/integration.rs @@ -1,167 +1,68 @@ #![cfg(not(tarpaulin_include))] -use astroport::staking::{ConfigResponse, Cw20HookMsg, InstantiateMsg as xInstatiateMsg, QueryMsg}; -use astroport::token::InstantiateMsg; -use cosmwasm_std::{attr, to_binary, Addr, QueryRequest, Uint128, WasmQuery}; -use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; -use cw_multi_test::{App, ContractWrapper, Executor}; - +use astroport::staking::{ConfigResponse, InstantiateMsg, QueryMsg}; +use common::neutron_ext::NeutronStargate; +use cosmwasm_schema::{schemars::JsonSchema, serde::de::DeserializeOwned}; +use cosmwasm_std::{ + attr, testing::MockApi, to_binary, Addr, Api, CustomQuery, Empty, GovMsg, IbcMsg, IbcQuery, + MemoryStorage, Querier, QueryRequest, Storage, Uint128, WasmQuery, +}; +use std::fmt::Debug; +// use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; +use cw_multi_test::{ + custom_app, App, AppBuilder, BankKeeper, BasicApp, BasicAppBuilder, Contract, ContractWrapper, + DistributionKeeper, Executor, FailingModule, Router, StakeKeeper, StargateMsg, StargateQuery, + WasmKeeper, +}; + +use common::helper::{dec_to_f64, f64_to_dec, init_native_coins, AppExtension, Helper, TestCoin}; + +mod common; + +const OWNER: &str = "owner"; const ALICE: &str = "alice"; const BOB: &str = "bob"; const CAROL: &str = "carol"; const ATTACKER: &str = "attacker"; const VICTIM: &str = "victim"; -#[test] -fn check_deflate_liquidity() { - let mut router = mock_app(); - - let owner = Addr::unchecked("owner"); - - let (astro_token_instance, staking_instance, _) = - instantiate_contracts(&mut router, owner.clone()); - - mint_some_astro( - &mut router, - owner.clone(), - astro_token_instance.clone(), - ATTACKER, - ); - - mint_some_astro( - &mut router, - owner.clone(), - astro_token_instance.clone(), - VICTIM, - ); - - let attacker_address = Addr::unchecked(ATTACKER); - let victim_address = Addr::unchecked(VICTIM); - - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(1000u128), - }; - - let err = router - .execute_contract( - attacker_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Initial stake amount must be more than 1000" - ); - - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(1001u128), - }; - - router - .execute_contract( - attacker_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - let msg = Cw20ExecuteMsg::Transfer { - recipient: staking_instance.to_string(), - amount: Uint128::from(5000u128), - }; - - router - .execute_contract( - attacker_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(2u128), - }; - - let err = router - .execute_contract( - victim_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap_err(); - - assert_eq!(err.root_cause().to_string(), "Insufficient amount of Stake"); - - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(10u128), - }; - - router - .execute_contract( - victim_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); -} - -fn mock_app() -> App { - App::default() +const ASTRO_DENOM: &str = "factory/assembly/ASTRO"; + +#[allow(clippy::type_complexity)] +fn mock_app() -> App< + BankKeeper, + MockApi, + MemoryStorage, + FailingModule, + WasmKeeper, + StakeKeeper, + DistributionKeeper, + FailingModule, + FailingModule, + NeutronStargate, +> { + let owner = Addr::unchecked(OWNER); + + let test_coins = vec![TestCoin::native("untrn"), TestCoin::native(ASTRO_DENOM)]; + + BasicAppBuilder::new() + .with_stargate(NeutronStargate::default()) + .with_wasm::, WasmKeeper>( + WasmKeeper::new(), + ) + .build(|router, _, storage| { + router + .bank + .init_balance(storage, &owner, init_native_coins(&test_coins)) + .unwrap() + }) } -fn instantiate_contracts(router: &mut App, owner: Addr) -> (Addr, Addr, Addr) { - let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, - )); - - let astro_token_code_id = router.store_code(astro_token_contract); - - let x_astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_xastro_token::contract::execute, - astroport_xastro_token::contract::instantiate, - astroport_xastro_token::contract::query, - )); - - let x_astro_token_code_id = router.store_code(x_astro_token_contract); - - let msg = InstantiateMsg { - name: String::from("Astro token"), - symbol: String::from("ASTRO"), - decimals: 6, - initial_balances: vec![], - mint: Some(MinterResponse { - minter: owner.to_string(), - cap: None, - }), - marketing: None, - }; +#[test] +fn test_instantiate_tokenfactory() { + let owner = Addr::unchecked(OWNER); - let astro_token_instance = router - .instantiate_contract( - astro_token_code_id, - owner.clone(), - &msg, - &[], - String::from("ASTRO"), - None, - ) - .unwrap(); + let mut app = mock_app(); let staking_contract = Box::new( ContractWrapper::new_with_empty( @@ -172,701 +73,887 @@ fn instantiate_contracts(router: &mut App, owner: Addr) -> (Addr, Addr, Addr) { .with_reply_empty(astroport_staking::contract::reply), ); - let staking_code_id = router.store_code(staking_contract); + let staking_code_id = app.store_code(staking_contract); - let msg = xInstatiateMsg { + let msg = InstantiateMsg { owner: owner.to_string(), - token_code_id: x_astro_token_code_id, - deposit_token_addr: astro_token_instance.to_string(), - marketing: None, + deposit_token_denom: ASTRO_DENOM.to_string(), }; - let staking_instance = router + let staking_instance = app .instantiate_contract( staking_code_id, owner, &msg, &[], - String::from("xASTRO"), + String::from("Astroport Staking"), None, ) .unwrap(); - let msg = QueryMsg::Config {}; - let res = router + let response: ConfigResponse = app .wrap() - .query::(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: staking_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })) + .query_wasm_smart(staking_instance.clone(), &QueryMsg::Config {}) .unwrap(); - // In multitest, contract names are named in the order in which contracts are created. - assert_eq!("contract0", astro_token_instance); - assert_eq!("contract1", staking_instance); - assert_eq!("contract2", res.share_token_addr); - - let x_astro_token_instance = res.share_token_addr; - - ( - astro_token_instance, - staking_instance, - x_astro_token_instance, - ) -} - -fn mint_some_astro(router: &mut App, owner: Addr, astro_token_instance: Addr, to: &str) { - let msg = cw20::Cw20ExecuteMsg::Mint { - recipient: String::from(to), - amount: Uint128::from(10000u128), - }; - let res = router - .execute_contract(owner.clone(), astro_token_instance.clone(), &msg, &[]) - .unwrap(); - assert_eq!(res.events[1].attributes[1], attr("action", "mint")); - assert_eq!(res.events[1].attributes[2], attr("to", String::from(to))); + assert_eq!(response.deposit_denom, ASTRO_DENOM.to_string()); + // xASTRO created should be factory/contract_address/xASTRO assert_eq!( - res.events[1].attributes[3], - attr("amount", Uint128::from(10000u128)) + response.share_denom, + format!("factory/{}/xASTRO", staking_instance) ); } -#[test] -fn cw20receive_enter_and_leave() { - let mut router = mock_app(); - - let owner = Addr::unchecked("owner"); - - let (astro_token_instance, staking_instance, x_astro_token_instance) = - instantiate_contracts(&mut router, owner.clone()); - - // Mint 10000 ASTRO for Alice - mint_some_astro( - &mut router, - owner.clone(), - astro_token_instance.clone(), - ALICE, - ); - - let alice_address = Addr::unchecked(ALICE); - - // Check if Alice's ASTRO balance is 100 - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(10000u128) - } - ); - - // We can unstake ASTRO only by calling the xASTRO token. - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), - amount: Uint128::from(10u128), - }; - - let resp = router - .execute_contract( - alice_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap_err(); - assert_eq!(resp.root_cause().to_string(), "Unauthorized"); - - // Tru to stake Alice's 1100 ASTRO for 1100 xASTRO - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(1100u128), - }; - - router - .execute_contract( - alice_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - // Check if Alice's xASTRO balance is 1100 - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(100u128) - } - ); - - // Check if Alice's ASTRO balance is 8900 - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(8900u128) - } - ); - - // Check if the staking contract's ASTRO balance is 1100 - let msg = Cw20QueryMsg::Balance { - address: staking_instance.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(1100u128) - } - ); - - // We can stake tokens only by calling the ASTRO token. - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(10u128), - }; - - let resp = router - .execute_contract( - alice_address.clone(), - x_astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap_err(); - assert_eq!(resp.root_cause().to_string(), "Unauthorized"); - - // Try to unstake Alice's 10 xASTRO for 10 ASTRO - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), - amount: Uint128::from(10u128), - }; - - router - .execute_contract( - alice_address.clone(), - x_astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - // Check if Alice's xASTRO balance is 90 - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(90u128) - } - ); - - // Check if Alice's ASTRO balance is 8910 - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(8910u128) - } - ); - - // Check if the staking contract's ASTRO balance is 1090 - let msg = Cw20QueryMsg::Balance { - address: staking_instance.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(1090u128) - } - ); - - // Check if the staking contract's xASTRO balance is 1000 - let msg = Cw20QueryMsg::Balance { - address: staking_instance.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(1000u128) - } - ); - - let res: Uint128 = router - .wrap() - .query_wasm_smart(staking_instance.clone(), &QueryMsg::TotalDeposit {}) - .unwrap(); - assert_eq!(res.u128(), 1090); - let res: Uint128 = router - .wrap() - .query_wasm_smart(staking_instance, &QueryMsg::TotalShares {}) - .unwrap(); - assert_eq!(res.u128(), 1090); -} - -#[test] -fn should_not_allow_withdraw_more_than_what_you_have() { - let mut router = mock_app(); - - let owner = Addr::unchecked("owner"); - - let (astro_token_instance, staking_instance, x_astro_token_instance) = - instantiate_contracts(&mut router, owner.clone()); - - // Mint 10000 ASTRO for Alice - mint_some_astro( - &mut router, - owner.clone(), - astro_token_instance.clone(), - ALICE, - ); - let alice_address = Addr::unchecked(ALICE); - - // enter Alice's 2000 ASTRO for 1000 xASTRO - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(2000u128), - }; - - router - .execute_contract( - alice_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - // Check if Alice's xASTRO balance is 1000 - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(1000u128) - } - ); - - // Try to burn Alice's 2000 xASTRO and unstake - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), - amount: Uint128::from(2000u128), - }; - - let res = router - .execute_contract( - alice_address.clone(), - x_astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap_err(); - - assert_eq!( - res.root_cause().to_string(), - "Cannot Sub with 1000 and 2000" - ); -} - -#[test] -fn should_work_with_more_than_one_participant() { - let mut router = mock_app(); - - let owner = Addr::unchecked("owner"); - - let (astro_token_instance, staking_instance, x_astro_token_instance) = - instantiate_contracts(&mut router, owner.clone()); - - // Mint 10000 ASTRO for Alice - mint_some_astro( - &mut router, - owner.clone(), - astro_token_instance.clone(), - ALICE, - ); - let alice_address = Addr::unchecked(ALICE); - - // Mint 10000 ASTRO for Bob - mint_some_astro( - &mut router, - owner.clone(), - astro_token_instance.clone(), - BOB, - ); - let bob_address = Addr::unchecked(BOB); - - // Mint 10000 ASTRO for Carol - mint_some_astro( - &mut router, - owner.clone(), - astro_token_instance.clone(), - CAROL, - ); - let carol_address = Addr::unchecked(CAROL); - - // Stake Alice's 2000 ASTRO for 1000 xASTRO (subtract min liquid amount) - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(2000u128), - }; - - router - .execute_contract( - alice_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - // Stake Bob's 10 ASTRO for 10 xASTRO - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(10u128), - }; - - router - .execute_contract(bob_address.clone(), astro_token_instance.clone(), &msg, &[]) - .unwrap(); - - // Check if Alice's xASTRO balance is 1000 - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(1000u128) - } - ); - - // Check if Bob's xASTRO balance is 10 - let msg = Cw20QueryMsg::Balance { - address: bob_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(10u128) - } - ); - - // Check if staking contract's ASTRO balance is 2010 - let msg = Cw20QueryMsg::Balance { - address: staking_instance.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(2010u128) - } - ); - - // Staking contract gets 20 more ASTRO from external source - let msg = Cw20ExecuteMsg::Transfer { - recipient: staking_instance.to_string(), - amount: Uint128::from(20u128), - }; - let res = router - .execute_contract( - carol_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); - assert_eq!(res.events[1].attributes[1], attr("action", "transfer")); - assert_eq!(res.events[1].attributes[2], attr("from", carol_address)); - assert_eq!( - res.events[1].attributes[3], - attr("to", staking_instance.clone()) - ); - assert_eq!( - res.events[1].attributes[4], - attr("amount", Uint128::from(20u128)) - ); - - // Stake Alice's 10 ASTRO for 9 xASTRO: 10*2010/2030 = 9 - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(10u128), - }; - - router - .execute_contract( - alice_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - // Check if Alice's xASTRO balance is 1009 - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(1009u128) - } - ); - - // Check if Bob's xASTRO balance is 10 - let msg = Cw20QueryMsg::Balance { - address: bob_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(10u128) - } - ); - - // Burn Bob's 5 xASTRO and unstake: gets 5*2040/2019 = 5 ASTRO - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), - amount: Uint128::from(5u128), - }; - - router - .execute_contract( - bob_address.clone(), - x_astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - // Check if Alice's xASTRO balance is 1009 - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(1009u128) - } - ); - - // Check if Bob's xASTRO balance is 5 - let msg = Cw20QueryMsg::Balance { - address: bob_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(5u128) - } - ); - - // Check if the staking contract's ASTRO balance is 52 (60 - 8 (Bob left 5 xASTRO)) - let msg = Cw20QueryMsg::Balance { - address: staking_instance.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(2035u128) - } - ); - - // Check if Alice's ASTRO balance is 7990 (10000 minted - 2000 entered - 10 entered) - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(7990u128) - } - ); - - // Check if Bob's ASTRO balance is 9995 (10000 minted - 10 entered + 5 by leaving) - let msg = Cw20QueryMsg::Balance { - address: bob_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(9995u128) - } - ); -} - -#[test] -fn should_not_allow_directly_burn_from_xastro() { - let mut router = mock_app(); - - let owner = Addr::unchecked("owner"); - - let (astro_token_instance, staking_instance, x_astro_token_instance) = - instantiate_contracts(&mut router, owner.clone()); - - // Mint 10000 ASTRO for Alice - mint_some_astro( - &mut router, - owner.clone(), - astro_token_instance.clone(), - ALICE, - ); - let alice_address = Addr::unchecked(ALICE); - - // enter Alice's 2000 ASTRO for 1000 xASTRO - let msg = Cw20ExecuteMsg::Send { - contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(2000u128), - }; - - router - .execute_contract( - alice_address.clone(), - astro_token_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - // Check if Alice's xASTRO balance is 1000 - let msg = Cw20QueryMsg::Balance { - address: alice_address.to_string(), - }; - let res: Result = - router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), - })); - assert_eq!( - res.unwrap(), - BalanceResponse { - balance: Uint128::from(1000u128) - } - ); - - // Try to burn directly - let res = router - .execute_contract( - alice_address.clone(), - x_astro_token_instance.clone(), - &Cw20ExecuteMsg::Burn { - amount: Uint128::from(20u128), - }, - &[], - ) - .unwrap_err(); - assert_eq!(res.root_cause().to_string(), "Unauthorized"); -} +// fn instantiate_contracts(router: &mut App, owner: Addr) -> (Addr, Addr, Addr) { +// let astro_token_contract = Box::new(ContractWrapper::new_with_empty( +// astroport_token::contract::execute, +// astroport_token::contract::instantiate, +// astroport_token::contract::query, +// )); + +// let astro_token_code_id = router.store_code(astro_token_contract); + +// let x_astro_token_contract = Box::new(ContractWrapper::new_with_empty( +// astroport_xastro_token::contract::execute, +// astroport_xastro_token::contract::instantiate, +// astroport_xastro_token::contract::query, +// )); + +// let x_astro_token_code_id = router.store_code(x_astro_token_contract); + +// let msg = InstantiateMsg { +// name: String::from("Astro token"), +// symbol: String::from("ASTRO"), +// decimals: 6, +// initial_balances: vec![], +// mint: Some(MinterResponse { +// minter: owner.to_string(), +// cap: None, +// }), +// marketing: None, +// }; + +// let astro_token_instance = router +// .instantiate_contract( +// astro_token_code_id, +// owner.clone(), +// &msg, +// &[], +// String::from("ASTRO"), +// None, +// ) +// .unwrap(); + +// let staking_contract = Box::new( +// ContractWrapper::new_with_empty( +// astroport_staking::contract::execute, +// astroport_staking::contract::instantiate, +// astroport_staking::contract::query, +// ) +// .with_reply_empty(astroport_staking::contract::reply), +// ); + +// let staking_code_id = router.store_code(staking_contract); + +// let msg = xInstatiateMsg { +// owner: owner.to_string(), +// token_code_id: x_astro_token_code_id, +// deposit_token_addr: astro_token_instance.to_string(), +// marketing: None, +// }; +// let staking_instance = router +// .instantiate_contract( +// staking_code_id, +// owner, +// &msg, +// &[], +// String::from("xASTRO"), +// None, +// ) +// .unwrap(); + +// let msg = QueryMsg::Config {}; +// let res = router +// .wrap() +// .query::(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: staking_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })) +// .unwrap(); + +// // In multitest, contract names are named in the order in which contracts are created. +// assert_eq!("contract0", astro_token_instance); +// assert_eq!("contract1", staking_instance); +// assert_eq!("contract2", res.share_token_addr); + +// let x_astro_token_instance = res.share_token_addr; + +// ( +// astro_token_instance, +// staking_instance, +// x_astro_token_instance, +// ) +// } + +// #[test] +// fn check_deflate_liquidity() { +// let mut router = mock_app(); + +// let owner = Addr::unchecked("owner"); + +// let (astro_token_instance, staking_instance, _) = +// instantiate_contracts(&mut router, owner.clone()); + +// mint_some_astro( +// &mut router, +// owner.clone(), +// astro_token_instance.clone(), +// ATTACKER, +// ); + +// mint_some_astro( +// &mut router, +// owner.clone(), +// astro_token_instance.clone(), +// VICTIM, +// ); + +// let attacker_address = Addr::unchecked(ATTACKER); +// let victim_address = Addr::unchecked(VICTIM); + +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(1000u128), +// }; + +// let err = router +// .execute_contract( +// attacker_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap_err(); +// assert_eq!( +// err.root_cause().to_string(), +// "Initial stake amount must be more than 1000" +// ); + +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(1001u128), +// }; + +// router +// .execute_contract( +// attacker_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); + +// let msg = Cw20ExecuteMsg::Transfer { +// recipient: staking_instance.to_string(), +// amount: Uint128::from(5000u128), +// }; + +// router +// .execute_contract( +// attacker_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); + +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(2u128), +// }; + +// let err = router +// .execute_contract( +// victim_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap_err(); + +// assert_eq!(err.root_cause().to_string(), "Insufficient amount of Stake"); + +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(10u128), +// }; + +// router +// .execute_contract( +// victim_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); +// } + +// fn mint_some_astro(router: &mut App, owner: Addr, astro_token_instance: Addr, to: &str) { +// let msg = cw20::Cw20ExecuteMsg::Mint { +// recipient: String::from(to), +// amount: Uint128::from(10000u128), +// }; +// let res = router +// .execute_contract(owner.clone(), astro_token_instance.clone(), &msg, &[]) +// .unwrap(); +// assert_eq!(res.events[1].attributes[1], attr("action", "mint")); +// assert_eq!(res.events[1].attributes[2], attr("to", String::from(to))); +// assert_eq!( +// res.events[1].attributes[3], +// attr("amount", Uint128::from(10000u128)) +// ); +// } + +// #[test] +// fn cw20receive_enter_and_leave() { +// let mut router = mock_app(); + +// let owner = Addr::unchecked("owner"); + +// let (astro_token_instance, staking_instance, x_astro_token_instance) = +// instantiate_contracts(&mut router, owner.clone()); + +// // Mint 10000 ASTRO for Alice +// mint_some_astro( +// &mut router, +// owner.clone(), +// astro_token_instance.clone(), +// ALICE, +// ); + +// let alice_address = Addr::unchecked(ALICE); + +// // Check if Alice's ASTRO balance is 100 +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(10000u128) +// } +// ); + +// // We can unstake ASTRO only by calling the xASTRO token. +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), +// amount: Uint128::from(10u128), +// }; + +// let resp = router +// .execute_contract( +// alice_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap_err(); +// assert_eq!(resp.root_cause().to_string(), "Unauthorized"); + +// // Tru to stake Alice's 1100 ASTRO for 1100 xASTRO +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(1100u128), +// }; + +// router +// .execute_contract( +// alice_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); + +// // Check if Alice's xASTRO balance is 1100 +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(100u128) +// } +// ); + +// // Check if Alice's ASTRO balance is 8900 +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(8900u128) +// } +// ); + +// // Check if the staking contract's ASTRO balance is 1100 +// let msg = Cw20QueryMsg::Balance { +// address: staking_instance.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(1100u128) +// } +// ); + +// // We can stake tokens only by calling the ASTRO token. +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(10u128), +// }; + +// let resp = router +// .execute_contract( +// alice_address.clone(), +// x_astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap_err(); +// assert_eq!(resp.root_cause().to_string(), "Unauthorized"); + +// // Try to unstake Alice's 10 xASTRO for 10 ASTRO +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), +// amount: Uint128::from(10u128), +// }; + +// router +// .execute_contract( +// alice_address.clone(), +// x_astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); + +// // Check if Alice's xASTRO balance is 90 +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(90u128) +// } +// ); + +// // Check if Alice's ASTRO balance is 8910 +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(8910u128) +// } +// ); + +// // Check if the staking contract's ASTRO balance is 1090 +// let msg = Cw20QueryMsg::Balance { +// address: staking_instance.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(1090u128) +// } +// ); + +// // Check if the staking contract's xASTRO balance is 1000 +// let msg = Cw20QueryMsg::Balance { +// address: staking_instance.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(1000u128) +// } +// ); + +// let res: Uint128 = router +// .wrap() +// .query_wasm_smart(staking_instance.clone(), &QueryMsg::TotalDeposit {}) +// .unwrap(); +// assert_eq!(res.u128(), 1090); +// let res: Uint128 = router +// .wrap() +// .query_wasm_smart(staking_instance, &QueryMsg::TotalShares {}) +// .unwrap(); +// assert_eq!(res.u128(), 1090); +// } + +// #[test] +// fn should_not_allow_withdraw_more_than_what_you_have() { +// let mut router = mock_app(); + +// let owner = Addr::unchecked("owner"); + +// let (astro_token_instance, staking_instance, x_astro_token_instance) = +// instantiate_contracts(&mut router, owner.clone()); + +// // Mint 10000 ASTRO for Alice +// mint_some_astro( +// &mut router, +// owner.clone(), +// astro_token_instance.clone(), +// ALICE, +// ); +// let alice_address = Addr::unchecked(ALICE); + +// // enter Alice's 2000 ASTRO for 1000 xASTRO +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(2000u128), +// }; + +// router +// .execute_contract( +// alice_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); + +// // Check if Alice's xASTRO balance is 1000 +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(1000u128) +// } +// ); + +// // Try to burn Alice's 2000 xASTRO and unstake +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), +// amount: Uint128::from(2000u128), +// }; + +// let res = router +// .execute_contract( +// alice_address.clone(), +// x_astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap_err(); + +// assert_eq!( +// res.root_cause().to_string(), +// "Cannot Sub with 1000 and 2000" +// ); +// } + +// #[test] +// fn should_work_with_more_than_one_participant() { +// let mut router = mock_app(); + +// let owner = Addr::unchecked("owner"); + +// let (astro_token_instance, staking_instance, x_astro_token_instance) = +// instantiate_contracts(&mut router, owner.clone()); + +// // Mint 10000 ASTRO for Alice +// mint_some_astro( +// &mut router, +// owner.clone(), +// astro_token_instance.clone(), +// ALICE, +// ); +// let alice_address = Addr::unchecked(ALICE); + +// // Mint 10000 ASTRO for Bob +// mint_some_astro( +// &mut router, +// owner.clone(), +// astro_token_instance.clone(), +// BOB, +// ); +// let bob_address = Addr::unchecked(BOB); + +// // Mint 10000 ASTRO for Carol +// mint_some_astro( +// &mut router, +// owner.clone(), +// astro_token_instance.clone(), +// CAROL, +// ); +// let carol_address = Addr::unchecked(CAROL); + +// // Stake Alice's 2000 ASTRO for 1000 xASTRO (subtract min liquid amount) +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(2000u128), +// }; + +// router +// .execute_contract( +// alice_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); + +// // Stake Bob's 10 ASTRO for 10 xASTRO +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(10u128), +// }; + +// router +// .execute_contract(bob_address.clone(), astro_token_instance.clone(), &msg, &[]) +// .unwrap(); + +// // Check if Alice's xASTRO balance is 1000 +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(1000u128) +// } +// ); + +// // Check if Bob's xASTRO balance is 10 +// let msg = Cw20QueryMsg::Balance { +// address: bob_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(10u128) +// } +// ); + +// // Check if staking contract's ASTRO balance is 2010 +// let msg = Cw20QueryMsg::Balance { +// address: staking_instance.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(2010u128) +// } +// ); + +// // Staking contract gets 20 more ASTRO from external source +// let msg = Cw20ExecuteMsg::Transfer { +// recipient: staking_instance.to_string(), +// amount: Uint128::from(20u128), +// }; +// let res = router +// .execute_contract( +// carol_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); +// assert_eq!(res.events[1].attributes[1], attr("action", "transfer")); +// assert_eq!(res.events[1].attributes[2], attr("from", carol_address)); +// assert_eq!( +// res.events[1].attributes[3], +// attr("to", staking_instance.clone()) +// ); +// assert_eq!( +// res.events[1].attributes[4], +// attr("amount", Uint128::from(20u128)) +// ); + +// // Stake Alice's 10 ASTRO for 9 xASTRO: 10*2010/2030 = 9 +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(10u128), +// }; + +// router +// .execute_contract( +// alice_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); + +// // Check if Alice's xASTRO balance is 1009 +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(1009u128) +// } +// ); + +// // Check if Bob's xASTRO balance is 10 +// let msg = Cw20QueryMsg::Balance { +// address: bob_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(10u128) +// } +// ); + +// // Burn Bob's 5 xASTRO and unstake: gets 5*2040/2019 = 5 ASTRO +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), +// amount: Uint128::from(5u128), +// }; + +// router +// .execute_contract( +// bob_address.clone(), +// x_astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); + +// // Check if Alice's xASTRO balance is 1009 +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(1009u128) +// } +// ); + +// // Check if Bob's xASTRO balance is 5 +// let msg = Cw20QueryMsg::Balance { +// address: bob_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(5u128) +// } +// ); + +// // Check if the staking contract's ASTRO balance is 52 (60 - 8 (Bob left 5 xASTRO)) +// let msg = Cw20QueryMsg::Balance { +// address: staking_instance.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(2035u128) +// } +// ); + +// // Check if Alice's ASTRO balance is 7990 (10000 minted - 2000 entered - 10 entered) +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(7990u128) +// } +// ); + +// // Check if Bob's ASTRO balance is 9995 (10000 minted - 10 entered + 5 by leaving) +// let msg = Cw20QueryMsg::Balance { +// address: bob_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(9995u128) +// } +// ); +// } + +// #[test] +// fn should_not_allow_directly_burn_from_xastro() { +// let mut router = mock_app(); + +// let owner = Addr::unchecked("owner"); + +// let (astro_token_instance, staking_instance, x_astro_token_instance) = +// instantiate_contracts(&mut router, owner.clone()); + +// // Mint 10000 ASTRO for Alice +// mint_some_astro( +// &mut router, +// owner.clone(), +// astro_token_instance.clone(), +// ALICE, +// ); +// let alice_address = Addr::unchecked(ALICE); + +// // enter Alice's 2000 ASTRO for 1000 xASTRO +// let msg = Cw20ExecuteMsg::Send { +// contract: staking_instance.to_string(), +// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// amount: Uint128::from(2000u128), +// }; + +// router +// .execute_contract( +// alice_address.clone(), +// astro_token_instance.clone(), +// &msg, +// &[], +// ) +// .unwrap(); + +// // Check if Alice's xASTRO balance is 1000 +// let msg = Cw20QueryMsg::Balance { +// address: alice_address.to_string(), +// }; +// let res: Result = +// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { +// contract_addr: x_astro_token_instance.to_string(), +// msg: to_binary(&msg).unwrap(), +// })); +// assert_eq!( +// res.unwrap(), +// BalanceResponse { +// balance: Uint128::from(1000u128) +// } +// ); + +// // Try to burn directly +// let res = router +// .execute_contract( +// alice_address.clone(), +// x_astro_token_instance.clone(), +// &Cw20ExecuteMsg::Burn { +// amount: Uint128::from(20u128), +// }, +// &[], +// ) +// .unwrap_err(); +// assert_eq!(res.root_cause().to_string(), "Unauthorized"); +// } diff --git a/packages/astroport/src/lib.rs b/packages/astroport/src/lib.rs index 461927f14..f06847437 100644 --- a/packages/astroport/src/lib.rs +++ b/packages/astroport/src/lib.rs @@ -24,6 +24,7 @@ pub mod router; pub mod shared_multisig; pub mod staking; pub mod token; +pub mod tokenfactory_tracker; pub mod vesting; pub mod xastro_outpost_token; pub mod xastro_token; From 9531ea86fc013cbc529edf4e67f82ace015930eb Mon Sep 17 00:00:00 2001 From: Donovan Solms <4567303+donovansolms@users.noreply.github.com> Date: Mon, 30 Oct 2023 15:49:05 +0200 Subject: [PATCH 05/84] feat(tokenfactory_tracker): Add initial tests --- .../tokenfactory_tracker/src/contract.rs | 211 ++- .../tokenfactory_tracker/src/error.rs | 3 + .../tokenfactory_tracker/tests/helper.rs | 1542 ++++++++--------- .../tokenfactory_tracker/tests/unit.rs | 16 +- 4 files changed, 986 insertions(+), 786 deletions(-) diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index cbedacbea..b5b97c9a7 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -1,7 +1,7 @@ use astroport::tokenfactory_tracker::{InstantiateMsg, SudoMsg}; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, StdResult}; +use cosmwasm_std::{Coin, DepsMut, Env, MessageInfo, Response, StdResult}; use osmosis_std::types::cosmos::auth::v1beta1::AuthQuerier; use crate::error::ContractError; @@ -28,13 +28,14 @@ pub fn instantiate( // TODO: We need to get the module account for TokenFactory so we don't try and // subtract from it when minting to an account - let accounts = AuthQuerier::new(&deps.querier).module_accounts()?; - // cosmos.auth.v1beta1.ModuleAccount + // This is a Stargate query + // let accounts = AuthQuerier::new(&deps.querier).module_accounts()?; + // type URL is + // /cosmos.auth.v1beta1.ModuleAccount Ok(Response::default() .add_attribute("action", "instantiate") - .add_attribute("contract", CONTRACT_NAME) - .add_attribute("accounts", format!("{:?}", accounts.accounts))) + .add_attribute("contract", CONTRACT_NAME)) } #[cfg_attr(not(feature = "library"), entry_point)] @@ -51,8 +52,18 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result { let config = CONFIG.load(deps.storage)?; + // TODO: Ensure the denom being sent is the tracked denom + // If this isn't checked, another token could be tracked with the same + // contract and that will skew the real numbers + if amount.denom != config.tracked_denom { + return Err(ContractError::InvalidDenom { + expected_denom: config.tracked_denom, + }); + } + // Temporary checks // If the token is minted directly to an address, we don't need to subtract + // as the sender is the module address if config.tokenfactory_module_address != from { BALANCES.update( deps.storage, @@ -64,8 +75,9 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result Result StdResult<_> { + Ok(balance.unwrap_or_default().checked_add(amount.amount)?) + }, + )?; } // TODO: Update total supply - // Sudo calls don't emit the attributes, so we need to emit them here + // No need to emit anything here Ok(Response::default()) } } } + +#[cfg(test)] +mod tests { + + use cosmwasm_std::{ + testing::{mock_dependencies, mock_env, mock_info}, + to_binary, Uint128, Uint64, + }; + + use crate::query::query; + + use super::*; + + pub const OWNER: &str = "owner"; + pub const MODULE_ADDRESS: &str = "tokenfactory_module"; + + pub const DENOM: &str = "factory/contract0/token"; + + // Basic operations for testing calculations + struct TestOperation { + from: String, + to: String, + amount: Uint128, + } + + #[test] + fn track_token_balances() { + let mut deps = mock_dependencies(); + let mut env = mock_env(); + let info = mock_info(OWNER, &[]); + + let operations = vec![ + TestOperation { + from: MODULE_ADDRESS.to_string(), + to: "user1".to_string(), + amount: Uint128::from(100u128), + }, + TestOperation { + from: "user1".to_string(), + to: "user2".to_string(), + amount: Uint128::from(50u128), + }, + TestOperation { + from: "user1".to_string(), + to: "user3".to_string(), + amount: Uint128::from(50u128), + }, + TestOperation { + from: "user2".to_string(), + to: "user3".to_string(), + amount: Uint128::from(50u128), + }, + ]; + + let expected_user1_balance = Uint128::zero(); + let expected_user2_balance = Uint128::zero(); + let expected_user3_balance = Uint128::from(100u128); + + instantiate( + deps.as_mut(), + env.clone(), + info, + astroport::tokenfactory_tracker::InstantiateMsg { + tracked_denom: DENOM.to_string(), + tokenfactory_module_address: MODULE_ADDRESS.to_string(), + // owner: OWNER.to_string(), + }, + ) + .unwrap(); + + for operation in operations { + sudo( + deps.as_mut(), + env.clone(), + astroport::tokenfactory_tracker::SudoMsg::TrackBeforeSend { + from: operation.from, + to: operation.to, + amount: Coin { + denom: DENOM.to_string(), + amount: operation.amount, + }, + }, + ) + .unwrap(); + } + + env.block.time = env.block.time.plus_seconds(10); + + let balance = query( + deps.as_ref(), + env.clone(), + astroport::tokenfactory_tracker::QueryMsg::BalanceAt { + address: "user1".to_string(), + timestamp: Uint64::from(env.block.time.seconds()), + }, + ) + .unwrap(); + assert_eq!(balance, to_binary(&expected_user1_balance).unwrap()); + + let balance = query( + deps.as_ref(), + env.clone(), + astroport::tokenfactory_tracker::QueryMsg::BalanceAt { + address: "user2".to_string(), + timestamp: Uint64::from(env.block.time.seconds()), + }, + ) + .unwrap(); + assert_eq!(balance, to_binary(&expected_user2_balance).unwrap()); + + let balance = query( + deps.as_ref(), + env.clone(), + astroport::tokenfactory_tracker::QueryMsg::BalanceAt { + address: "user3".to_string(), + timestamp: Uint64::from(env.block.time.seconds()), + }, + ) + .unwrap(); + assert_eq!(balance, to_binary(&expected_user3_balance).unwrap()); + } + + #[test] + fn no_track_other_token() { + let mut deps = mock_dependencies(); + let env = mock_env(); + let info = mock_info(OWNER, &[]); + + instantiate( + deps.as_mut(), + env.clone(), + info, + astroport::tokenfactory_tracker::InstantiateMsg { + tracked_denom: DENOM.to_string(), + tokenfactory_module_address: MODULE_ADDRESS.to_string(), + // owner: OWNER.to_string(), + }, + ) + .unwrap(); + + // The contract only tracks a specific denom, this should result in + // an error + let err = sudo( + deps.as_mut(), + env.clone(), + astroport::tokenfactory_tracker::SudoMsg::TrackBeforeSend { + from: MODULE_ADDRESS.to_string(), + to: "user1".to_string(), + amount: Coin { + denom: "OTHER_DENOM".to_string(), + amount: Uint128::from(100u128), + }, + }, + ) + .unwrap_err(); + + assert_eq!( + err, + ContractError::InvalidDenom { + expected_denom: DENOM.to_string() + } + ); + + // Verify that it was not tracked + let balance = query( + deps.as_ref(), + env.clone(), + astroport::tokenfactory_tracker::QueryMsg::BalanceAt { + address: "user1".to_string(), + timestamp: Uint64::from(env.block.time.seconds()), + }, + ) + .unwrap(); + assert_eq!(balance, to_binary(&Uint128::zero()).unwrap()); + } +} diff --git a/contracts/periphery/tokenfactory_tracker/src/error.rs b/contracts/periphery/tokenfactory_tracker/src/error.rs index fd96094a7..95bc4f1eb 100644 --- a/contracts/periphery/tokenfactory_tracker/src/error.rs +++ b/contracts/periphery/tokenfactory_tracker/src/error.rs @@ -9,4 +9,7 @@ pub enum ContractError { #[error("Invalid reply data")] InvalidReplyData {}, + + #[error("Invalid denom, expected {}", expected_denom)] + InvalidDenom { expected_denom: String }, } diff --git a/contracts/periphery/tokenfactory_tracker/tests/helper.rs b/contracts/periphery/tokenfactory_tracker/tests/helper.rs index 7a2c3ee53..4ca546394 100644 --- a/contracts/periphery/tokenfactory_tracker/tests/helper.rs +++ b/contracts/periphery/tokenfactory_tracker/tests/helper.rs @@ -1,771 +1,771 @@ -#![allow(dead_code)] -#![cfg(not(tarpaulin_include))] - -use std::collections::HashMap; -use std::error::Error; -use std::fmt::Display; -use std::str::FromStr; - -use anyhow::Result as AnyResult; -use cosmwasm_schema::serde::de::DeserializeOwned; -use cosmwasm_std::{ - coin, from_slice, to_binary, Addr, Coin, Decimal, Empty, StdError, StdResult, Uint128, -}; -use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg}; -use cw_multi_test::{App, AppResponse, Contract, ContractWrapper, Executor}; -use derivative::Derivative; -use itertools::Itertools; - -use astroport::asset::{native_asset_info, token_asset_info, Asset, AssetInfo, PairInfo}; -use astroport::factory::{PairConfig, PairType}; -use astroport::liquidity_manager::{Cw20HookMsg, ExecuteMsg}; -use astroport::liquidity_manager::{InstantiateMsg, QueryMsg}; -use astroport::pair::{Cw20HookMsg as PairCw20HookMsg, ExecuteMsg as PairExecuteMsg}; -use astroport::pair::{ - ReverseSimulationResponse, SimulationResponse, StablePoolParams, XYKPoolParams, -}; -use astroport::pair_concentrated::{ConcentratedPoolParams, QueryMsg as PairQueryMsg}; -use astroport::{factory, generator}; -use astroport_liquidity_manager::contract::{execute, instantiate, reply}; -use astroport_liquidity_manager::query::query; - -const NATIVE_TOKEN_PRECISION: u8 = 6; - -const INIT_BALANCE: u128 = 1_000_000_000_000; - -pub enum PoolParams { - Constant(XYKPoolParams), - Stable(StablePoolParams), - Concentrated(ConcentratedPoolParams), -} - -#[derive(Clone, Debug, PartialEq, Eq, Hash)] -pub enum TestCoin { - Cw20(String), - Cw20Precise(String, u8), - Native(String), -} - -impl TestCoin { - pub fn denom(&self) -> Option { - match self { - TestCoin::Native(denom) => Some(denom.clone()), - _ => None, - } - } - - pub fn cw20_init_data(&self) -> Option<(String, u8)> { - match self { - TestCoin::Cw20(name) => Some((name.clone(), 6u8)), - TestCoin::Cw20Precise(name, precision) => Some((name.clone(), *precision)), - _ => None, - } - } - - pub fn native(denom: &str) -> Self { - Self::Native(denom.to_string()) - } - - pub fn cw20(name: &str) -> Self { - Self::Cw20(name.to_string()) - } - - pub fn cw20precise(name: &str, precision: u8) -> Self { - Self::Cw20Precise(name.to_string(), precision) - } -} - -pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { - let mut test_coins: Vec = test_coins - .iter() - .filter_map(|test_coin| match test_coin { - TestCoin::Native(name) => { - let init_balance = INIT_BALANCE * 10u128.pow(NATIVE_TOKEN_PRECISION as u32); - Some(coin(init_balance, name)) - } - _ => None, - }) - .collect(); - test_coins.push(coin(INIT_BALANCE, "random-coin")); - - test_coins -} - -fn token_contract() -> Box> { - Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, - )) -} - -fn xyk_pair_contract() -> Box> { - Box::new( - ContractWrapper::new_with_empty( - astroport_pair::contract::execute, - astroport_pair::contract::instantiate, - astroport_pair::contract::query, - ) - .with_reply_empty(astroport_pair::contract::reply), - ) -} - -fn stable_pair_contract() -> Box> { - Box::new( - ContractWrapper::new_with_empty( - astroport_pair_stable::contract::execute, - astroport_pair_stable::contract::instantiate, - astroport_pair_stable::contract::query, - ) - .with_reply_empty(astroport_pair_stable::contract::reply), - ) -} - -fn coin_registry_contract() -> Box> { - Box::new(ContractWrapper::new_with_empty( - astroport_native_coin_registry::contract::execute, - astroport_native_coin_registry::contract::instantiate, - astroport_native_coin_registry::contract::query, - )) -} - -fn factory_contract() -> Box> { - Box::new( - ContractWrapper::new_with_empty( - astroport_factory::contract::execute, - astroport_factory::contract::instantiate, - astroport_factory::contract::query, - ) - .with_reply_empty(astroport_factory::contract::reply), - ) -} - -fn whitelist_contract() -> Box> { - Box::new(ContractWrapper::new_with_empty( - astroport_whitelist::contract::execute, - astroport_whitelist::contract::instantiate, - astroport_whitelist::contract::query, - )) -} - -fn generator_contract() -> Box> { - Box::new( - ContractWrapper::new_with_empty( - astroport_generator::contract::execute, - astroport_generator::contract::instantiate, - astroport_generator::contract::query, - ) - .with_reply_empty(astroport_generator::contract::reply), - ) -} - -fn manager_contract() -> Box> { - Box::new(ContractWrapper::new_with_empty(execute, instantiate, query).with_reply_empty(reply)) -} - -#[derive(Derivative)] -#[derivative(Debug)] -pub struct Helper { - #[derivative(Debug = "ignore")] - pub app: App, - pub owner: Addr, - pub assets: HashMap, - pub factory: Addr, - pub pair_addr: Addr, - pub lp_token: Addr, - pub fake_maker: Addr, - pub liquidity_manager: Addr, - pub generator: Addr, -} - -impl Helper { - pub fn new(owner: &Addr, test_coins: Vec, params: PoolParams) -> AnyResult { - let mut app = App::new(|router, _, storage| { - router - .bank - .init_balance(storage, owner, init_native_coins(&test_coins)) - .unwrap() - }); - - let mut asset_infos_vec: Vec<_> = test_coins - .clone() - .into_iter() - .filter_map(|coin| Some((coin.clone(), native_asset_info(coin.denom()?)))) - .collect(); - - let token_code_id = app.store_code(token_contract()); - - test_coins.into_iter().for_each(|coin| { - if let Some((name, decimals)) = coin.cw20_init_data() { - let token_addr = Self::init_token(&mut app, token_code_id, name, decimals, owner); - asset_infos_vec.push((coin, token_asset_info(token_addr))) - } - }); - - let factory_code_id = app.store_code(factory_contract()); - - let (pair_code_id, pair_type, inner_params); - match ¶ms { - PoolParams::Constant(inner) => { - pair_code_id = app.store_code(xyk_pair_contract()); - pair_type = PairType::Xyk {}; - inner_params = to_binary(inner).unwrap(); - } - PoolParams::Stable(inner) => { - pair_code_id = app.store_code(stable_pair_contract()); - pair_type = PairType::Stable {}; - inner_params = to_binary(inner).unwrap(); - } - PoolParams::Concentrated(_) => { - unimplemented!("Concentrated pool is not supported yet"); - // pair_code_id = app.store_code(pcl_pair_contract()); - // pair_type = PairType::Custom("concentrated".to_owned()); - // inner_params = to_binary(inner).unwrap(); - } - } - - let fake_maker = Addr::unchecked("fake_maker"); - - let coin_registry_id = app.store_code(coin_registry_contract()); - - let coin_registry_address = app - .instantiate_contract( - coin_registry_id, - owner.clone(), - &astroport::native_coin_registry::InstantiateMsg { - owner: owner.to_string(), - }, - &[], - "Coin registry", - None, - ) - .unwrap(); - - app.execute_contract( - owner.clone(), - coin_registry_address.clone(), - &astroport::native_coin_registry::ExecuteMsg::Add { - native_coins: vec![("uluna".to_owned(), 6), ("uusd".to_owned(), 6)], - }, - &[], - ) - .unwrap(); - let init_msg = astroport::factory::InstantiateMsg { - fee_address: Some(fake_maker.to_string()), - pair_configs: vec![PairConfig { - code_id: pair_code_id, - maker_fee_bps: 5000, - total_fee_bps: 30, - pair_type: pair_type.clone(), - is_disabled: false, - is_generator_disabled: false, - }], - token_code_id, - generator_address: None, - owner: owner.to_string(), - whitelist_code_id: 234u64, - coin_registry_address: coin_registry_address.to_string(), - }; - - let factory = app.instantiate_contract( - factory_code_id, - owner.clone(), - &init_msg, - &[], - "FACTORY", - None, - )?; - - let whitelist_code_id = app.store_code(whitelist_contract()); - let generator_code_id = app.store_code(generator_contract()); - let generator = app - .instantiate_contract( - generator_code_id, - owner.clone(), - &generator::InstantiateMsg { - owner: owner.to_string(), - factory: factory.to_string(), - generator_controller: None, - voting_escrow_delegation: None, - voting_escrow: None, - guardian: None, - astro_token: native_asset_info("astro".to_string()), - tokens_per_block: Default::default(), - start_block: Default::default(), - vesting_contract: "vesting".to_string(), - whitelist_code_id, - }, - &[], - "Generator", - None, - ) - .unwrap(); - - app.execute_contract( - owner.clone(), - factory.clone(), - &factory::ExecuteMsg::UpdateConfig { - token_code_id: None, - fee_address: None, - generator_address: Some(generator.to_string()), - whitelist_code_id: None, - coin_registry_address: None, - }, - &[], - ) - .unwrap(); - - let manager_code = app.store_code(manager_contract()); - let liquidity_manager = app - .instantiate_contract( - manager_code, - owner.clone(), - &InstantiateMsg { - astroport_factory: factory.to_string(), - }, - &[], - "Liquidity manager", - None, - ) - .unwrap(); - - let asset_infos = asset_infos_vec - .clone() - .into_iter() - .map(|(_, asset_info)| asset_info) - .collect_vec(); - let init_pair_msg = astroport::factory::ExecuteMsg::CreatePair { - pair_type, - asset_infos: asset_infos.clone(), - init_params: Some(inner_params), - }; - - app.execute_contract(owner.clone(), factory.clone(), &init_pair_msg, &[])?; - - let resp: PairInfo = app.wrap().query_wasm_smart( - &factory, - &astroport::factory::QueryMsg::Pair { asset_infos }, - )?; - - Ok(Self { - app, - owner: owner.clone(), - assets: asset_infos_vec.into_iter().collect(), - factory, - pair_addr: resp.contract_addr, - lp_token: resp.liquidity_token, - fake_maker, - liquidity_manager, - generator, - }) - } - - pub fn simulate_provide( - &self, - slippage_tolerance: Option, - assets: &[Asset], - ) -> AnyResult { - let pair_msg = PairExecuteMsg::ProvideLiquidity { - assets: assets.to_vec(), - slippage_tolerance, - auto_stake: None, - receiver: None, - }; - - self.app - .wrap() - .query_wasm_smart( - &self.liquidity_manager, - &QueryMsg::SimulateProvide { - pair_addr: self.pair_addr.to_string(), - pair_msg, - }, - ) - .map_err(Into::into) - } - - pub fn simulate_withdraw(&self, lp_tokens_amount: impl Into) -> AnyResult> { - self.app - .wrap() - .query_wasm_smart( - &self.liquidity_manager, - &QueryMsg::SimulateWithdraw { - pair_addr: self.pair_addr.to_string(), - lp_tokens: lp_tokens_amount.into(), - }, - ) - .map_err(Into::into) - } - - /// If min_lp_receive is Some provide is done via liquidity manager contract. - pub fn provide_liquidity( - &mut self, - sender: &Addr, - assets: &[Asset], - min_lp_receive: Option, - ) -> AnyResult { - self.provide_liquidity_with_slip_tolerance( - sender, - assets, - Some(f64_to_dec(0.5)), - min_lp_receive, - false, - None, - ) - } - - /// If min_lp_receive is Some provide is done via liquidity manager contract. - pub fn provide_liquidity_with_slip_tolerance( - &mut self, - sender: &Addr, - assets: &[Asset], - slippage_tolerance: Option, - min_lp_receive: Option, - auto_stake: bool, - receiver: Option, - ) -> AnyResult { - let msg = PairExecuteMsg::ProvideLiquidity { - assets: assets.to_vec(), - slippage_tolerance, - auto_stake: Some(auto_stake), - receiver, - }; - - if min_lp_receive.is_some() { - let funds = assets.mock_coins_sent( - &mut self.app, - sender, - &self.liquidity_manager, - SendType::Allowance, - ); - - let manager_msg = ExecuteMsg::ProvideLiquidity { - pair_addr: self.pair_addr.to_string(), - pair_msg: msg, - min_lp_to_receive: min_lp_receive, - }; - self.app.execute_contract( - sender.clone(), - self.liquidity_manager.clone(), - &manager_msg, - &funds, - ) - } else { - let funds = - assets.mock_coins_sent(&mut self.app, sender, &self.pair_addr, SendType::Allowance); - self.app - .execute_contract(sender.clone(), self.pair_addr.clone(), &msg, &funds) - } - } - - pub fn withdraw_liquidity( - &mut self, - sender: &Addr, - amount: u128, - min_assets: Option>, - ) -> AnyResult { - let pair_msg = PairCw20HookMsg::WithdrawLiquidity { assets: vec![] }; - let (contract, msg); - if let Some(min_assets_to_receive) = min_assets { - contract = self.liquidity_manager.to_string(); - msg = to_binary(&Cw20HookMsg::WithdrawLiquidity { - pair_msg, - min_assets_to_receive, - }) - .unwrap(); - } else { - contract = self.pair_addr.to_string(); - msg = to_binary(&pair_msg).unwrap(); - } - - let msg = Cw20ExecuteMsg::Send { - contract, - amount: Uint128::from(amount), - msg, - }; - - self.app - .execute_contract(sender.clone(), self.lp_token.clone(), &msg, &[]) - } - - pub fn swap( - &mut self, - sender: &Addr, - offer_asset: &Asset, - max_spread: Option, - ) -> AnyResult { - match &offer_asset.info { - AssetInfo::Token { contract_addr } => { - let msg = Cw20ExecuteMsg::Send { - contract: self.pair_addr.to_string(), - amount: offer_asset.amount, - msg: to_binary(&PairCw20HookMsg::Swap { - ask_asset_info: None, - belief_price: None, - max_spread, - to: None, - }) - .unwrap(), - }; - - self.app - .execute_contract(sender.clone(), contract_addr.clone(), &msg, &[]) - } - AssetInfo::NativeToken { .. } => { - let funds = offer_asset.mock_coin_sent( - &mut self.app, - sender, - &self.pair_addr, - SendType::None, - ); - - let msg = PairExecuteMsg::Swap { - offer_asset: offer_asset.clone(), - ask_asset_info: None, - belief_price: None, - max_spread, - to: None, - }; - - self.app - .execute_contract(sender.clone(), self.pair_addr.clone(), &msg, &funds) - } - } - } - - pub fn simulate_swap( - &self, - offer_asset: &Asset, - ask_asset_info: Option, - ) -> StdResult { - self.app.wrap().query_wasm_smart( - &self.pair_addr, - &PairQueryMsg::Simulation { - offer_asset: offer_asset.clone(), - ask_asset_info, - }, - ) - } - - pub fn simulate_reverse_swap( - &self, - ask_asset: &Asset, - offer_asset_info: Option, - ) -> StdResult { - self.app.wrap().query_wasm_smart( - &self.pair_addr, - &PairQueryMsg::ReverseSimulation { - ask_asset: ask_asset.clone(), - offer_asset_info, - }, - ) - } - - fn init_token( - app: &mut App, - token_code: u64, - name: String, - decimals: u8, - owner: &Addr, - ) -> Addr { - let init_balance = INIT_BALANCE * 10u128.pow(decimals as u32); - app.instantiate_contract( - token_code, - owner.clone(), - &astroport::token::InstantiateMsg { - symbol: name.to_string(), - name, - decimals, - initial_balances: vec![Cw20Coin { - address: owner.to_string(), - amount: Uint128::from(init_balance), - }], - mint: None, - marketing: None, - }, - &[], - "{name}_token", - None, - ) - .unwrap() - } - - pub fn token_balance(&self, token_addr: &Addr, user: &Addr) -> u128 { - let resp: BalanceResponse = self - .app - .wrap() - .query_wasm_smart( - token_addr, - &Cw20QueryMsg::Balance { - address: user.to_string(), - }, - ) - .unwrap(); - - resp.balance.u128() - } - - pub fn coin_balance(&self, coin: &TestCoin, user: &Addr) -> u128 { - match &self.assets[coin] { - AssetInfo::Token { contract_addr } => self.token_balance(contract_addr, user), - AssetInfo::NativeToken { denom } => self - .app - .wrap() - .query_balance(user, denom) - .unwrap() - .amount - .u128(), - } - } - - pub fn give_me_money(&mut self, assets: &[Asset], recipient: &Addr) { - let funds = - assets.mock_coins_sent(&mut self.app, &self.owner, recipient, SendType::Transfer); - - if !funds.is_empty() { - self.app - .send_tokens(self.owner.clone(), recipient.clone(), &funds) - .unwrap(); - } - } - - pub fn query_config(&self) -> StdResult - where - T: DeserializeOwned, - { - let binary = self - .app - .wrap() - .query_wasm_raw(&self.pair_addr, b"config")? - .ok_or_else(|| StdError::generic_err("Failed to find config in storage"))?; - from_slice(&binary) - } - - pub fn query_asset_balance_at( - &self, - asset_info: &AssetInfo, - block_height: u64, - ) -> StdResult> { - self.app.wrap().query_wasm_smart( - &self.pair_addr, - &PairQueryMsg::AssetBalanceAt { - asset_info: asset_info.clone(), - block_height: block_height.into(), - }, - ) - } - - pub fn query_staked_lp(&self, user: &Addr) -> StdResult { - self.app.wrap().query_wasm_smart( - &self.generator, - &generator::QueryMsg::Deposit { - lp_token: self.lp_token.to_string(), - user: user.to_string(), - }, - ) - } -} - -#[derive(Clone, Copy)] -pub enum SendType { - Allowance, - Transfer, - None, -} - -pub trait AssetExt { - fn mock_coin_sent( - &self, - app: &mut App, - user: &Addr, - spender: &Addr, - typ: SendType, - ) -> Vec; -} - -impl AssetExt for Asset { - fn mock_coin_sent( - &self, - app: &mut App, - user: &Addr, - spender: &Addr, - typ: SendType, - ) -> Vec { - let mut funds = vec![]; - match &self.info { - AssetInfo::Token { contract_addr } if !self.amount.is_zero() => { - let msg = match typ { - SendType::Allowance => Cw20ExecuteMsg::IncreaseAllowance { - spender: spender.to_string(), - amount: self.amount, - expires: None, - }, - SendType::Transfer => Cw20ExecuteMsg::Transfer { - recipient: spender.to_string(), - amount: self.amount, - }, - _ => unimplemented!(), - }; - app.execute_contract(user.clone(), contract_addr.clone(), &msg, &[]) - .unwrap(); - } - AssetInfo::NativeToken { denom } if !self.amount.is_zero() => { - funds = vec![coin(self.amount.u128(), denom)]; - } - _ => {} - } - - funds - } -} - -pub trait AssetsExt { - fn mock_coins_sent( - &self, - app: &mut App, - user: &Addr, - spender: &Addr, - typ: SendType, - ) -> Vec; -} - -impl AssetsExt for &[Asset] { - fn mock_coins_sent( - &self, - app: &mut App, - user: &Addr, - spender: &Addr, - typ: SendType, - ) -> Vec { - let mut funds = vec![]; - for asset in self.iter() { - funds.extend(asset.mock_coin_sent(app, user, spender, typ)); - } - funds - } -} - -pub trait AppExtension { - fn next_block(&mut self, time: u64); -} - -impl AppExtension for App { - fn next_block(&mut self, time: u64) { - self.update_block(|block| { - block.time = block.time.plus_seconds(time); - block.height += 1 - }); - } -} - -pub fn f64_to_dec(val: f64) -> T -where - T: FromStr, - T::Err: Error, -{ - T::from_str(&val.to_string()).unwrap() -} - -pub fn dec_to_f64(val: impl Display) -> f64 { - f64::from_str(&val.to_string()).unwrap() -} +// #![allow(dead_code)] +// #![cfg(not(tarpaulin_include))] + +// use std::collections::HashMap; +// use std::error::Error; +// use std::fmt::Display; +// use std::str::FromStr; + +// use anyhow::Result as AnyResult; +// use cosmwasm_schema::serde::de::DeserializeOwned; +// use cosmwasm_std::{ +// coin, from_slice, to_binary, Addr, Coin, Decimal, Empty, StdError, StdResult, Uint128, +// }; +// use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg}; +// use cw_multi_test::{App, AppResponse, Contract, ContractWrapper, Executor}; +// use derivative::Derivative; +// use itertools::Itertools; + +// use astroport::asset::{native_asset_info, token_asset_info, Asset, AssetInfo, PairInfo}; +// use astroport::factory::{PairConfig, PairType}; +// use astroport::liquidity_manager::{Cw20HookMsg, ExecuteMsg}; +// use astroport::liquidity_manager::{InstantiateMsg, QueryMsg}; +// use astroport::pair::{Cw20HookMsg as PairCw20HookMsg, ExecuteMsg as PairExecuteMsg}; +// use astroport::pair::{ +// ReverseSimulationResponse, SimulationResponse, StablePoolParams, XYKPoolParams, +// }; +// use astroport::pair_concentrated::{ConcentratedPoolParams, QueryMsg as PairQueryMsg}; +// use astroport::{factory, generator}; +// use astroport_liquidity_manager::contract::{execute, instantiate, reply}; +// use astroport_liquidity_manager::query::query; + +// const NATIVE_TOKEN_PRECISION: u8 = 6; + +// const INIT_BALANCE: u128 = 1_000_000_000_000; + +// pub enum PoolParams { +// Constant(XYKPoolParams), +// Stable(StablePoolParams), +// Concentrated(ConcentratedPoolParams), +// } + +// #[derive(Clone, Debug, PartialEq, Eq, Hash)] +// pub enum TestCoin { +// Cw20(String), +// Cw20Precise(String, u8), +// Native(String), +// } + +// impl TestCoin { +// pub fn denom(&self) -> Option { +// match self { +// TestCoin::Native(denom) => Some(denom.clone()), +// _ => None, +// } +// } + +// pub fn cw20_init_data(&self) -> Option<(String, u8)> { +// match self { +// TestCoin::Cw20(name) => Some((name.clone(), 6u8)), +// TestCoin::Cw20Precise(name, precision) => Some((name.clone(), *precision)), +// _ => None, +// } +// } + +// pub fn native(denom: &str) -> Self { +// Self::Native(denom.to_string()) +// } + +// pub fn cw20(name: &str) -> Self { +// Self::Cw20(name.to_string()) +// } + +// pub fn cw20precise(name: &str, precision: u8) -> Self { +// Self::Cw20Precise(name.to_string(), precision) +// } +// } + +// pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { +// let mut test_coins: Vec = test_coins +// .iter() +// .filter_map(|test_coin| match test_coin { +// TestCoin::Native(name) => { +// let init_balance = INIT_BALANCE * 10u128.pow(NATIVE_TOKEN_PRECISION as u32); +// Some(coin(init_balance, name)) +// } +// _ => None, +// }) +// .collect(); +// test_coins.push(coin(INIT_BALANCE, "random-coin")); + +// test_coins +// } + +// fn token_contract() -> Box> { +// Box::new(ContractWrapper::new_with_empty( +// astroport_token::contract::execute, +// astroport_token::contract::instantiate, +// astroport_token::contract::query, +// )) +// } + +// fn xyk_pair_contract() -> Box> { +// Box::new( +// ContractWrapper::new_with_empty( +// astroport_pair::contract::execute, +// astroport_pair::contract::instantiate, +// astroport_pair::contract::query, +// ) +// .with_reply_empty(astroport_pair::contract::reply), +// ) +// } + +// fn stable_pair_contract() -> Box> { +// Box::new( +// ContractWrapper::new_with_empty( +// astroport_pair_stable::contract::execute, +// astroport_pair_stable::contract::instantiate, +// astroport_pair_stable::contract::query, +// ) +// .with_reply_empty(astroport_pair_stable::contract::reply), +// ) +// } + +// fn coin_registry_contract() -> Box> { +// Box::new(ContractWrapper::new_with_empty( +// astroport_native_coin_registry::contract::execute, +// astroport_native_coin_registry::contract::instantiate, +// astroport_native_coin_registry::contract::query, +// )) +// } + +// fn factory_contract() -> Box> { +// Box::new( +// ContractWrapper::new_with_empty( +// astroport_factory::contract::execute, +// astroport_factory::contract::instantiate, +// astroport_factory::contract::query, +// ) +// .with_reply_empty(astroport_factory::contract::reply), +// ) +// } + +// fn whitelist_contract() -> Box> { +// Box::new(ContractWrapper::new_with_empty( +// astroport_whitelist::contract::execute, +// astroport_whitelist::contract::instantiate, +// astroport_whitelist::contract::query, +// )) +// } + +// fn generator_contract() -> Box> { +// Box::new( +// ContractWrapper::new_with_empty( +// astroport_generator::contract::execute, +// astroport_generator::contract::instantiate, +// astroport_generator::contract::query, +// ) +// .with_reply_empty(astroport_generator::contract::reply), +// ) +// } + +// fn manager_contract() -> Box> { +// Box::new(ContractWrapper::new_with_empty(execute, instantiate, query).with_reply_empty(reply)) +// } + +// #[derive(Derivative)] +// #[derivative(Debug)] +// pub struct Helper { +// #[derivative(Debug = "ignore")] +// pub app: App, +// pub owner: Addr, +// pub assets: HashMap, +// pub factory: Addr, +// pub pair_addr: Addr, +// pub lp_token: Addr, +// pub fake_maker: Addr, +// pub liquidity_manager: Addr, +// pub generator: Addr, +// } + +// impl Helper { +// pub fn new(owner: &Addr, test_coins: Vec, params: PoolParams) -> AnyResult { +// let mut app = App::new(|router, _, storage| { +// router +// .bank +// .init_balance(storage, owner, init_native_coins(&test_coins)) +// .unwrap() +// }); + +// let mut asset_infos_vec: Vec<_> = test_coins +// .clone() +// .into_iter() +// .filter_map(|coin| Some((coin.clone(), native_asset_info(coin.denom()?)))) +// .collect(); + +// let token_code_id = app.store_code(token_contract()); + +// test_coins.into_iter().for_each(|coin| { +// if let Some((name, decimals)) = coin.cw20_init_data() { +// let token_addr = Self::init_token(&mut app, token_code_id, name, decimals, owner); +// asset_infos_vec.push((coin, token_asset_info(token_addr))) +// } +// }); + +// let factory_code_id = app.store_code(factory_contract()); + +// let (pair_code_id, pair_type, inner_params); +// match ¶ms { +// PoolParams::Constant(inner) => { +// pair_code_id = app.store_code(xyk_pair_contract()); +// pair_type = PairType::Xyk {}; +// inner_params = to_binary(inner).unwrap(); +// } +// PoolParams::Stable(inner) => { +// pair_code_id = app.store_code(stable_pair_contract()); +// pair_type = PairType::Stable {}; +// inner_params = to_binary(inner).unwrap(); +// } +// PoolParams::Concentrated(_) => { +// unimplemented!("Concentrated pool is not supported yet"); +// // pair_code_id = app.store_code(pcl_pair_contract()); +// // pair_type = PairType::Custom("concentrated".to_owned()); +// // inner_params = to_binary(inner).unwrap(); +// } +// } + +// let fake_maker = Addr::unchecked("fake_maker"); + +// let coin_registry_id = app.store_code(coin_registry_contract()); + +// let coin_registry_address = app +// .instantiate_contract( +// coin_registry_id, +// owner.clone(), +// &astroport::native_coin_registry::InstantiateMsg { +// owner: owner.to_string(), +// }, +// &[], +// "Coin registry", +// None, +// ) +// .unwrap(); + +// app.execute_contract( +// owner.clone(), +// coin_registry_address.clone(), +// &astroport::native_coin_registry::ExecuteMsg::Add { +// native_coins: vec![("uluna".to_owned(), 6), ("uusd".to_owned(), 6)], +// }, +// &[], +// ) +// .unwrap(); +// let init_msg = astroport::factory::InstantiateMsg { +// fee_address: Some(fake_maker.to_string()), +// pair_configs: vec![PairConfig { +// code_id: pair_code_id, +// maker_fee_bps: 5000, +// total_fee_bps: 30, +// pair_type: pair_type.clone(), +// is_disabled: false, +// is_generator_disabled: false, +// }], +// token_code_id, +// generator_address: None, +// owner: owner.to_string(), +// whitelist_code_id: 234u64, +// coin_registry_address: coin_registry_address.to_string(), +// }; + +// let factory = app.instantiate_contract( +// factory_code_id, +// owner.clone(), +// &init_msg, +// &[], +// "FACTORY", +// None, +// )?; + +// let whitelist_code_id = app.store_code(whitelist_contract()); +// let generator_code_id = app.store_code(generator_contract()); +// let generator = app +// .instantiate_contract( +// generator_code_id, +// owner.clone(), +// &generator::InstantiateMsg { +// owner: owner.to_string(), +// factory: factory.to_string(), +// generator_controller: None, +// voting_escrow_delegation: None, +// voting_escrow: None, +// guardian: None, +// astro_token: native_asset_info("astro".to_string()), +// tokens_per_block: Default::default(), +// start_block: Default::default(), +// vesting_contract: "vesting".to_string(), +// whitelist_code_id, +// }, +// &[], +// "Generator", +// None, +// ) +// .unwrap(); + +// app.execute_contract( +// owner.clone(), +// factory.clone(), +// &factory::ExecuteMsg::UpdateConfig { +// token_code_id: None, +// fee_address: None, +// generator_address: Some(generator.to_string()), +// whitelist_code_id: None, +// coin_registry_address: None, +// }, +// &[], +// ) +// .unwrap(); + +// let manager_code = app.store_code(manager_contract()); +// let liquidity_manager = app +// .instantiate_contract( +// manager_code, +// owner.clone(), +// &InstantiateMsg { +// astroport_factory: factory.to_string(), +// }, +// &[], +// "Liquidity manager", +// None, +// ) +// .unwrap(); + +// let asset_infos = asset_infos_vec +// .clone() +// .into_iter() +// .map(|(_, asset_info)| asset_info) +// .collect_vec(); +// let init_pair_msg = astroport::factory::ExecuteMsg::CreatePair { +// pair_type, +// asset_infos: asset_infos.clone(), +// init_params: Some(inner_params), +// }; + +// app.execute_contract(owner.clone(), factory.clone(), &init_pair_msg, &[])?; + +// let resp: PairInfo = app.wrap().query_wasm_smart( +// &factory, +// &astroport::factory::QueryMsg::Pair { asset_infos }, +// )?; + +// Ok(Self { +// app, +// owner: owner.clone(), +// assets: asset_infos_vec.into_iter().collect(), +// factory, +// pair_addr: resp.contract_addr, +// lp_token: resp.liquidity_token, +// fake_maker, +// liquidity_manager, +// generator, +// }) +// } + +// pub fn simulate_provide( +// &self, +// slippage_tolerance: Option, +// assets: &[Asset], +// ) -> AnyResult { +// let pair_msg = PairExecuteMsg::ProvideLiquidity { +// assets: assets.to_vec(), +// slippage_tolerance, +// auto_stake: None, +// receiver: None, +// }; + +// self.app +// .wrap() +// .query_wasm_smart( +// &self.liquidity_manager, +// &QueryMsg::SimulateProvide { +// pair_addr: self.pair_addr.to_string(), +// pair_msg, +// }, +// ) +// .map_err(Into::into) +// } + +// pub fn simulate_withdraw(&self, lp_tokens_amount: impl Into) -> AnyResult> { +// self.app +// .wrap() +// .query_wasm_smart( +// &self.liquidity_manager, +// &QueryMsg::SimulateWithdraw { +// pair_addr: self.pair_addr.to_string(), +// lp_tokens: lp_tokens_amount.into(), +// }, +// ) +// .map_err(Into::into) +// } + +// /// If min_lp_receive is Some provide is done via liquidity manager contract. +// pub fn provide_liquidity( +// &mut self, +// sender: &Addr, +// assets: &[Asset], +// min_lp_receive: Option, +// ) -> AnyResult { +// self.provide_liquidity_with_slip_tolerance( +// sender, +// assets, +// Some(f64_to_dec(0.5)), +// min_lp_receive, +// false, +// None, +// ) +// } + +// /// If min_lp_receive is Some provide is done via liquidity manager contract. +// pub fn provide_liquidity_with_slip_tolerance( +// &mut self, +// sender: &Addr, +// assets: &[Asset], +// slippage_tolerance: Option, +// min_lp_receive: Option, +// auto_stake: bool, +// receiver: Option, +// ) -> AnyResult { +// let msg = PairExecuteMsg::ProvideLiquidity { +// assets: assets.to_vec(), +// slippage_tolerance, +// auto_stake: Some(auto_stake), +// receiver, +// }; + +// if min_lp_receive.is_some() { +// let funds = assets.mock_coins_sent( +// &mut self.app, +// sender, +// &self.liquidity_manager, +// SendType::Allowance, +// ); + +// let manager_msg = ExecuteMsg::ProvideLiquidity { +// pair_addr: self.pair_addr.to_string(), +// pair_msg: msg, +// min_lp_to_receive: min_lp_receive, +// }; +// self.app.execute_contract( +// sender.clone(), +// self.liquidity_manager.clone(), +// &manager_msg, +// &funds, +// ) +// } else { +// let funds = +// assets.mock_coins_sent(&mut self.app, sender, &self.pair_addr, SendType::Allowance); +// self.app +// .execute_contract(sender.clone(), self.pair_addr.clone(), &msg, &funds) +// } +// } + +// pub fn withdraw_liquidity( +// &mut self, +// sender: &Addr, +// amount: u128, +// min_assets: Option>, +// ) -> AnyResult { +// let pair_msg = PairCw20HookMsg::WithdrawLiquidity { assets: vec![] }; +// let (contract, msg); +// if let Some(min_assets_to_receive) = min_assets { +// contract = self.liquidity_manager.to_string(); +// msg = to_binary(&Cw20HookMsg::WithdrawLiquidity { +// pair_msg, +// min_assets_to_receive, +// }) +// .unwrap(); +// } else { +// contract = self.pair_addr.to_string(); +// msg = to_binary(&pair_msg).unwrap(); +// } + +// let msg = Cw20ExecuteMsg::Send { +// contract, +// amount: Uint128::from(amount), +// msg, +// }; + +// self.app +// .execute_contract(sender.clone(), self.lp_token.clone(), &msg, &[]) +// } + +// pub fn swap( +// &mut self, +// sender: &Addr, +// offer_asset: &Asset, +// max_spread: Option, +// ) -> AnyResult { +// match &offer_asset.info { +// AssetInfo::Token { contract_addr } => { +// let msg = Cw20ExecuteMsg::Send { +// contract: self.pair_addr.to_string(), +// amount: offer_asset.amount, +// msg: to_binary(&PairCw20HookMsg::Swap { +// ask_asset_info: None, +// belief_price: None, +// max_spread, +// to: None, +// }) +// .unwrap(), +// }; + +// self.app +// .execute_contract(sender.clone(), contract_addr.clone(), &msg, &[]) +// } +// AssetInfo::NativeToken { .. } => { +// let funds = offer_asset.mock_coin_sent( +// &mut self.app, +// sender, +// &self.pair_addr, +// SendType::None, +// ); + +// let msg = PairExecuteMsg::Swap { +// offer_asset: offer_asset.clone(), +// ask_asset_info: None, +// belief_price: None, +// max_spread, +// to: None, +// }; + +// self.app +// .execute_contract(sender.clone(), self.pair_addr.clone(), &msg, &funds) +// } +// } +// } + +// pub fn simulate_swap( +// &self, +// offer_asset: &Asset, +// ask_asset_info: Option, +// ) -> StdResult { +// self.app.wrap().query_wasm_smart( +// &self.pair_addr, +// &PairQueryMsg::Simulation { +// offer_asset: offer_asset.clone(), +// ask_asset_info, +// }, +// ) +// } + +// pub fn simulate_reverse_swap( +// &self, +// ask_asset: &Asset, +// offer_asset_info: Option, +// ) -> StdResult { +// self.app.wrap().query_wasm_smart( +// &self.pair_addr, +// &PairQueryMsg::ReverseSimulation { +// ask_asset: ask_asset.clone(), +// offer_asset_info, +// }, +// ) +// } + +// fn init_token( +// app: &mut App, +// token_code: u64, +// name: String, +// decimals: u8, +// owner: &Addr, +// ) -> Addr { +// let init_balance = INIT_BALANCE * 10u128.pow(decimals as u32); +// app.instantiate_contract( +// token_code, +// owner.clone(), +// &astroport::token::InstantiateMsg { +// symbol: name.to_string(), +// name, +// decimals, +// initial_balances: vec![Cw20Coin { +// address: owner.to_string(), +// amount: Uint128::from(init_balance), +// }], +// mint: None, +// marketing: None, +// }, +// &[], +// "{name}_token", +// None, +// ) +// .unwrap() +// } + +// pub fn token_balance(&self, token_addr: &Addr, user: &Addr) -> u128 { +// let resp: BalanceResponse = self +// .app +// .wrap() +// .query_wasm_smart( +// token_addr, +// &Cw20QueryMsg::Balance { +// address: user.to_string(), +// }, +// ) +// .unwrap(); + +// resp.balance.u128() +// } + +// pub fn coin_balance(&self, coin: &TestCoin, user: &Addr) -> u128 { +// match &self.assets[coin] { +// AssetInfo::Token { contract_addr } => self.token_balance(contract_addr, user), +// AssetInfo::NativeToken { denom } => self +// .app +// .wrap() +// .query_balance(user, denom) +// .unwrap() +// .amount +// .u128(), +// } +// } + +// pub fn give_me_money(&mut self, assets: &[Asset], recipient: &Addr) { +// let funds = +// assets.mock_coins_sent(&mut self.app, &self.owner, recipient, SendType::Transfer); + +// if !funds.is_empty() { +// self.app +// .send_tokens(self.owner.clone(), recipient.clone(), &funds) +// .unwrap(); +// } +// } + +// pub fn query_config(&self) -> StdResult +// where +// T: DeserializeOwned, +// { +// let binary = self +// .app +// .wrap() +// .query_wasm_raw(&self.pair_addr, b"config")? +// .ok_or_else(|| StdError::generic_err("Failed to find config in storage"))?; +// from_slice(&binary) +// } + +// pub fn query_asset_balance_at( +// &self, +// asset_info: &AssetInfo, +// block_height: u64, +// ) -> StdResult> { +// self.app.wrap().query_wasm_smart( +// &self.pair_addr, +// &PairQueryMsg::AssetBalanceAt { +// asset_info: asset_info.clone(), +// block_height: block_height.into(), +// }, +// ) +// } + +// pub fn query_staked_lp(&self, user: &Addr) -> StdResult { +// self.app.wrap().query_wasm_smart( +// &self.generator, +// &generator::QueryMsg::Deposit { +// lp_token: self.lp_token.to_string(), +// user: user.to_string(), +// }, +// ) +// } +// } + +// #[derive(Clone, Copy)] +// pub enum SendType { +// Allowance, +// Transfer, +// None, +// } + +// pub trait AssetExt { +// fn mock_coin_sent( +// &self, +// app: &mut App, +// user: &Addr, +// spender: &Addr, +// typ: SendType, +// ) -> Vec; +// } + +// impl AssetExt for Asset { +// fn mock_coin_sent( +// &self, +// app: &mut App, +// user: &Addr, +// spender: &Addr, +// typ: SendType, +// ) -> Vec { +// let mut funds = vec![]; +// match &self.info { +// AssetInfo::Token { contract_addr } if !self.amount.is_zero() => { +// let msg = match typ { +// SendType::Allowance => Cw20ExecuteMsg::IncreaseAllowance { +// spender: spender.to_string(), +// amount: self.amount, +// expires: None, +// }, +// SendType::Transfer => Cw20ExecuteMsg::Transfer { +// recipient: spender.to_string(), +// amount: self.amount, +// }, +// _ => unimplemented!(), +// }; +// app.execute_contract(user.clone(), contract_addr.clone(), &msg, &[]) +// .unwrap(); +// } +// AssetInfo::NativeToken { denom } if !self.amount.is_zero() => { +// funds = vec![coin(self.amount.u128(), denom)]; +// } +// _ => {} +// } + +// funds +// } +// } + +// pub trait AssetsExt { +// fn mock_coins_sent( +// &self, +// app: &mut App, +// user: &Addr, +// spender: &Addr, +// typ: SendType, +// ) -> Vec; +// } + +// impl AssetsExt for &[Asset] { +// fn mock_coins_sent( +// &self, +// app: &mut App, +// user: &Addr, +// spender: &Addr, +// typ: SendType, +// ) -> Vec { +// let mut funds = vec![]; +// for asset in self.iter() { +// funds.extend(asset.mock_coin_sent(app, user, spender, typ)); +// } +// funds +// } +// } + +// pub trait AppExtension { +// fn next_block(&mut self, time: u64); +// } + +// impl AppExtension for App { +// fn next_block(&mut self, time: u64) { +// self.update_block(|block| { +// block.time = block.time.plus_seconds(time); +// block.height += 1 +// }); +// } +// } + +// pub fn f64_to_dec(val: f64) -> T +// where +// T: FromStr, +// T::Err: Error, +// { +// T::from_str(&val.to_string()).unwrap() +// } + +// pub fn dec_to_f64(val: impl Display) -> f64 { +// f64::from_str(&val.to_string()).unwrap() +// } diff --git a/contracts/periphery/tokenfactory_tracker/tests/unit.rs b/contracts/periphery/tokenfactory_tracker/tests/unit.rs index 0471521c1..6aaee479d 100644 --- a/contracts/periphery/tokenfactory_tracker/tests/unit.rs +++ b/contracts/periphery/tokenfactory_tracker/tests/unit.rs @@ -1,10 +1,10 @@ -#![cfg(not(tarpaulin_include))] -use cosmwasm_std::testing::{mock_dependencies, mock_env}; -use cosmwasm_std::{Reply, SubMsgResponse, SubMsgResult}; +// #![cfg(not(tarpaulin_include))] +// use cosmwasm_std::testing::{mock_dependencies, mock_env}; +// use cosmwasm_std::{Reply, SubMsgResponse, SubMsgResult}; -use astroport_liquidity_manager::contract::reply; -use astroport_liquidity_manager::error::ContractError; -use astroport_liquidity_manager::state::{ActionParams, ReplyData, REPLY_DATA}; +// use astroport_liquidity_manager::contract::reply; +// use astroport_liquidity_manager::error::ContractError; +// use astroport_liquidity_manager::state::{ActionParams, ReplyData, REPLY_DATA}; -#[test] -fn test_tracking() {} +// #[test] +// fn test_tracking() {} From 0a9aefd4beb7a55d63aa77ad37b75f02cadb20ae Mon Sep 17 00:00:00 2001 From: Donovan Solms <4567303+donovansolms@users.noreply.github.com> Date: Tue, 31 Oct 2023 12:07:27 +0200 Subject: [PATCH 06/84] feat(tokenfactory_tracker): Add supply tracking with tests --- Cargo.lock | 40 +- .../periphery/tokenfactory_tracker/Cargo.toml | 11 +- .../periphery/tokenfactory_tracker/README.md | 150 +--- .../examples/tokenfactory_tracker_schema.rs | 3 +- .../tokenfactory_tracker/src/contract.rs | 132 ++- .../tokenfactory_tracker/src/error.rs | 4 - .../tokenfactory_tracker/src/query.rs | 47 +- .../tokenfactory_tracker/src/state.rs | 48 +- .../tokenfactory_tracker/tests/helper.rs | 771 ------------------ .../tests/liquidity_manager_integration.rs | 8 - .../tokenfactory_tracker/tests/unit.rs | 10 - .../astroport/src/tokenfactory_tracker.rs | 28 +- 12 files changed, 185 insertions(+), 1067 deletions(-) delete mode 100644 contracts/periphery/tokenfactory_tracker/tests/helper.rs delete mode 100644 contracts/periphery/tokenfactory_tracker/tests/liquidity_manager_integration.rs delete mode 100644 contracts/periphery/tokenfactory_tracker/tests/unit.rs diff --git a/Cargo.lock b/Cargo.lock index 72a579938..239457d89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -588,7 +588,7 @@ dependencies = [ "cw2 0.15.1", "derivative", "itertools 0.11.0", - "osmosis-std 0.17.0-rc0", + "osmosis-std", "protobuf 3.2.0", "thiserror", ] @@ -610,16 +610,11 @@ dependencies = [ name = "astroport-tokenfactory-tracker" version = "1.0.0" dependencies = [ - "anyhow", "astroport", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", "cw-storage-plus 1.1.0", - "derivative", - "itertools 0.10.5", - "osmosis-std 0.20.1", - "serde_json 1.0.107", + "cw2 1.1.1", "thiserror", ] @@ -2070,23 +2065,7 @@ checksum = "c0b022b748710ecdf1adc6a124c3bef29f17ef05e7fa1260a08889d1d53f9cc5" dependencies = [ "chrono", "cosmwasm-std", - "osmosis-std-derive 0.16.2", - "prost 0.11.9", - "prost-types", - "schemars", - "serde 1.0.188", - "serde-cw-value", -] - -[[package]] -name = "osmosis-std" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d7aa053bc3fad557ac90a0377688b400c395e2537f0f1de3293a15cad2e970" -dependencies = [ - "chrono", - "cosmwasm-std", - "osmosis-std-derive 0.20.1", + "osmosis-std-derive", "prost 0.11.9", "prost-types", "schemars", @@ -2107,19 +2086,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "osmosis-std-derive" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ebdfd1bc8ed04db596e110c6baa9b174b04f6ed1ec22c666ddc5cb3fa91bd7" -dependencies = [ - "itertools 0.10.5", - "proc-macro2", - "prost-types", - "quote", - "syn 1.0.109", -] - [[package]] name = "parking_lot" version = "0.12.1" diff --git a/contracts/periphery/tokenfactory_tracker/Cargo.toml b/contracts/periphery/tokenfactory_tracker/Cargo.toml index 166e445e0..f8e66738c 100644 --- a/contracts/periphery/tokenfactory_tracker/Cargo.toml +++ b/contracts/periphery/tokenfactory_tracker/Cargo.toml @@ -10,16 +10,9 @@ library = [] crate-type = ["cdylib", "rlib"] [dependencies] -osmosis-std = "0.20.1" +cw2 = "1.1" cosmwasm-std = "1.1" -cosmwasm-schema = "1.1" cw-storage-plus = "1.0" +cosmwasm-schema = "1.1" thiserror = "1.0" astroport = { path = "../../../packages/astroport", version = "3" } - -[dev-dependencies] -cw-multi-test = "0.16.4" -serde_json = "1.0.96" -anyhow = "1" -derivative = "2.2" -itertools = "0.10" diff --git a/contracts/periphery/tokenfactory_tracker/README.md b/contracts/periphery/tokenfactory_tracker/README.md index 54e1a5589..8c982e450 100644 --- a/contracts/periphery/tokenfactory_tracker/README.md +++ b/contracts/periphery/tokenfactory_tracker/README.md @@ -1,158 +1,70 @@ # Astroport TokenFactory Tracker -TODO: Add README - Tracks balances of TokenFactory token holders using timestamps --- ## InstantiateMsg -Initializes the contract with the Astroport factory contract address. +Initializes the contract with the TokenFactory denom to track as well as the +TokenFactory module address. -```json -{ - "astroport_factory": "wasm1..." -} -``` - -## ExecuteMsg +You can find the module address by using -### `receive` - -CW20 receive msg. Handles only withdraw messages which should come from Astroport LP tokens. - -```json -{ - "receive": { - "sender": "wasm...", - "amount": "123", - "msg": "" - } -} +```shell +wasmd query auth module-account tokenfactory ``` -where is a base64 encoded json string of the following format: +Instantiate message ```json { - "withdraw_liquidity": { - "pair_msg": { - "withdraw_liquidity": {} - }, - "min_assets_to_receive": [ - { - "info": { - "native_token": { - "denom": "uusd" - } - }, - "amount": "100000" - }, - { - "info": { - "token": { - "contract_addr": "wasm1...cw20address" - } - }, - "amount": "100000" - } - ] - } + "tracked_denom": "factory/creator/denom", + "tokenfactory_module_address": "wasm19ejy8n9qsectrf4semdp9cpknflld0j6el50hx" } ``` -`min_assets_to_receive` enforces after-withdraw check that the user receives at least the specified amount of assets. +Once the contract is instantiated it will only track the denom specified. +Attach this contract to TokenFactory (only admin can do this) -### `provide_liquidity` +```shell +wasmd tx tokenfactory set-beforesend-hook factory/creator/denom wasm1trackingcontract +``` -Provides liquidity through Liquidity Manager with slippage limit enforcement. Handles XYK pair imbalanced provide and -returns excess assets to the user. +## ExecuteMsg -```json -{ - "provide_liquidity": { - "pair_addr": "wasm1...", - "pair_msg": { - "provide_liquidity": { - "assets": [ - { - "info": { - "native_token": { - "denom": "uusd" - } - }, - "amount": "100000" - }, - { - "info": { - "token": { - "contract_addr": "wasm1...cw20address" - } - }, - "amount": "100000" - } - ], - "slippage_tolerance": "0.02", - "auto_stake": true, - "receiver": "wasm1...addr" - } - }, - "min_lp_to_receive": "1000" - } -} -``` +This contract has no executable messages -`pair_msg` is equal to original Astroport provide message for all pools. `min_lp_to_receive` enforces after-provide check that the user receives at least the specified amount of LP tokens. ## QueryMsg -### `simulate` - -Simulates liquidity provide or withdraw. +### `balance_at` -Provide simulation example: +Query the balance of an address at a given timestamp in seconds. +If timestamp is not set, it will return the value at the current timestamp. ```json { - "simulate_provide": { - "pair_addr": "wasm1...addr", - "pair_msg": { - "provide_liquidity": { - "assets": [ - { - "info": { - "native_token": { - "denom": "uusd" - } - }, - "amount": "100000" - }, - { - "info": { - "token": { - "contract_addr": "wasm1...cw20address" - } - }, - "amount": "100000" - } - ], - "slippage_tolerance": "0.02", - "auto_stake": true, - "receiver": "wasm1...addr" - } - } + "balance_at": { + "address": "wasm1...addr", + "timestamp": "1698745413" } } ``` -Withdraw simulation example: +### `total_supply_at` + +Query the total supply at a given timestamp in seconds. +If timestamp is not set, it will return the value at the current timestamp. ```json { - "simulate_withdraw": { - "pair_addr": "wasm1...addr", - "lp_tokens": "1000" + "total_supply_at": { + "timestamp": "1698745413" } } ``` + +## MigrateMsg + +This contract has no migrations \ No newline at end of file diff --git a/contracts/periphery/tokenfactory_tracker/examples/tokenfactory_tracker_schema.rs b/contracts/periphery/tokenfactory_tracker/examples/tokenfactory_tracker_schema.rs index 37bab6273..cc127601b 100644 --- a/contracts/periphery/tokenfactory_tracker/examples/tokenfactory_tracker_schema.rs +++ b/contracts/periphery/tokenfactory_tracker/examples/tokenfactory_tracker_schema.rs @@ -1,12 +1,11 @@ use cosmwasm_schema::write_api; -use astroport::tokenfactory_tracker::{ExecuteMsg, InstantiateMsg, QueryMsg, SudoMsg}; +use astroport::tokenfactory_tracker::{InstantiateMsg, QueryMsg, SudoMsg}; fn main() { write_api! { instantiate: InstantiateMsg, query: QueryMsg, - execute: ExecuteMsg, sudo: SudoMsg, } } diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index b5b97c9a7..a2cb7f0da 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -1,13 +1,14 @@ -use astroport::tokenfactory_tracker::{InstantiateMsg, SudoMsg}; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{Coin, DepsMut, Env, MessageInfo, Response, StdResult}; -use osmosis_std::types::cosmos::auth::v1beta1::AuthQuerier; +use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, StdResult}; +use cw2::set_contract_version; + +use astroport::tokenfactory_tracker::{InstantiateMsg, SudoMsg}; use crate::error::ContractError; -use crate::state::{Config, BALANCES, CONFIG}; +use crate::state::{Config, BALANCES, CONFIG, TOTAL_SUPPLY_HISTORY}; -const CONTRACT_NAME: &str = "astroport-tokenfactory-tracker"; +const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); #[cfg_attr(not(feature = "library"), entry_point)] @@ -17,25 +18,28 @@ pub fn instantiate( _info: MessageInfo, msg: InstantiateMsg, ) -> Result { - CONFIG.save( - deps.storage, - &Config { - // Temporary save the module address until we can fetch on init - tokenfactory_module_address: msg.tokenfactory_module_address, - tracked_denom: msg.tracked_denom, - }, - )?; - - // TODO: We need to get the module account for TokenFactory so we don't try and - // subtract from it when minting to an account - // This is a Stargate query + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + + // TODO: There is a Stargate query that can be used to get the all the module + // addresses. Need to confirm that this will actually work on Neutron // let accounts = AuthQuerier::new(&deps.querier).module_accounts()?; - // type URL is - // /cosmos.auth.v1beta1.ModuleAccount + // type URL is /cosmos.auth.v1beta1.ModuleAccount + + let config = Config { + tracked_denom: msg.tracked_denom.clone(), + // Temporary save the module address until we can fetch on init + tokenfactory_module_address: msg.tokenfactory_module_address, + }; + CONFIG.save(deps.storage, &config)?; Ok(Response::default() .add_attribute("action", "instantiate") - .add_attribute("contract", CONTRACT_NAME)) + .add_attribute("contract", CONTRACT_NAME) + .add_attribute("tracked_denom", config.tracked_denom) + .add_attribute( + "tokenfactory_module_address", + config.tokenfactory_module_address, + )) } #[cfg_attr(not(feature = "library"), entry_point)] @@ -43,16 +47,14 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result Ok(Response::default()), // TrackBeforeSend is called before a send - if an error is returned it will // be ignored and the send will continue // Minting a token directly to an address is also tracked - // TODO: Check if gas is charged for this, I think gas is charged for this SudoMsg::TrackBeforeSend { from, to, amount } => { let config = CONFIG.load(deps.storage)?; - // TODO: Ensure the denom being sent is the tracked denom + // Ensure the denom being sent is the tracked denom // If this isn't checked, another token could be tracked with the same // contract and that will skew the real numbers if amount.denom != config.tracked_denom { @@ -73,6 +75,14 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result StdResult<_> { + Ok(balance.unwrap_or_default().checked_add(amount.amount)?) + }, + )?; } // When burning tokens, the receiver is the token factory module address @@ -88,19 +98,15 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result StdResult<_> { - Ok(balance.unwrap_or_default().checked_add(amount.amount)?) + Ok(balance.unwrap_or_default().checked_sub(amount.amount)?) }, )?; } - // TODO: Update total supply - - // No need to emit anything here Ok(Response::default()) } } @@ -111,7 +117,7 @@ mod tests { use cosmwasm_std::{ testing::{mock_dependencies, mock_env, mock_info}, - to_binary, Uint128, Uint64, + to_binary, Coin, Uint128, Uint64, }; use crate::query::query; @@ -119,9 +125,8 @@ mod tests { use super::*; pub const OWNER: &str = "owner"; - pub const MODULE_ADDRESS: &str = "tokenfactory_module"; - pub const DENOM: &str = "factory/contract0/token"; + pub const MODULE_ADDRESS: &str = "tokenfactory_module"; // Basic operations for testing calculations struct TestOperation { @@ -137,6 +142,7 @@ mod tests { let info = mock_info(OWNER, &[]); let operations = vec![ + // Simulate a mint TestOperation { from: MODULE_ADDRESS.to_string(), to: "user1".to_string(), @@ -157,11 +163,25 @@ mod tests { to: "user3".to_string(), amount: Uint128::from(50u128), }, + // Simulate a mint + TestOperation { + from: MODULE_ADDRESS.to_string(), + to: "user4".to_string(), + amount: Uint128::from(100u128), + }, + // Simulate a burn + TestOperation { + from: "user4".to_string(), + to: MODULE_ADDRESS.to_string(), + amount: Uint128::from(99u128), + }, ]; let expected_user1_balance = Uint128::zero(); let expected_user2_balance = Uint128::zero(); let expected_user3_balance = Uint128::from(100u128); + let expected_user4_balance = Uint128::from(1u128); + let expected_total_supply = Uint128::from(101u128); instantiate( deps.as_mut(), @@ -198,7 +218,7 @@ mod tests { env.clone(), astroport::tokenfactory_tracker::QueryMsg::BalanceAt { address: "user1".to_string(), - timestamp: Uint64::from(env.block.time.seconds()), + timestamp: Some(Uint64::from(env.block.time.seconds())), }, ) .unwrap(); @@ -209,7 +229,7 @@ mod tests { env.clone(), astroport::tokenfactory_tracker::QueryMsg::BalanceAt { address: "user2".to_string(), - timestamp: Uint64::from(env.block.time.seconds()), + timestamp: Some(Uint64::from(env.block.time.seconds())), }, ) .unwrap(); @@ -220,11 +240,51 @@ mod tests { env.clone(), astroport::tokenfactory_tracker::QueryMsg::BalanceAt { address: "user3".to_string(), - timestamp: Uint64::from(env.block.time.seconds()), + timestamp: Some(Uint64::from(env.block.time.seconds())), }, ) .unwrap(); assert_eq!(balance, to_binary(&expected_user3_balance).unwrap()); + + let balance = query( + deps.as_ref(), + env.clone(), + astroport::tokenfactory_tracker::QueryMsg::BalanceAt { + address: "user3".to_string(), + timestamp: None, + }, + ) + .unwrap(); + assert_eq!(balance, to_binary(&expected_user3_balance).unwrap()); + + let balance = query( + deps.as_ref(), + env.clone(), + astroport::tokenfactory_tracker::QueryMsg::BalanceAt { + address: "user4".to_string(), + timestamp: None, + }, + ) + .unwrap(); + assert_eq!(balance, to_binary(&expected_user4_balance).unwrap()); + + let balance = query( + deps.as_ref(), + env.clone(), + astroport::tokenfactory_tracker::QueryMsg::TotalSupplyAt { + timestamp: Some(Uint64::from(env.block.time.seconds())), + }, + ) + .unwrap(); + assert_eq!(balance, to_binary(&expected_total_supply).unwrap()); + + let balance = query( + deps.as_ref(), + env, + astroport::tokenfactory_tracker::QueryMsg::TotalSupplyAt { timestamp: None }, + ) + .unwrap(); + assert_eq!(balance, to_binary(&expected_total_supply).unwrap()); } #[test] @@ -274,7 +334,7 @@ mod tests { env.clone(), astroport::tokenfactory_tracker::QueryMsg::BalanceAt { address: "user1".to_string(), - timestamp: Uint64::from(env.block.time.seconds()), + timestamp: Some(Uint64::from(env.block.time.seconds())), }, ) .unwrap(); diff --git a/contracts/periphery/tokenfactory_tracker/src/error.rs b/contracts/periphery/tokenfactory_tracker/src/error.rs index 95bc4f1eb..8356b0550 100644 --- a/contracts/periphery/tokenfactory_tracker/src/error.rs +++ b/contracts/periphery/tokenfactory_tracker/src/error.rs @@ -1,5 +1,4 @@ use cosmwasm_std::StdError; - use thiserror::Error; #[derive(Error, Debug, PartialEq)] @@ -7,9 +6,6 @@ pub enum ContractError { #[error("{0}")] Std(#[from] StdError), - #[error("Invalid reply data")] - InvalidReplyData {}, - #[error("Invalid denom, expected {}", expected_denom)] InvalidDenom { expected_denom: String }, } diff --git a/contracts/periphery/tokenfactory_tracker/src/query.rs b/contracts/periphery/tokenfactory_tracker/src/query.rs index fea81d4f2..1d85cd096 100644 --- a/contracts/periphery/tokenfactory_tracker/src/query.rs +++ b/contracts/periphery/tokenfactory_tracker/src/query.rs @@ -1,38 +1,43 @@ -use astroport::tokenfactory_tracker::QueryMsg; #[cfg(not(feature = "library"))] -use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, Env, StdError, StdResult, Uint128, Uint64}; +use cosmwasm_std::{entry_point, to_binary, Binary, Deps, Env, Order, StdResult, Uint128, Uint64}; +use cw_storage_plus::Bound; + +use astroport::tokenfactory_tracker::QueryMsg; -use crate::{error::ContractError, state::BALANCES}; +use crate::state::{BALANCES, TOTAL_SUPPLY_HISTORY}; #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::BalanceAt { address, timestamp } => balance_at(deps, env, address, timestamp), - QueryMsg::TotalSupplyAt { timestamp } => total_supply_at(deps, env, timestamp), + QueryMsg::BalanceAt { address, timestamp } => to_binary(&balance_at( + deps, + address, + timestamp.unwrap_or_else(|| Uint64::from(env.block.time.seconds())), + )?), + QueryMsg::TotalSupplyAt { timestamp } => to_binary(&total_supply_at( + deps, + timestamp.unwrap_or_else(|| Uint64::from(env.block.time.seconds())), + )?), } } -fn balance_at(deps: Deps, env: Env, address: String, timestamp: Uint64) -> StdResult { +fn balance_at(deps: Deps, address: String, timestamp: Uint64) -> StdResult { let balance = BALANCES .may_load_at_height(deps.storage, &address, timestamp.u64())? .unwrap_or_default(); - to_binary(&balance) + Ok(balance) } -fn total_supply_at(deps: Deps, env: Env, timestamp: Uint64) -> StdResult { - let amount = Uint128::one(); - to_binary(&amount) -} +fn total_supply_at(deps: Deps, timestamp: Uint64) -> StdResult { + let end = Bound::inclusive(timestamp); + let last_value_up_to_timestamp = TOTAL_SUPPLY_HISTORY + .range(deps.storage, None, Some(end), Order::Descending) + .next(); -#[cfg(test)] -mod tests { - use std::str::FromStr; - - use cosmwasm_std::{Addr, Decimal}; - - use super::*; + if let Some(value) = last_value_up_to_timestamp { + let (_, v) = value?; + return Ok(v); + } - #[test] - fn query_amount() {} + Ok(Uint128::zero()) } diff --git a/contracts/periphery/tokenfactory_tracker/src/state.rs b/contracts/periphery/tokenfactory_tracker/src/state.rs index e262ede38..954a16c1a 100644 --- a/contracts/periphery/tokenfactory_tracker/src/state.rs +++ b/contracts/periphery/tokenfactory_tracker/src/state.rs @@ -1,12 +1,11 @@ use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Addr, Env, Order, StdResult, Storage, Uint128, Uint64}; -use cw_storage_plus::Item; -use cw_storage_plus::{Bound, Map, SnapshotMap, Strategy}; +use cosmwasm_std::Uint128; +use cw_storage_plus::{Item, Map, SnapshotMap, Strategy}; #[cw_serde] pub struct Config { - pub tokenfactory_module_address: String, pub tracked_denom: String, + pub tokenfactory_module_address: String, } pub const CONFIG: Item = Item::new("config"); @@ -19,44 +18,5 @@ pub const BALANCES: SnapshotMap<&String, Uint128> = SnapshotMap::new( Strategy::EveryBlock, ); -/// Contains the history of the xASTRO total supply. +/// Contains the history of the total supply of the tracked denom pub const TOTAL_SUPPLY_HISTORY: Map = Map::new("total_supply_history"); - -// /// Snapshots the total token supply at current timestamp. -// /// -// /// * **total_supply** current token total supply. -// pub fn capture_total_supply_history( -// storage: &mut dyn Storage, -// env: &Env, -// total_supply: Uint128, -// ) -> StdResult<()> { -// TOTAL_SUPPLY_HISTORY.save(storage, env.block.time.seconds(), &total_supply) -// } - -// /// Returns the total token supply at the given timestamp. -// pub fn get_total_supply_at(storage: &dyn Storage, timestamp: Uint64) -> StdResult { -// // Look for the last value recorded before the current timestamp (if none then value is zero) -// let end = Bound::inclusive(timestamp); -// let last_value_up_to_second = TOTAL_SUPPLY_HISTORY -// .range(storage, None, Some(end), Order::Descending) -// .next(); - -// if let Some(value) = last_value_up_to_second { -// let (_, v) = value?; -// return Ok(v); -// } - -// Ok(Uint128::zero()) -// } - -// /// Checks that the sender is the minter. This is to authorise minting and burning of tokens -// pub fn check_sender_is_minter(sender: &Addr, config: &TokenInfo) -> Result<(), ContractError> { -// if let Some(ref mint_data) = config.mint { -// if mint_data.minter != sender { -// return Err(ContractError::Unauthorized {}); -// } -// } else { -// return Err(ContractError::Unauthorized {}); -// } -// Ok(()) -// } diff --git a/contracts/periphery/tokenfactory_tracker/tests/helper.rs b/contracts/periphery/tokenfactory_tracker/tests/helper.rs deleted file mode 100644 index 4ca546394..000000000 --- a/contracts/periphery/tokenfactory_tracker/tests/helper.rs +++ /dev/null @@ -1,771 +0,0 @@ -// #![allow(dead_code)] -// #![cfg(not(tarpaulin_include))] - -// use std::collections::HashMap; -// use std::error::Error; -// use std::fmt::Display; -// use std::str::FromStr; - -// use anyhow::Result as AnyResult; -// use cosmwasm_schema::serde::de::DeserializeOwned; -// use cosmwasm_std::{ -// coin, from_slice, to_binary, Addr, Coin, Decimal, Empty, StdError, StdResult, Uint128, -// }; -// use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg}; -// use cw_multi_test::{App, AppResponse, Contract, ContractWrapper, Executor}; -// use derivative::Derivative; -// use itertools::Itertools; - -// use astroport::asset::{native_asset_info, token_asset_info, Asset, AssetInfo, PairInfo}; -// use astroport::factory::{PairConfig, PairType}; -// use astroport::liquidity_manager::{Cw20HookMsg, ExecuteMsg}; -// use astroport::liquidity_manager::{InstantiateMsg, QueryMsg}; -// use astroport::pair::{Cw20HookMsg as PairCw20HookMsg, ExecuteMsg as PairExecuteMsg}; -// use astroport::pair::{ -// ReverseSimulationResponse, SimulationResponse, StablePoolParams, XYKPoolParams, -// }; -// use astroport::pair_concentrated::{ConcentratedPoolParams, QueryMsg as PairQueryMsg}; -// use astroport::{factory, generator}; -// use astroport_liquidity_manager::contract::{execute, instantiate, reply}; -// use astroport_liquidity_manager::query::query; - -// const NATIVE_TOKEN_PRECISION: u8 = 6; - -// const INIT_BALANCE: u128 = 1_000_000_000_000; - -// pub enum PoolParams { -// Constant(XYKPoolParams), -// Stable(StablePoolParams), -// Concentrated(ConcentratedPoolParams), -// } - -// #[derive(Clone, Debug, PartialEq, Eq, Hash)] -// pub enum TestCoin { -// Cw20(String), -// Cw20Precise(String, u8), -// Native(String), -// } - -// impl TestCoin { -// pub fn denom(&self) -> Option { -// match self { -// TestCoin::Native(denom) => Some(denom.clone()), -// _ => None, -// } -// } - -// pub fn cw20_init_data(&self) -> Option<(String, u8)> { -// match self { -// TestCoin::Cw20(name) => Some((name.clone(), 6u8)), -// TestCoin::Cw20Precise(name, precision) => Some((name.clone(), *precision)), -// _ => None, -// } -// } - -// pub fn native(denom: &str) -> Self { -// Self::Native(denom.to_string()) -// } - -// pub fn cw20(name: &str) -> Self { -// Self::Cw20(name.to_string()) -// } - -// pub fn cw20precise(name: &str, precision: u8) -> Self { -// Self::Cw20Precise(name.to_string(), precision) -// } -// } - -// pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { -// let mut test_coins: Vec = test_coins -// .iter() -// .filter_map(|test_coin| match test_coin { -// TestCoin::Native(name) => { -// let init_balance = INIT_BALANCE * 10u128.pow(NATIVE_TOKEN_PRECISION as u32); -// Some(coin(init_balance, name)) -// } -// _ => None, -// }) -// .collect(); -// test_coins.push(coin(INIT_BALANCE, "random-coin")); - -// test_coins -// } - -// fn token_contract() -> Box> { -// Box::new(ContractWrapper::new_with_empty( -// astroport_token::contract::execute, -// astroport_token::contract::instantiate, -// astroport_token::contract::query, -// )) -// } - -// fn xyk_pair_contract() -> Box> { -// Box::new( -// ContractWrapper::new_with_empty( -// astroport_pair::contract::execute, -// astroport_pair::contract::instantiate, -// astroport_pair::contract::query, -// ) -// .with_reply_empty(astroport_pair::contract::reply), -// ) -// } - -// fn stable_pair_contract() -> Box> { -// Box::new( -// ContractWrapper::new_with_empty( -// astroport_pair_stable::contract::execute, -// astroport_pair_stable::contract::instantiate, -// astroport_pair_stable::contract::query, -// ) -// .with_reply_empty(astroport_pair_stable::contract::reply), -// ) -// } - -// fn coin_registry_contract() -> Box> { -// Box::new(ContractWrapper::new_with_empty( -// astroport_native_coin_registry::contract::execute, -// astroport_native_coin_registry::contract::instantiate, -// astroport_native_coin_registry::contract::query, -// )) -// } - -// fn factory_contract() -> Box> { -// Box::new( -// ContractWrapper::new_with_empty( -// astroport_factory::contract::execute, -// astroport_factory::contract::instantiate, -// astroport_factory::contract::query, -// ) -// .with_reply_empty(astroport_factory::contract::reply), -// ) -// } - -// fn whitelist_contract() -> Box> { -// Box::new(ContractWrapper::new_with_empty( -// astroport_whitelist::contract::execute, -// astroport_whitelist::contract::instantiate, -// astroport_whitelist::contract::query, -// )) -// } - -// fn generator_contract() -> Box> { -// Box::new( -// ContractWrapper::new_with_empty( -// astroport_generator::contract::execute, -// astroport_generator::contract::instantiate, -// astroport_generator::contract::query, -// ) -// .with_reply_empty(astroport_generator::contract::reply), -// ) -// } - -// fn manager_contract() -> Box> { -// Box::new(ContractWrapper::new_with_empty(execute, instantiate, query).with_reply_empty(reply)) -// } - -// #[derive(Derivative)] -// #[derivative(Debug)] -// pub struct Helper { -// #[derivative(Debug = "ignore")] -// pub app: App, -// pub owner: Addr, -// pub assets: HashMap, -// pub factory: Addr, -// pub pair_addr: Addr, -// pub lp_token: Addr, -// pub fake_maker: Addr, -// pub liquidity_manager: Addr, -// pub generator: Addr, -// } - -// impl Helper { -// pub fn new(owner: &Addr, test_coins: Vec, params: PoolParams) -> AnyResult { -// let mut app = App::new(|router, _, storage| { -// router -// .bank -// .init_balance(storage, owner, init_native_coins(&test_coins)) -// .unwrap() -// }); - -// let mut asset_infos_vec: Vec<_> = test_coins -// .clone() -// .into_iter() -// .filter_map(|coin| Some((coin.clone(), native_asset_info(coin.denom()?)))) -// .collect(); - -// let token_code_id = app.store_code(token_contract()); - -// test_coins.into_iter().for_each(|coin| { -// if let Some((name, decimals)) = coin.cw20_init_data() { -// let token_addr = Self::init_token(&mut app, token_code_id, name, decimals, owner); -// asset_infos_vec.push((coin, token_asset_info(token_addr))) -// } -// }); - -// let factory_code_id = app.store_code(factory_contract()); - -// let (pair_code_id, pair_type, inner_params); -// match ¶ms { -// PoolParams::Constant(inner) => { -// pair_code_id = app.store_code(xyk_pair_contract()); -// pair_type = PairType::Xyk {}; -// inner_params = to_binary(inner).unwrap(); -// } -// PoolParams::Stable(inner) => { -// pair_code_id = app.store_code(stable_pair_contract()); -// pair_type = PairType::Stable {}; -// inner_params = to_binary(inner).unwrap(); -// } -// PoolParams::Concentrated(_) => { -// unimplemented!("Concentrated pool is not supported yet"); -// // pair_code_id = app.store_code(pcl_pair_contract()); -// // pair_type = PairType::Custom("concentrated".to_owned()); -// // inner_params = to_binary(inner).unwrap(); -// } -// } - -// let fake_maker = Addr::unchecked("fake_maker"); - -// let coin_registry_id = app.store_code(coin_registry_contract()); - -// let coin_registry_address = app -// .instantiate_contract( -// coin_registry_id, -// owner.clone(), -// &astroport::native_coin_registry::InstantiateMsg { -// owner: owner.to_string(), -// }, -// &[], -// "Coin registry", -// None, -// ) -// .unwrap(); - -// app.execute_contract( -// owner.clone(), -// coin_registry_address.clone(), -// &astroport::native_coin_registry::ExecuteMsg::Add { -// native_coins: vec![("uluna".to_owned(), 6), ("uusd".to_owned(), 6)], -// }, -// &[], -// ) -// .unwrap(); -// let init_msg = astroport::factory::InstantiateMsg { -// fee_address: Some(fake_maker.to_string()), -// pair_configs: vec![PairConfig { -// code_id: pair_code_id, -// maker_fee_bps: 5000, -// total_fee_bps: 30, -// pair_type: pair_type.clone(), -// is_disabled: false, -// is_generator_disabled: false, -// }], -// token_code_id, -// generator_address: None, -// owner: owner.to_string(), -// whitelist_code_id: 234u64, -// coin_registry_address: coin_registry_address.to_string(), -// }; - -// let factory = app.instantiate_contract( -// factory_code_id, -// owner.clone(), -// &init_msg, -// &[], -// "FACTORY", -// None, -// )?; - -// let whitelist_code_id = app.store_code(whitelist_contract()); -// let generator_code_id = app.store_code(generator_contract()); -// let generator = app -// .instantiate_contract( -// generator_code_id, -// owner.clone(), -// &generator::InstantiateMsg { -// owner: owner.to_string(), -// factory: factory.to_string(), -// generator_controller: None, -// voting_escrow_delegation: None, -// voting_escrow: None, -// guardian: None, -// astro_token: native_asset_info("astro".to_string()), -// tokens_per_block: Default::default(), -// start_block: Default::default(), -// vesting_contract: "vesting".to_string(), -// whitelist_code_id, -// }, -// &[], -// "Generator", -// None, -// ) -// .unwrap(); - -// app.execute_contract( -// owner.clone(), -// factory.clone(), -// &factory::ExecuteMsg::UpdateConfig { -// token_code_id: None, -// fee_address: None, -// generator_address: Some(generator.to_string()), -// whitelist_code_id: None, -// coin_registry_address: None, -// }, -// &[], -// ) -// .unwrap(); - -// let manager_code = app.store_code(manager_contract()); -// let liquidity_manager = app -// .instantiate_contract( -// manager_code, -// owner.clone(), -// &InstantiateMsg { -// astroport_factory: factory.to_string(), -// }, -// &[], -// "Liquidity manager", -// None, -// ) -// .unwrap(); - -// let asset_infos = asset_infos_vec -// .clone() -// .into_iter() -// .map(|(_, asset_info)| asset_info) -// .collect_vec(); -// let init_pair_msg = astroport::factory::ExecuteMsg::CreatePair { -// pair_type, -// asset_infos: asset_infos.clone(), -// init_params: Some(inner_params), -// }; - -// app.execute_contract(owner.clone(), factory.clone(), &init_pair_msg, &[])?; - -// let resp: PairInfo = app.wrap().query_wasm_smart( -// &factory, -// &astroport::factory::QueryMsg::Pair { asset_infos }, -// )?; - -// Ok(Self { -// app, -// owner: owner.clone(), -// assets: asset_infos_vec.into_iter().collect(), -// factory, -// pair_addr: resp.contract_addr, -// lp_token: resp.liquidity_token, -// fake_maker, -// liquidity_manager, -// generator, -// }) -// } - -// pub fn simulate_provide( -// &self, -// slippage_tolerance: Option, -// assets: &[Asset], -// ) -> AnyResult { -// let pair_msg = PairExecuteMsg::ProvideLiquidity { -// assets: assets.to_vec(), -// slippage_tolerance, -// auto_stake: None, -// receiver: None, -// }; - -// self.app -// .wrap() -// .query_wasm_smart( -// &self.liquidity_manager, -// &QueryMsg::SimulateProvide { -// pair_addr: self.pair_addr.to_string(), -// pair_msg, -// }, -// ) -// .map_err(Into::into) -// } - -// pub fn simulate_withdraw(&self, lp_tokens_amount: impl Into) -> AnyResult> { -// self.app -// .wrap() -// .query_wasm_smart( -// &self.liquidity_manager, -// &QueryMsg::SimulateWithdraw { -// pair_addr: self.pair_addr.to_string(), -// lp_tokens: lp_tokens_amount.into(), -// }, -// ) -// .map_err(Into::into) -// } - -// /// If min_lp_receive is Some provide is done via liquidity manager contract. -// pub fn provide_liquidity( -// &mut self, -// sender: &Addr, -// assets: &[Asset], -// min_lp_receive: Option, -// ) -> AnyResult { -// self.provide_liquidity_with_slip_tolerance( -// sender, -// assets, -// Some(f64_to_dec(0.5)), -// min_lp_receive, -// false, -// None, -// ) -// } - -// /// If min_lp_receive is Some provide is done via liquidity manager contract. -// pub fn provide_liquidity_with_slip_tolerance( -// &mut self, -// sender: &Addr, -// assets: &[Asset], -// slippage_tolerance: Option, -// min_lp_receive: Option, -// auto_stake: bool, -// receiver: Option, -// ) -> AnyResult { -// let msg = PairExecuteMsg::ProvideLiquidity { -// assets: assets.to_vec(), -// slippage_tolerance, -// auto_stake: Some(auto_stake), -// receiver, -// }; - -// if min_lp_receive.is_some() { -// let funds = assets.mock_coins_sent( -// &mut self.app, -// sender, -// &self.liquidity_manager, -// SendType::Allowance, -// ); - -// let manager_msg = ExecuteMsg::ProvideLiquidity { -// pair_addr: self.pair_addr.to_string(), -// pair_msg: msg, -// min_lp_to_receive: min_lp_receive, -// }; -// self.app.execute_contract( -// sender.clone(), -// self.liquidity_manager.clone(), -// &manager_msg, -// &funds, -// ) -// } else { -// let funds = -// assets.mock_coins_sent(&mut self.app, sender, &self.pair_addr, SendType::Allowance); -// self.app -// .execute_contract(sender.clone(), self.pair_addr.clone(), &msg, &funds) -// } -// } - -// pub fn withdraw_liquidity( -// &mut self, -// sender: &Addr, -// amount: u128, -// min_assets: Option>, -// ) -> AnyResult { -// let pair_msg = PairCw20HookMsg::WithdrawLiquidity { assets: vec![] }; -// let (contract, msg); -// if let Some(min_assets_to_receive) = min_assets { -// contract = self.liquidity_manager.to_string(); -// msg = to_binary(&Cw20HookMsg::WithdrawLiquidity { -// pair_msg, -// min_assets_to_receive, -// }) -// .unwrap(); -// } else { -// contract = self.pair_addr.to_string(); -// msg = to_binary(&pair_msg).unwrap(); -// } - -// let msg = Cw20ExecuteMsg::Send { -// contract, -// amount: Uint128::from(amount), -// msg, -// }; - -// self.app -// .execute_contract(sender.clone(), self.lp_token.clone(), &msg, &[]) -// } - -// pub fn swap( -// &mut self, -// sender: &Addr, -// offer_asset: &Asset, -// max_spread: Option, -// ) -> AnyResult { -// match &offer_asset.info { -// AssetInfo::Token { contract_addr } => { -// let msg = Cw20ExecuteMsg::Send { -// contract: self.pair_addr.to_string(), -// amount: offer_asset.amount, -// msg: to_binary(&PairCw20HookMsg::Swap { -// ask_asset_info: None, -// belief_price: None, -// max_spread, -// to: None, -// }) -// .unwrap(), -// }; - -// self.app -// .execute_contract(sender.clone(), contract_addr.clone(), &msg, &[]) -// } -// AssetInfo::NativeToken { .. } => { -// let funds = offer_asset.mock_coin_sent( -// &mut self.app, -// sender, -// &self.pair_addr, -// SendType::None, -// ); - -// let msg = PairExecuteMsg::Swap { -// offer_asset: offer_asset.clone(), -// ask_asset_info: None, -// belief_price: None, -// max_spread, -// to: None, -// }; - -// self.app -// .execute_contract(sender.clone(), self.pair_addr.clone(), &msg, &funds) -// } -// } -// } - -// pub fn simulate_swap( -// &self, -// offer_asset: &Asset, -// ask_asset_info: Option, -// ) -> StdResult { -// self.app.wrap().query_wasm_smart( -// &self.pair_addr, -// &PairQueryMsg::Simulation { -// offer_asset: offer_asset.clone(), -// ask_asset_info, -// }, -// ) -// } - -// pub fn simulate_reverse_swap( -// &self, -// ask_asset: &Asset, -// offer_asset_info: Option, -// ) -> StdResult { -// self.app.wrap().query_wasm_smart( -// &self.pair_addr, -// &PairQueryMsg::ReverseSimulation { -// ask_asset: ask_asset.clone(), -// offer_asset_info, -// }, -// ) -// } - -// fn init_token( -// app: &mut App, -// token_code: u64, -// name: String, -// decimals: u8, -// owner: &Addr, -// ) -> Addr { -// let init_balance = INIT_BALANCE * 10u128.pow(decimals as u32); -// app.instantiate_contract( -// token_code, -// owner.clone(), -// &astroport::token::InstantiateMsg { -// symbol: name.to_string(), -// name, -// decimals, -// initial_balances: vec![Cw20Coin { -// address: owner.to_string(), -// amount: Uint128::from(init_balance), -// }], -// mint: None, -// marketing: None, -// }, -// &[], -// "{name}_token", -// None, -// ) -// .unwrap() -// } - -// pub fn token_balance(&self, token_addr: &Addr, user: &Addr) -> u128 { -// let resp: BalanceResponse = self -// .app -// .wrap() -// .query_wasm_smart( -// token_addr, -// &Cw20QueryMsg::Balance { -// address: user.to_string(), -// }, -// ) -// .unwrap(); - -// resp.balance.u128() -// } - -// pub fn coin_balance(&self, coin: &TestCoin, user: &Addr) -> u128 { -// match &self.assets[coin] { -// AssetInfo::Token { contract_addr } => self.token_balance(contract_addr, user), -// AssetInfo::NativeToken { denom } => self -// .app -// .wrap() -// .query_balance(user, denom) -// .unwrap() -// .amount -// .u128(), -// } -// } - -// pub fn give_me_money(&mut self, assets: &[Asset], recipient: &Addr) { -// let funds = -// assets.mock_coins_sent(&mut self.app, &self.owner, recipient, SendType::Transfer); - -// if !funds.is_empty() { -// self.app -// .send_tokens(self.owner.clone(), recipient.clone(), &funds) -// .unwrap(); -// } -// } - -// pub fn query_config(&self) -> StdResult -// where -// T: DeserializeOwned, -// { -// let binary = self -// .app -// .wrap() -// .query_wasm_raw(&self.pair_addr, b"config")? -// .ok_or_else(|| StdError::generic_err("Failed to find config in storage"))?; -// from_slice(&binary) -// } - -// pub fn query_asset_balance_at( -// &self, -// asset_info: &AssetInfo, -// block_height: u64, -// ) -> StdResult> { -// self.app.wrap().query_wasm_smart( -// &self.pair_addr, -// &PairQueryMsg::AssetBalanceAt { -// asset_info: asset_info.clone(), -// block_height: block_height.into(), -// }, -// ) -// } - -// pub fn query_staked_lp(&self, user: &Addr) -> StdResult { -// self.app.wrap().query_wasm_smart( -// &self.generator, -// &generator::QueryMsg::Deposit { -// lp_token: self.lp_token.to_string(), -// user: user.to_string(), -// }, -// ) -// } -// } - -// #[derive(Clone, Copy)] -// pub enum SendType { -// Allowance, -// Transfer, -// None, -// } - -// pub trait AssetExt { -// fn mock_coin_sent( -// &self, -// app: &mut App, -// user: &Addr, -// spender: &Addr, -// typ: SendType, -// ) -> Vec; -// } - -// impl AssetExt for Asset { -// fn mock_coin_sent( -// &self, -// app: &mut App, -// user: &Addr, -// spender: &Addr, -// typ: SendType, -// ) -> Vec { -// let mut funds = vec![]; -// match &self.info { -// AssetInfo::Token { contract_addr } if !self.amount.is_zero() => { -// let msg = match typ { -// SendType::Allowance => Cw20ExecuteMsg::IncreaseAllowance { -// spender: spender.to_string(), -// amount: self.amount, -// expires: None, -// }, -// SendType::Transfer => Cw20ExecuteMsg::Transfer { -// recipient: spender.to_string(), -// amount: self.amount, -// }, -// _ => unimplemented!(), -// }; -// app.execute_contract(user.clone(), contract_addr.clone(), &msg, &[]) -// .unwrap(); -// } -// AssetInfo::NativeToken { denom } if !self.amount.is_zero() => { -// funds = vec![coin(self.amount.u128(), denom)]; -// } -// _ => {} -// } - -// funds -// } -// } - -// pub trait AssetsExt { -// fn mock_coins_sent( -// &self, -// app: &mut App, -// user: &Addr, -// spender: &Addr, -// typ: SendType, -// ) -> Vec; -// } - -// impl AssetsExt for &[Asset] { -// fn mock_coins_sent( -// &self, -// app: &mut App, -// user: &Addr, -// spender: &Addr, -// typ: SendType, -// ) -> Vec { -// let mut funds = vec![]; -// for asset in self.iter() { -// funds.extend(asset.mock_coin_sent(app, user, spender, typ)); -// } -// funds -// } -// } - -// pub trait AppExtension { -// fn next_block(&mut self, time: u64); -// } - -// impl AppExtension for App { -// fn next_block(&mut self, time: u64) { -// self.update_block(|block| { -// block.time = block.time.plus_seconds(time); -// block.height += 1 -// }); -// } -// } - -// pub fn f64_to_dec(val: f64) -> T -// where -// T: FromStr, -// T::Err: Error, -// { -// T::from_str(&val.to_string()).unwrap() -// } - -// pub fn dec_to_f64(val: impl Display) -> f64 { -// f64::from_str(&val.to_string()).unwrap() -// } diff --git a/contracts/periphery/tokenfactory_tracker/tests/liquidity_manager_integration.rs b/contracts/periphery/tokenfactory_tracker/tests/liquidity_manager_integration.rs deleted file mode 100644 index 0a542958d..000000000 --- a/contracts/periphery/tokenfactory_tracker/tests/liquidity_manager_integration.rs +++ /dev/null @@ -1,8 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -use cosmwasm_std::{Addr, Uint128}; - -mod helper; - -#[test] -fn test_tracking() {} diff --git a/contracts/periphery/tokenfactory_tracker/tests/unit.rs b/contracts/periphery/tokenfactory_tracker/tests/unit.rs deleted file mode 100644 index 6aaee479d..000000000 --- a/contracts/periphery/tokenfactory_tracker/tests/unit.rs +++ /dev/null @@ -1,10 +0,0 @@ -// #![cfg(not(tarpaulin_include))] -// use cosmwasm_std::testing::{mock_dependencies, mock_env}; -// use cosmwasm_std::{Reply, SubMsgResponse, SubMsgResult}; - -// use astroport_liquidity_manager::contract::reply; -// use astroport_liquidity_manager::error::ContractError; -// use astroport_liquidity_manager::state::{ActionParams, ReplyData, REPLY_DATA}; - -// #[test] -// fn test_tracking() {} diff --git a/packages/astroport/src/tokenfactory_tracker.rs b/packages/astroport/src/tokenfactory_tracker.rs index 04cac7a14..06ae2be4b 100644 --- a/packages/astroport/src/tokenfactory_tracker.rs +++ b/packages/astroport/src/tokenfactory_tracker.rs @@ -1,25 +1,34 @@ use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{Addr, Coin, Uint128, Uint64}; +use cosmwasm_std::{Coin, Uint128, Uint64}; #[cw_serde] pub struct InstantiateMsg { + // The denom to track pub tracked_denom: String, + // The module address of the TokenFactory module pub tokenfactory_module_address: String, } -#[cw_serde] -pub enum ExecuteMsg {} - #[cw_serde] pub enum SudoMsg { + // Sudo endpoint called by chain before sending tokens + // Errors returned by this endpoint will prevent the transaction from being sent BlockBeforeSend { + // The address being sent from from: String, + // The address being sent to to: String, + // The amount and denom being sent amount: Coin, }, + // Sudo endpoint called by chain before sending tokens + // Errors returned by this endpoint will NOT prevent the transaction from being sent TrackBeforeSend { + // The address being sent from from: String, + // The address being sent to to: String, + // The amount and denom being sent amount: Coin, }, } @@ -27,8 +36,15 @@ pub enum SudoMsg { #[cw_serde] #[derive(QueryResponses)] pub enum QueryMsg { + // Returns the balance of the given address at the given timestamp + // in seconds. If unset, returns the balance at the current time #[returns(Uint128)] - BalanceAt { address: String, timestamp: Uint64 }, + BalanceAt { + address: String, + timestamp: Option, + }, + // Returns the total token supply at the given timestamp in seconds. + // If unset, returns the balance at the current time #[returns(Uint128)] - TotalSupplyAt { timestamp: Uint64 }, + TotalSupplyAt { timestamp: Option }, } From 43365e09ae5c5da8d51765d4b8d0d120a53f0e3a Mon Sep 17 00:00:00 2001 From: Donovan Solms <4567303+donovansolms@users.noreply.github.com> Date: Tue, 31 Oct 2023 12:47:21 +0200 Subject: [PATCH 07/84] feat(tokenfactory_tracker): Added clarification on minting/burning --- contracts/periphery/tokenfactory_tracker/src/contract.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index a2cb7f0da..1db988cc8 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -63,10 +63,9 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result Result Result Result Date: Wed, 1 Nov 2023 12:07:31 +0200 Subject: [PATCH 08/84] feat(staking): Add xASTRO balance tracking --- Cargo.lock | 8 +- contracts/tokenomics/staking/Cargo.toml | 2 +- contracts/tokenomics/staking/src/contract.rs | 87 ++++++++++++++++++-- contracts/tokenomics/staking/src/state.rs | 4 + packages/astroport/src/staking.rs | 2 + 5 files changed, 93 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 239457d89..c951817ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2059,9 +2059,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "osmosis-std" -version = "0.17.0-rc0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b022b748710ecdf1adc6a124c3bef29f17ef05e7fa1260a08889d1d53f9cc5" +checksum = "47d7aa053bc3fad557ac90a0377688b400c395e2537f0f1de3293a15cad2e970" dependencies = [ "chrono", "cosmwasm-std", @@ -2075,9 +2075,9 @@ dependencies = [ [[package]] name = "osmosis-std-derive" -version = "0.16.2" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47f0b2f22adb341bb59e5a3a1b464dde033181954bd055b9ae86d6511ba465b" +checksum = "c5ebdfd1bc8ed04db596e110c6baa9b174b04f6ed1ec22c666ddc5cb3fa91bd7" dependencies = [ "itertools 0.10.5", "proc-macro2", diff --git a/contracts/tokenomics/staking/Cargo.toml b/contracts/tokenomics/staking/Cargo.toml index ce3364afc..f850a7d1a 100644 --- a/contracts/tokenomics/staking/Cargo.toml +++ b/contracts/tokenomics/staking/Cargo.toml @@ -29,7 +29,7 @@ astroport = { path = "../../../packages/astroport", version = "3" } protobuf = "=3.2.0" cosmwasm-schema = { version = "1.1" } cw-utils = "1.0.1" -osmosis-std = "0.17.0-rc0" +osmosis-std = "0.20.1" [dev-dependencies] astroport-token = { path = "../../token" } diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index b38d8a853..45f410c59 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -1,16 +1,20 @@ use cosmwasm_std::{ attr, coin, entry_point, to_binary, BankMsg, Binary, CosmosMsg, Deps, DepsMut, Env, - MessageInfo, Reply, ReplyOn, Response, StdResult, SubMsg, Uint128, + MessageInfo, Reply, ReplyOn, Response, StdError, StdResult, SubMsg, Uint128, WasmMsg, +}; +use osmosis_std::types::cosmos::bank::v1beta1::{DenomUnit, Metadata}; +use osmosis_std::types::osmosis::tokenfactory::v1beta1::{ + MsgBurn, MsgCreateDenom, MsgMint, MsgSetBeforeSendHook, MsgSetDenomMetadata, }; -use osmosis_std::types::osmosis::tokenfactory::v1beta1::{MsgBurn, MsgCreateDenom, MsgMint}; use crate::error::ContractError; use crate::state::{Config, CONFIG}; use astroport::staking::{ ConfigResponse, ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg, StakingResponse, }; +use astroport::tokenfactory_tracker::InstantiateMsg as TrackerInstantiateMsg; use cw2::set_contract_version; -use cw_utils::must_pay; +use cw_utils::{must_pay, parse_instantiate_response_data}; use astroport::querier::query_balance; @@ -26,6 +30,7 @@ const TOKEN_SYMBOL: &str = "xASTRO"; /// A `reply` call code ID used for sub-messages. const INSTANTIATE_DENOM_REPLY_ID: u64 = 1; +const INSTANTIATE_TRACKING_REPLY_ID: u64 = 2; /// Minimum initial xastro share pub(crate) const MINIMUM_STAKE_AMOUNT: Uint128 = Uint128::new(1_000); @@ -48,6 +53,8 @@ pub fn instantiate( &Config { astro_denom: msg.deposit_token_denom, xastro_denom: "".to_string(), + tracking_code_id: msg.tracking_code_id, + tracking_contract_address: "".to_string(), }, )?; @@ -92,16 +99,86 @@ pub fn execute( pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result { match msg.id { INSTANTIATE_DENOM_REPLY_ID => { + let mut config = CONFIG.load(deps.storage)?; + // TODO: Once Neutron implements the same flow as Osmosis, we'll // be able to get the created denom from the reply data // For now, we reconstruct the denom from the contract address + // TODO: Use new TokenFactory abstraction let created_denom = format!("factory/{}/{}", env.contract.address, TOKEN_SYMBOL); - let mut config = CONFIG.load(deps.storage)?; + // Instantiate the tracking contract + let instantiate_tracker_msg: SubMsg = SubMsg { + msg: WasmMsg::Instantiate { + code_id: config.tracking_code_id, + msg: to_binary(&TrackerInstantiateMsg { + tracked_denom: created_denom.clone(), + // TODO: Get the correct module address + tokenfactory_module_address: "osmo19ejy8n9qsectrf4semdp9cpknflld0j64mwamn" + .to_string(), + })?, + funds: vec![], + admin: None, + label: String::from("xASTRO Tracking Contract"), + } + .into(), + id: INSTANTIATE_TRACKING_REPLY_ID, + gas_limit: None, + reply_on: ReplyOn::Success, + }; + + // TODO: Decide correct metadata + let denom_metadata_msg = MsgSetDenomMetadata { + sender: env.contract.address.to_string(), + metadata: Some(Metadata { + symbol: TOKEN_SYMBOL.to_string(), + name: TOKEN_NAME.to_string(), + base: created_denom.clone(), + display: TOKEN_SYMBOL.to_string(), + denom_units: vec![ + DenomUnit { + denom: created_denom.to_string(), + exponent: 0, + aliases: vec![], + }, + DenomUnit { + denom: TOKEN_SYMBOL.to_string(), + exponent: 6, + aliases: vec![], + }, + ], + description: TOKEN_NAME.to_string(), + }), + }; + config.xastro_denom = created_denom; CONFIG.save(deps.storage, &config)?; - Ok(Response::new().add_attribute("xastro_denom", config.xastro_denom)) + Ok(Response::new() + .add_message(denom_metadata_msg) + .add_submessage(instantiate_tracker_msg) + .add_attribute("xastro_denom", config.xastro_denom)) + } + INSTANTIATE_TRACKING_REPLY_ID => { + let mut config = CONFIG.load(deps.storage)?; + + // TODO: Fix unwraps here + let init_response = + parse_instantiate_response_data(msg.result.unwrap().data.unwrap().as_slice()) + .map_err(|e| StdError::generic_err(format!("{e}")))?; + + let set_hook_msg = MsgSetBeforeSendHook { + sender: env.contract.address.to_string(), + denom: config.xastro_denom.clone(), + cosmwasm_address: init_response.contract_address.clone(), + }; + + config.tracking_contract_address = init_response.contract_address; + CONFIG.save(deps.storage, &config)?; + + Ok(Response::new() + .add_message(set_hook_msg) + .add_attribute("xastro_tracking_contract", config.tracking_contract_address)) } _ => Err(ContractError::FailedToParseReply {}), } diff --git a/contracts/tokenomics/staking/src/state.rs b/contracts/tokenomics/staking/src/state.rs index eb0b5f1bb..8a6a3f1c9 100644 --- a/contracts/tokenomics/staking/src/state.rs +++ b/contracts/tokenomics/staking/src/state.rs @@ -8,6 +8,10 @@ pub struct Config { pub astro_denom: String, /// The xASTRO token denom pub xastro_denom: String, + // TODO: Do we want this? + pub tracking_code_id: u64, + // TODO: Make addr? + pub tracking_contract_address: String, } /// Stores the contract config at the given key diff --git a/packages/astroport/src/staking.rs b/packages/astroport/src/staking.rs index 6aafddca6..0f19b7b8e 100644 --- a/packages/astroport/src/staking.rs +++ b/packages/astroport/src/staking.rs @@ -8,6 +8,8 @@ pub struct InstantiateMsg { pub owner: String, /// The ASTRO token contract address pub deposit_token_denom: String, + // The Code ID of contract used to track the TokenFactory token balances + pub tracking_code_id: u64, } /// This structure describes the execute messages available in the contract. From 26d518dc14e7ed2791bf806228f7368742ff3644 Mon Sep 17 00:00:00 2001 From: Donovan Solms <4567303+donovansolms@users.noreply.github.com> Date: Mon, 6 Nov 2023 09:55:28 +0200 Subject: [PATCH 09/84] feat(cw20_converter): Add initial contract --- Cargo.lock | 18 +++++ Cargo.toml | 1 + .../cw20_tf_converter/.cargo/config | 6 ++ .../tokenomics/cw20_tf_converter/Cargo.toml | 40 +++++++++++ .../tokenomics/cw20_tf_converter/README.md | 3 + .../cw20_tf_converter/src/contract.rs | 36 ++++++++++ .../tokenomics/cw20_tf_converter/src/error.rs | 70 +++++++++++++++++++ .../cw20_tf_converter/src/execute.rs | 19 +++++ .../tokenomics/cw20_tf_converter/src/lib.rs | 5 ++ .../tokenomics/cw20_tf_converter/src/query.rs | 11 +++ .../tokenomics/cw20_tf_converter/src/state.rs | 10 +++ contracts/tokenomics/staking/src/contract.rs | 2 + packages/astroport/src/cw20_tf_converter.rs | 35 ++++++++++ packages/astroport/src/lib.rs | 1 + 14 files changed, 257 insertions(+) create mode 100644 contracts/tokenomics/cw20_tf_converter/.cargo/config create mode 100644 contracts/tokenomics/cw20_tf_converter/Cargo.toml create mode 100644 contracts/tokenomics/cw20_tf_converter/README.md create mode 100644 contracts/tokenomics/cw20_tf_converter/src/contract.rs create mode 100644 contracts/tokenomics/cw20_tf_converter/src/error.rs create mode 100644 contracts/tokenomics/cw20_tf_converter/src/execute.rs create mode 100644 contracts/tokenomics/cw20_tf_converter/src/lib.rs create mode 100644 contracts/tokenomics/cw20_tf_converter/src/query.rs create mode 100644 contracts/tokenomics/cw20_tf_converter/src/state.rs create mode 100644 packages/astroport/src/cw20_tf_converter.rs diff --git a/Cargo.lock b/Cargo.lock index c951817ea..c53353543 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -95,6 +95,24 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-cw20-tf-converter" +version = "1.0.0" +dependencies = [ + "anyhow", + "astroport", + "cosmwasm-schema", + "cosmwasm-std", + "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", + "cw-storage-plus 0.15.1", + "cw2 1.1.1", + "cw20 0.15.1", + "schemars", + "serde 1.0.188", + "serde-json-wasm", + "thiserror", +] + [[package]] name = "astroport-escrow-fee-distributor" version = "1.0.2" diff --git a/Cargo.toml b/Cargo.toml index 54d178ed8..b791b2935 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ members = [ "contracts/whitelist", "contracts/cw20_ics20", "templates/*", + "contracts/tokenomics/cw20_tf_converter", "contracts/tokenomics/generator", "contracts/tokenomics/maker", "contracts/tokenomics/staking", diff --git a/contracts/tokenomics/cw20_tf_converter/.cargo/config b/contracts/tokenomics/cw20_tf_converter/.cargo/config new file mode 100644 index 000000000..f1bf3f596 --- /dev/null +++ b/contracts/tokenomics/cw20_tf_converter/.cargo/config @@ -0,0 +1,6 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +unit-test = "test --lib" +integration-test = "test --test integration" +schema = "run --bin schema" \ No newline at end of file diff --git a/contracts/tokenomics/cw20_tf_converter/Cargo.toml b/contracts/tokenomics/cw20_tf_converter/Cargo.toml new file mode 100644 index 000000000..776815fe3 --- /dev/null +++ b/contracts/tokenomics/cw20_tf_converter/Cargo.toml @@ -0,0 +1,40 @@ +[package] +name = "astroport-cw20-tf-converter" +version = "1.0.0" +authors = ["Astroport"] +edition = "2021" +description = "Converts CW20 tokens to TokenFactory tokens" +license = "GPL-3.0" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", +] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +# for quicker tests, cargo test --lib +# for more explicit tests, cargo test --features=backtraces +backtraces = ["cosmwasm-std/backtraces"] +library = [] + +[dependencies] +cw2 = "1.0.1" +cw20 = "0.15" +cosmwasm-schema = "1.1.0" +cosmwasm-std = { version = "1.1", features = ["iterator", "ibc3"] } +cw-storage-plus = "0.15" +schemars = "0.8.12" +astroport = { path = "../../../packages/astroport", version = "3" } +serde = { version = "1.0.164", default-features = false, features = ["derive"] } +thiserror = "1.0.40" +serde-json-wasm = "0.5.1" + +[dev-dependencies] +cw-multi-test = "0.16.5" +anyhow = "1.0" diff --git a/contracts/tokenomics/cw20_tf_converter/README.md b/contracts/tokenomics/cw20_tf_converter/README.md new file mode 100644 index 000000000..fb237406a --- /dev/null +++ b/contracts/tokenomics/cw20_tf_converter/README.md @@ -0,0 +1,3 @@ +# CW20 ASTRO to TokenFactory converter + +This contract receives CW20 ASTRO (on Terra) or IBC'd ASTRO on other chains to returns the TokenFactory version at a 1:1 ratio \ No newline at end of file diff --git a/contracts/tokenomics/cw20_tf_converter/src/contract.rs b/contracts/tokenomics/cw20_tf_converter/src/contract.rs new file mode 100644 index 000000000..bf0092059 --- /dev/null +++ b/contracts/tokenomics/cw20_tf_converter/src/contract.rs @@ -0,0 +1,36 @@ +use cosmwasm_std::{entry_point, DepsMut, Env, MessageInfo, Response}; +use cw2::set_contract_version; + +use astroport::cw20_tf_converter::{Config, InstantiateMsg, MigrateMsg}; + +use crate::{error::ContractError, state::CONFIG}; + +/// Contract name that is used for migration. +const CONTRACT_NAME: &str = "astroport-hub"; +/// Contract version that is used for migration. +const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); + +/// Instantiates the contract, storing the config and querying the staking contract. +/// Returns a `Response` object on successful execution or a `ContractError` on failure. +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + + let config = Config { + owner: deps.api.addr_validate(&msg.owner)?, + }; + CONFIG.save(deps.storage, &config)?; + + Ok(Response::default()) +} + +/// Migrates the contract to a new version. +#[entry_point] +pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { + Err(ContractError::MigrationError {}) +} diff --git a/contracts/tokenomics/cw20_tf_converter/src/error.rs b/contracts/tokenomics/cw20_tf_converter/src/error.rs new file mode 100644 index 000000000..b1bb819b8 --- /dev/null +++ b/contracts/tokenomics/cw20_tf_converter/src/error.rs @@ -0,0 +1,70 @@ +use cosmwasm_std::{OverflowError, StdError}; +use serde_json_wasm::de::Error as SerdeError; +use thiserror::Error; + +/// This enum describes Hub's contract errors +#[derive(Error, Debug, PartialEq)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("Unable to parse: {0}")] + ParseError(#[from] std::num::ParseIntError), + + #[error("Contract can't be migrated!")] + MigrationError {}, + + #[error("Unauthorized")] + Unauthorized {}, + + #[error("You can not send 0 tokens")] + ZeroAmount {}, + + #[error("Insufficient funds held for the action")] + InsufficientFunds {}, + + #[error("The provided address does not have any funds")] + NoFunds {}, + + #[error("Voting power exceeds channel balance")] + InvalidVotingPower {}, + + #[error("The action {} is not allowed via an IBC memo", action)] + NotMemoAction { action: String }, + + #[error( + "The action {} is not allowed via IBC and must be actioned via a tranfer memo", + action + )] + NotIBCAction { action: String }, + + #[error("Memo does not conform to the expected format: {}", reason)] + InvalidMemo { reason: SerdeError }, + + #[error("Memo was not intended for the hook contract")] + InvalidDestination {}, + + #[error("Got a submessage reply with unknown id: {id}")] + UnknownReplyId { id: u64 }, + + #[error("Invalid submessage {0}", reason)] + InvalidSubmessage { reason: String }, + + #[error("Outpost already added, remove it first: {0}", address)] + OutpostAlreadyAdded { address: String }, + + #[error("No Outpost found that matches the message channels")] + UnknownOutpost {}, + + #[error("Invalid IBC timeout: {timeout}, must be between {min} and {max} seconds")] + InvalidIBCTimeout { timeout: u64, min: u64, max: u64 }, + + #[error("Channel already established: {channel_id}")] + ChannelAlreadyEstablished { channel_id: String }, +} + +impl From for ContractError { + fn from(o: OverflowError) -> Self { + StdError::from(o).into() + } +} diff --git a/contracts/tokenomics/cw20_tf_converter/src/execute.rs b/contracts/tokenomics/cw20_tf_converter/src/execute.rs new file mode 100644 index 000000000..4d8d5bab7 --- /dev/null +++ b/contracts/tokenomics/cw20_tf_converter/src/execute.rs @@ -0,0 +1,19 @@ +use astroport::cw20_tf_converter::ExecuteMsg; +use cosmwasm_std::{ + entry_point, from_binary, to_binary, Addr, DepsMut, Env, MessageInfo, Response, StdError, + StdResult, SubMsg, WasmMsg, +}; +use cw20::{Cw20ExecuteMsg, Cw20ReceiveMsg}; + +use crate::error::ContractError; + +/// Exposes all the execute functions available in the contract. +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + Ok(Response::default()) +} diff --git a/contracts/tokenomics/cw20_tf_converter/src/lib.rs b/contracts/tokenomics/cw20_tf_converter/src/lib.rs new file mode 100644 index 000000000..512e6c212 --- /dev/null +++ b/contracts/tokenomics/cw20_tf_converter/src/lib.rs @@ -0,0 +1,5 @@ +pub mod contract; +pub mod error; +pub mod execute; +pub mod query; +pub mod state; diff --git a/contracts/tokenomics/cw20_tf_converter/src/query.rs b/contracts/tokenomics/cw20_tf_converter/src/query.rs new file mode 100644 index 000000000..53cf77037 --- /dev/null +++ b/contracts/tokenomics/cw20_tf_converter/src/query.rs @@ -0,0 +1,11 @@ +use astroport::cw20_tf_converter::QueryMsg; +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{to_binary, Addr, Binary, Deps, Env, Order, StdResult, Uint128}; +use cw_storage_plus::Bound; + +/// Expose available contract queries. +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { + to_binary("todo") +} diff --git a/contracts/tokenomics/cw20_tf_converter/src/state.rs b/contracts/tokenomics/cw20_tf_converter/src/state.rs new file mode 100644 index 000000000..3d8966b95 --- /dev/null +++ b/contracts/tokenomics/cw20_tf_converter/src/state.rs @@ -0,0 +1,10 @@ +use cosmwasm_schema::cw_serde; +use cosmwasm_std::{Addr, Deps, Order, StdError, StdResult, Storage, Uint128}; +use cw_storage_plus::{Bound, Item, Map}; + +use astroport::{common::OwnershipProposal, cw20_tf_converter::Config}; + +use crate::error::ContractError; + +/// Stores the contract config +pub const CONFIG: Item = Item::new("config"); diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index 45f410c59..3230ae32c 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -326,6 +326,7 @@ fn execute_leave(deps: DepsMut, env: Env, info: MessageInfo) -> Result StdResult { QueryMsg::Config {} => Ok(to_binary(&ConfigResponse { deposit_denom: config.astro_denom, share_denom: config.xastro_denom, + share_tracking_address: config.tracking_contract_address, })?), QueryMsg::TotalShares {} => { to_binary(&deps.querier.query_supply(config.xastro_denom)?.amount) diff --git a/packages/astroport/src/cw20_tf_converter.rs b/packages/astroport/src/cw20_tf_converter.rs new file mode 100644 index 000000000..3d145500c --- /dev/null +++ b/packages/astroport/src/cw20_tf_converter.rs @@ -0,0 +1,35 @@ +use cosmwasm_schema::{cw_serde, QueryResponses}; +use cosmwasm_std::{Addr, Uint128, Uint64}; +use cw20::Cw20ReceiveMsg; + +/// Holds the parameters used for creating a conversion contract +#[cw_serde] +pub struct InstantiateMsg { + /// The contract owner + pub owner: String, +} + +/// The contract migration message +/// We currently take no arguments for migrations +#[cw_serde] +pub struct MigrateMsg {} + +/// Describes the execute messages available in the contract +#[cw_serde] +pub enum ExecuteMsg {} + +/// Messages handled via CW20 transfers +#[cw_serde] +pub enum Cw20HookMsg {} + +/// Describes the query messages available in the contract +#[cw_serde] +#[derive(QueryResponses)] +pub enum QueryMsg {} + +/// The config of the conversion contract +#[cw_serde] +pub struct Config { + /// The owner of the contract + pub owner: Addr, +} diff --git a/packages/astroport/src/lib.rs b/packages/astroport/src/lib.rs index f06847437..2b11c63a1 100644 --- a/packages/astroport/src/lib.rs +++ b/packages/astroport/src/lib.rs @@ -2,6 +2,7 @@ pub mod asset; pub mod common; pub mod cosmwasm_ext; pub mod cw20_ics20; +pub mod cw20_tf_converter; pub mod factory; pub mod fee_granter; pub mod generator; From ca821b39170a98d1ce5711fcd8d44cf47b53a0e3 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:53:52 +0400 Subject: [PATCH 10/84] feat(astro converter): contract which converts old cw20 ASTRO -> native ASTRO --- Cargo.lock | 426 +++++++++++++--- .../periphery/astro_converter/.cargo/config | 6 + .../periphery/astro_converter/.editorconfig | 11 + .../periphery/astro_converter/Cargo.toml | 20 + contracts/periphery/astro_converter/README.md | 1 + .../periphery/astro_converter/rustfmt.toml | 15 + .../periphery/astro_converter/src/contract.rs | 480 ++++++++++++++++++ .../periphery/astro_converter/src/error.rs | 27 + .../periphery/astro_converter/src/lib.rs | 3 + .../periphery/astro_converter/src/state.rs | 5 + .../astro_converter_neutron/.cargo/config | 6 + .../astro_converter_neutron/.editorconfig | 11 + .../astro_converter_neutron/Cargo.toml | 18 + .../astro_converter_neutron/README.md | 1 + .../astro_converter_neutron/rustfmt.toml | 15 + .../astro_converter_neutron/src/contract.rs | 269 ++++++++++ .../astro_converter_neutron/src/lib.rs | 1 + packages/astroport/src/astro_converter.rs | 35 ++ packages/astroport/src/lib.rs | 1 + 19 files changed, 1285 insertions(+), 66 deletions(-) create mode 100644 contracts/periphery/astro_converter/.cargo/config create mode 100644 contracts/periphery/astro_converter/.editorconfig create mode 100644 contracts/periphery/astro_converter/Cargo.toml create mode 100644 contracts/periphery/astro_converter/README.md create mode 100644 contracts/periphery/astro_converter/rustfmt.toml create mode 100644 contracts/periphery/astro_converter/src/contract.rs create mode 100644 contracts/periphery/astro_converter/src/error.rs create mode 100644 contracts/periphery/astro_converter/src/lib.rs create mode 100644 contracts/periphery/astro_converter/src/state.rs create mode 100644 contracts/periphery/astro_converter_neutron/.cargo/config create mode 100644 contracts/periphery/astro_converter_neutron/.editorconfig create mode 100644 contracts/periphery/astro_converter_neutron/Cargo.toml create mode 100644 contracts/periphery/astro_converter_neutron/README.md create mode 100644 contracts/periphery/astro_converter_neutron/rustfmt.toml create mode 100644 contracts/periphery/astro_converter_neutron/src/contract.rs create mode 100644 contracts/periphery/astro_converter_neutron/src/lib.rs create mode 100644 packages/astroport/src/astro_converter.rs diff --git a/Cargo.lock b/Cargo.lock index f4905cdf4..f8b50fff1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,6 +38,32 @@ dependencies = [ "cosmwasm-std", ] +[[package]] +name = "astro-token-converter" +version = "0.1.0" +dependencies = [ + "astroport", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.1", + "cw2 1.1.0", + "cw20 0.15.1", + "thiserror", +] + +[[package]] +name = "astro-token-converter-neutron" +version = "0.1.0" +dependencies = [ + "astro-token-converter", + "astroport", + "cosmwasm-std", + "cw-utils 1.0.1", + "cw2 1.1.0", + "neutron-sdk", +] + [[package]] name = "astroport" version = "3.8.0" @@ -74,7 +100,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-controllers 1.1.0", - "cw-storage-plus 1.1.0", + "cw-storage-plus 1.2.0", "cw-utils 1.0.1", "cw2 1.1.0", "cw20 1.1.0", @@ -116,7 +142,7 @@ dependencies = [ "cw20 0.15.1", "itertools 0.10.5", "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -125,7 +151,7 @@ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ "astroport", - "cosmos-sdk-proto", + "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", @@ -162,7 +188,7 @@ dependencies = [ "cw721-base", "generator-controller", "generator-proxy-to-vkr", - "protobuf", + "protobuf 2.28.0", "thiserror", "valkyrie", "valkyrie-lp-staking", @@ -261,7 +287,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", - "cw-storage-plus 1.1.0", + "cw-storage-plus 1.2.0", "cw20 0.15.1", "cw20-base 0.15.1", "derivative", @@ -402,7 +428,7 @@ dependencies = [ "integer-sqrt", "proptest", "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -509,7 +535,7 @@ dependencies = [ "astroport-factory", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 1.1.0", + "cw-storage-plus 1.2.0", "cw20 1.1.0", "itertools 0.11.0", "thiserror", @@ -568,7 +594,7 @@ dependencies = [ "cw-utils 1.0.1", "cw2 0.15.1", "cw20 0.15.1", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -655,11 +681,17 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" -version = "0.13.1" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "base64ct" @@ -667,6 +699,12 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + [[package]] name = "bigint" version = "4.4.3" @@ -724,9 +762,9 @@ dependencies = [ [[package]] name = "bnum" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "845141a4fade3f790628b7daaaa298a25b204fb28907eb54febe5142db6ce653" +checksum = "ab9008b6bb9fc80b5277f2fe481c09e828743d9151203e804583eb4c9e15b31d" [[package]] name = "byteorder" @@ -780,28 +818,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73c9d2043a9e617b0d602fbc0a0ecd621568edbf3a9774890a6d562389bd8e1c" dependencies = [ "prost 0.11.9", - "prost-types", - "tendermint-proto", + "prost-types 0.11.9", + "tendermint-proto 0.32.2", +] + +[[package]] +name = "cosmos-sdk-proto" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32560304ab4c365791fd307282f76637213d8083c1a98490c35159cd67852237" +dependencies = [ + "prost 0.12.3", + "prost-types 0.12.3", + "tendermint-proto 0.34.0", ] [[package]] name = "cosmwasm-crypto" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e272708a9745dad8b591ef8a718571512130f2b39b33e3d7a27c558e3069394" +checksum = "d8bb3c77c3b7ce472056968c745eb501c440fbc07be5004eba02782c35bfbbe3" dependencies = [ "digest 0.10.7", + "ecdsa 0.16.9", "ed25519-zebra", - "k256", + "k256 0.13.2", "rand_core 0.6.4", "thiserror", ] [[package]] name = "cosmwasm-derive" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "296db6a3caca5283425ae0cf347f4e46999ba3f6620dbea8939a0e00347831ce" +checksum = "fea73e9162e6efde00018d55ed0061e93a108b5d6ec4548b4f8ce3c706249687" dependencies = [ "syn 1.0.109", ] @@ -832,11 +882,12 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5e05a95fd2a420cca50f4e94eb7e70648dac64db45e90403997ebefeb143bd" +checksum = "04d6864742e3a7662d024b51a94ea81c9af21db6faea2f9a6d2232bb97c6e53e" dependencies = [ "base64", + "bech32", "bnum", "cosmwasm-crypto", "cosmwasm-derive", @@ -845,8 +896,9 @@ dependencies = [ "hex", "schemars", "serde", - "serde-json-wasm", + "serde-json-wasm 0.5.1", "sha2 0.10.7", + "static_assertions 1.1.0", "thiserror", ] @@ -893,6 +945,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -938,7 +1002,7 @@ checksum = "d5d8edce4b78785f36413f67387e4be7d0cb7d032b5d4164bcc024f9c3f3f2ea" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 1.1.0", + "cw-storage-plus 1.2.0", "cw-utils 1.0.1", "schemars", "serde", @@ -971,7 +1035,7 @@ source = "git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_coz dependencies = [ "anyhow", "cosmwasm-std", - "cw-storage-plus 1.1.0", + "cw-storage-plus 1.2.0", "cw-utils 1.0.1", "derivative", "itertools 0.11.0", @@ -989,11 +1053,11 @@ source = "git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1a dependencies = [ "anyhow", "cosmwasm-std", - "cw-storage-plus 1.1.0", + "cw-storage-plus 1.2.0", "cw-utils 1.0.1", "derivative", "itertools 0.10.5", - "k256", + "k256 0.11.6", "prost 0.9.0", "schemars", "serde", @@ -1035,9 +1099,9 @@ dependencies = [ [[package]] name = "cw-storage-plus" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f0e92a069d62067f3472c62e30adedb4cab1754725c0f2a682b3128d2bf3c79" +checksum = "d5ff29294ee99373e2cd5fd21786a3c0ced99a52fec2ca347d565489c61b723c" dependencies = [ "cosmwasm-std", "schemars", @@ -1172,7 +1236,7 @@ checksum = "29ac2dc7a55ad64173ca1e0a46697c31b7a5c51342f55a1e84a724da4eb99908" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 1.1.0", + "cw-storage-plus 1.2.0", "schemars", "serde", "thiserror", @@ -1270,7 +1334,7 @@ checksum = "0b3ad456059901a36cfa68b596d85d579c3df2b797dae9950dc34c27e14e995f" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 1.1.0", + "cw-storage-plus 1.2.0", "cw-utils 1.0.1", "cw2 1.1.0", "cw20 1.1.0", @@ -1353,6 +1417,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "deranged" version = "0.3.7" @@ -1386,6 +1460,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid", "crypto-common", "subtle", ] @@ -1408,10 +1483,24 @@ version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" dependencies = [ - "der", - "elliptic-curve", - "rfc6979", - "signature", + "der 0.6.1", + "elliptic-curve 0.12.3", + "rfc6979 0.3.1", + "signature 1.6.4", +] + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der 0.7.8", + "digest 0.10.7", + "elliptic-curve 0.13.8", + "rfc6979 0.4.0", + "signature 2.2.0", + "spki 0.7.3", ] [[package]] @@ -1441,16 +1530,35 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" dependencies = [ - "base16ct", - "crypto-bigint", - "der", + "base16ct 0.1.1", + "crypto-bigint 0.4.9", + "der 0.6.1", + "digest 0.10.7", + "ff 0.12.1", + "generic-array", + "group 0.12.1", + "pkcs8 0.9.0", + "rand_core 0.6.4", + "sec1 0.3.0", + "subtle", + "zeroize", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct 0.2.0", + "crypto-bigint 0.5.5", "digest 0.10.7", - "ff", + "ff 0.13.0", "generic-array", - "group", - "pkcs8", + "group 0.13.0", + "pkcs8 0.10.2", "rand_core 0.6.4", - "sec1", + "sec1 0.7.3", "subtle", "zeroize", ] @@ -1528,6 +1636,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "fixed-hash" version = "0.3.2" @@ -1607,6 +1725,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1626,7 +1745,18 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ - "ff", + "ff 0.12.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.0", "rand_core 0.6.4", "subtle", ] @@ -1764,9 +1894,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" dependencies = [ "cfg-if", - "ecdsa", - "elliptic-curve", + "ecdsa 0.14.8", + "elliptic-curve 0.12.3", + "sha2 0.10.7", +] + +[[package]] +name = "k256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f01b677d82ef7a676aa37e099defd83a28e15687112cafdd112d60236b6115b" +dependencies = [ + "cfg-if", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "once_cell", "sha2 0.10.7", + "signature 2.2.0", ] [[package]] @@ -1812,6 +1956,23 @@ dependencies = [ "autocfg", ] +[[package]] +name = "neutron-sdk" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583150155911cb93ef38108259bcfdf19b85b75ef9e98dcd88927fcf24a809b3" +dependencies = [ + "bech32", + "cosmos-sdk-proto 0.20.0", + "cosmwasm-schema", + "cosmwasm-std", + "protobuf 3.3.0", + "schemars", + "serde", + "serde-json-wasm 1.0.0", + "thiserror", +] + [[package]] name = "num" version = "0.4.1" @@ -1947,8 +2108,18 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" dependencies = [ - "der", - "spki", + "der 0.6.1", + "spki 0.6.0", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.8", + "spki 0.7.3", ] [[package]] @@ -2030,6 +2201,16 @@ dependencies = [ "prost-derive 0.11.9", ] +[[package]] +name = "prost" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" +dependencies = [ + "bytes", + "prost-derive 0.12.3", +] + [[package]] name = "prost-derive" version = "0.9.0" @@ -2056,6 +2237,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "prost-derive" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" +dependencies = [ + "anyhow", + "itertools 0.11.0", + "proc-macro2", + "quote", + "syn 2.0.28", +] + [[package]] name = "prost-types" version = "0.11.9" @@ -2065,6 +2259,15 @@ dependencies = [ "prost 0.11.9", ] +[[package]] +name = "prost-types" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" +dependencies = [ + "prost 0.12.3", +] + [[package]] name = "protobuf" version = "2.28.0" @@ -2074,6 +2277,26 @@ dependencies = [ "bytes", ] +[[package]] +name = "protobuf" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65f4a8ec18723a734e5dc09c173e0abf9690432da5340285d536edcb4dac190" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror", +] + +[[package]] +name = "protobuf-support" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6872f4d4f4b98303239a2b5838f5bbbb77b01ffc892d627957f37a22d7cfe69c" +dependencies = [ + "thiserror", +] + [[package]] name = "pyo3" version = "0.18.3" @@ -2243,11 +2466,21 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" dependencies = [ - "crypto-bigint", + "crypto-bigint 0.4.9", "hmac", "zeroize", ] +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + [[package]] name = "rlp" version = "0.4.6" @@ -2296,9 +2529,9 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -2308,9 +2541,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -2330,10 +2563,24 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ - "base16ct", - "der", + "base16ct 0.1.1", + "der 0.6.1", + "generic-array", + "pkcs8 0.9.0", + "subtle", + "zeroize", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct 0.2.0", + "der 0.7.8", "generic-array", - "pkcs8", + "pkcs8 0.10.2", "subtle", "zeroize", ] @@ -2346,9 +2593,9 @@ checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" [[package]] name = "serde" -version = "1.0.180" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea67f183f058fe88a4e3ec6e2788e003840893b91bac4559cabedd00863b3ed" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -2362,6 +2609,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde-json-wasm" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c37d03f3b0f6b5f77c11af1e7c772de1c9af83e50bef7bb6069601900ba67b" +dependencies = [ + "serde", +] + [[package]] name = "serde_bytes" version = "0.11.12" @@ -2373,9 +2629,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.180" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e744d7782b686ab3b73267ef05697159cc0e5abbed3f47f9933165e5219036" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", @@ -2449,6 +2705,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + [[package]] name = "sim" version = "0.1.0" @@ -2491,7 +2757,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" dependencies = [ "base64ct", - "der", + "der 0.6.1", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der 0.7.8", ] [[package]] @@ -2573,7 +2849,25 @@ dependencies = [ "num-derive", "num-traits", "prost 0.11.9", - "prost-types", + "prost-types 0.11.9", + "serde", + "serde_bytes", + "subtle-encoding", + "time", +] + +[[package]] +name = "tendermint-proto" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc728a4f9e891d71adf66af6ecaece146f9c7a11312288a3107b3e1d6979aaf" +dependencies = [ + "bytes", + "flex-error", + "num-derive", + "num-traits", + "prost 0.12.3", + "prost-types 0.12.3", "serde", "serde_bytes", "subtle-encoding", @@ -2617,18 +2911,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", @@ -2903,6 +3197,6 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "zeroize" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" diff --git a/contracts/periphery/astro_converter/.cargo/config b/contracts/periphery/astro_converter/.cargo/config new file mode 100644 index 000000000..379205b72 --- /dev/null +++ b/contracts/periphery/astro_converter/.cargo/config @@ -0,0 +1,6 @@ +[alias] +wasm = "build --release --target wasm32-unknown-unknown" +wasm-debug = "build --target wasm32-unknown-unknown" +unit-test = "test --lib" +integration-test = "test --test integration" +schema = "run --example pair_concentrated_schema" diff --git a/contracts/periphery/astro_converter/.editorconfig b/contracts/periphery/astro_converter/.editorconfig new file mode 100644 index 000000000..3d36f20b1 --- /dev/null +++ b/contracts/periphery/astro_converter/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.rs] +indent_size = 4 diff --git a/contracts/periphery/astro_converter/Cargo.toml b/contracts/periphery/astro_converter/Cargo.toml new file mode 100644 index 000000000..fe1949dcd --- /dev/null +++ b/contracts/periphery/astro_converter/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "astro-token-converter" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +library = [] + +[dependencies] +astroport = { path = "../../../packages/astroport", version = "3" } +cosmwasm-std = { version = "1.5", features = ["stargate"]} +cosmwasm-schema = "1.5" +cw-storage-plus = "1.2" +cw2 = "1" +cw20 = "0.15" +cw-utils = "1" +thiserror = "1" diff --git a/contracts/periphery/astro_converter/README.md b/contracts/periphery/astro_converter/README.md new file mode 100644 index 000000000..b3db70e53 --- /dev/null +++ b/contracts/periphery/astro_converter/README.md @@ -0,0 +1 @@ +# Astroport cw20 -> native ASTRO converter \ No newline at end of file diff --git a/contracts/periphery/astro_converter/rustfmt.toml b/contracts/periphery/astro_converter/rustfmt.toml new file mode 100644 index 000000000..11a85e6a9 --- /dev/null +++ b/contracts/periphery/astro_converter/rustfmt.toml @@ -0,0 +1,15 @@ +# stable +newline_style = "unix" +hard_tabs = false +tab_spaces = 4 + +# unstable... should we require `rustup run nightly cargo fmt` ? +# or just update the style guide when they are stable? +#fn_single_line = true +#format_code_in_doc_comments = true +#overflow_delimited_expr = true +#reorder_impl_items = true +#struct_field_align_threshold = 20 +#struct_lit_single_line = true +#report_todo = "Always" + diff --git a/contracts/periphery/astro_converter/src/contract.rs b/contracts/periphery/astro_converter/src/contract.rs new file mode 100644 index 000000000..0a61aabcc --- /dev/null +++ b/contracts/periphery/astro_converter/src/contract.rs @@ -0,0 +1,480 @@ +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{ + attr, coin, coins, ensure, wasm_execute, BankMsg, CosmosMsg, CustomMsg, DepsMut, Env, IbcMsg, + IbcTimeout, MessageInfo, QuerierWrapper, Response, StdError, +}; +use cw2::set_contract_version; +use cw20::{Cw20ExecuteMsg, Cw20QueryMsg, Cw20ReceiveMsg}; +use cw_utils::{must_pay, nonpayable}; + +use astroport::asset::{validate_native_denom, AssetInfo}; +use astroport::astro_converter::{Config, ExecuteMsg, InstantiateMsg, DEFAULT_TIMEOUT}; + +use crate::error::ContractError; +use crate::state::CONFIG; + +const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); +const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + validate_native_denom(&msg.new_astro_denom)?; + msg.old_astro_asset_info.check(deps.api)?; + + if msg.old_astro_asset_info.is_ibc() { + ensure!( + msg.outpost_burn_params.is_some(), + StdError::generic_err("Burn params must be specified on outpost") + ); + } + + ensure!( + msg.old_astro_asset_info != AssetInfo::native(&msg.new_astro_denom), + StdError::generic_err("Cannot convert to the same asset") + ); + + let attrs = [ + attr("contract_name", CONTRACT_NAME), + attr("astro_old_denom", msg.old_astro_asset_info.to_string()), + attr("astro_new_denom", &msg.new_astro_denom), + ]; + + CONFIG.save( + deps.storage, + &Config { + old_astro_asset_info: msg.old_astro_asset_info, + new_astro_denom: msg.new_astro_denom, + outpost_burn_params: msg.outpost_burn_params, + }, + )?; + + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + + Ok(Response::default().add_attributes(attrs)) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + let config = CONFIG.load(deps.storage)?; + + match msg { + ExecuteMsg::Receive(cw20_msg) => cw20_receive(config, info, cw20_msg), + ExecuteMsg::Convert {} => convert(config, info), + ExecuteMsg::TransferForBurning { timeout } => { + ibc_transfer_for_burning(deps.querier, env, info, config, timeout) + } + ExecuteMsg::Burn {} => burn(deps.querier, env, info, config), + } +} + +pub fn cw20_receive( + config: Config, + info: MessageInfo, + cw20_msg: Cw20ReceiveMsg, +) -> Result, ContractError> { + nonpayable(&info)?; + + match config.old_astro_asset_info { + AssetInfo::Token { contract_addr } => { + if info.sender == contract_addr { + let bank_msg = BankMsg::Send { + to_address: cw20_msg.sender.to_string(), + amount: coins(cw20_msg.amount.u128(), config.new_astro_denom), + }; + + Ok(Response::new().add_message(bank_msg).add_attributes([ + attr("action", "convert"), + attr("type", "cw20:astro"), + attr("amount", cw20_msg.amount), + ])) + } else { + Err(ContractError::UnsupportedCw20Token(info.sender)) + } + } + AssetInfo::NativeToken { .. } => Err(ContractError::InvalidEndpoint {}), + } +} + +pub fn convert( + config: Config, + info: MessageInfo, +) -> Result, ContractError> { + match config.old_astro_asset_info { + AssetInfo::NativeToken { denom } => { + let amount = must_pay(&info, &denom)?; + + let bank_msg = BankMsg::Send { + to_address: info.sender.to_string(), + amount: coins(amount.u128(), config.new_astro_denom), + }; + + Ok(Response::new().add_message(bank_msg).add_attributes([ + attr("action", "convert"), + attr("type", "ibc:astro"), + attr("amount", amount), + ])) + } + AssetInfo::Token { .. } => Err(ContractError::InvalidEndpoint {}), + } +} + +pub fn ibc_transfer_for_burning( + querier: QuerierWrapper, + env: Env, + info: MessageInfo, + config: Config, + timeout: Option, +) -> Result { + nonpayable(&info)?; + match config.old_astro_asset_info { + AssetInfo::NativeToken { denom } => { + let amount = querier.query_balance(&env.contract.address, &denom)?.amount; + + ensure!( + !amount.is_zero(), + StdError::generic_err("No tokens to transfer") + ); + + let timeout = timeout.unwrap_or(DEFAULT_TIMEOUT); + let burn_params = config.outpost_burn_params.expect("No outpost burn params"); + + let ibc_transfer_msg = IbcMsg::Transfer { + channel_id: burn_params.old_astro_transfer_channel, + to_address: burn_params.terra_burn_addr, + amount: coin(amount.u128(), denom), + timeout: IbcTimeout::with_timestamp(env.block.time.plus_seconds(timeout)), + }; + + Ok(Response::new() + .add_message(CosmosMsg::Ibc(ibc_transfer_msg)) + .add_attributes([ + attr("action", "ibc_transfer_for_burning"), + attr("type", "ibc:astro"), + attr("amount", amount), + ])) + } + AssetInfo::Token { .. } => Err(ContractError::IbcTransferError {}), + } +} + +pub fn burn( + querier: QuerierWrapper, + env: Env, + info: MessageInfo, + config: Config, +) -> Result, ContractError> { + nonpayable(&info)?; + match config.old_astro_asset_info { + AssetInfo::Token { contract_addr } => { + let amount = querier + .query_wasm_smart::( + &contract_addr, + &Cw20QueryMsg::Balance { + address: env.contract.address.to_string(), + }, + )? + .balance; + + ensure!( + !amount.is_zero(), + StdError::generic_err("No tokens to burn") + ); + + let burn_msg = wasm_execute(contract_addr, &Cw20ExecuteMsg::Burn { amount }, vec![])?; + + Ok(Response::new().add_message(burn_msg).add_attributes([ + attr("action", "burn"), + attr("type", "cw20:astro"), + attr("amount", amount), + ])) + } + AssetInfo::NativeToken { .. } => Err(ContractError::BurnError {}), + } +} + +#[cfg(test)] +mod testing { + use cosmwasm_std::testing::{ + mock_dependencies, mock_dependencies_with_balance, mock_env, mock_info, MockQuerier, + }; + use cosmwasm_std::{ + from_json, to_json_binary, Addr, ContractResult, Empty, SubMsg, SystemResult, Uint128, + WasmMsg, WasmQuery, + }; + use cw_utils::PaymentError::{MissingDenom, NoFunds}; + + use astroport::astro_converter::OutpostBurnParams; + + use super::*; + + #[test] + fn test_instantiate() { + let mut deps = mock_dependencies(); + let mut msg = InstantiateMsg { + old_astro_asset_info: AssetInfo::native("uastro"), + new_astro_denom: "uastro".to_string(), + outpost_burn_params: None, + }; + let info = mock_info("creator", &[]); + let err = instantiate(deps.as_mut(), mock_env(), info.clone(), msg.clone()).unwrap_err(); + + assert_eq!( + err.to_string(), + "Generic error: Cannot convert to the same asset" + ); + + msg.old_astro_asset_info = AssetInfo::native("ibc/old_astro"); + + let err = instantiate(deps.as_mut(), mock_env(), info.clone(), msg.clone()).unwrap_err(); + assert_eq!( + err.to_string(), + "Generic error: Burn params must be specified on outpost" + ); + + msg.outpost_burn_params = Some(OutpostBurnParams { + terra_burn_addr: "terra1xxx".to_string(), + old_astro_transfer_channel: "channel-1".to_string(), + }); + + instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); + } + + #[test] + fn test_cw20_convert() { + let mut config = Config { + old_astro_asset_info: AssetInfo::native("uastro"), + new_astro_denom: "ibc/astro".to_string(), + outpost_burn_params: None, + }; + + let cw20_msg = Cw20ReceiveMsg { + sender: "sender".to_string(), + amount: 100u128.into(), + msg: Default::default(), + }; + let err = cw20_receive::( + config.clone(), + mock_info("random_cw20", &[]), + cw20_msg.clone(), + ) + .unwrap_err(); + assert_eq!(err, ContractError::InvalidEndpoint {}); + + config.old_astro_asset_info = AssetInfo::cw20_unchecked("terra1xxx"); + + let err = cw20_receive::( + config.clone(), + mock_info("random_cw20", &[]), + cw20_msg.clone(), + ) + .unwrap_err(); + assert_eq!( + err, + ContractError::UnsupportedCw20Token(Addr::unchecked("random_cw20")) + ); + + let res = cw20_receive::( + config.clone(), + mock_info("terra1xxx", &[]), + cw20_msg.clone(), + ) + .unwrap(); + + assert_eq!( + res.messages, + [SubMsg::new(CosmosMsg::Bank(BankMsg::Send { + to_address: cw20_msg.sender, + amount: coins(cw20_msg.amount.u128(), config.new_astro_denom) + }))] + ); + } + + #[test] + fn test_native_convert() { + let mut config = Config { + old_astro_asset_info: AssetInfo::cw20_unchecked("terra1xxx"), + new_astro_denom: "ibc/astro".to_string(), + outpost_burn_params: None, + }; + + let info = mock_info("sender", &[]); + let err = convert::(config.clone(), info).unwrap_err(); + assert_eq!(err, ContractError::InvalidEndpoint {}); + + config.old_astro_asset_info = AssetInfo::native("ibc/old_astro"); + + let info = mock_info("sender", &[]); + let err = convert::(config.clone(), info).unwrap_err(); + assert_eq!(err, ContractError::PaymentError(NoFunds {})); + + let info = mock_info("sender", &coins(100, "random_coin")); + let err = convert::(config.clone(), info).unwrap_err(); + assert_eq!( + err, + ContractError::PaymentError(MissingDenom("ibc/old_astro".to_string())) + ); + + let info = mock_info("sender", &coins(100, "ibc/old_astro")); + let res = convert::(config.clone(), info.clone()).unwrap(); + assert_eq!( + res.messages, + [SubMsg::new(CosmosMsg::Bank(BankMsg::Send { + to_address: info.sender.to_string(), + amount: coins(100, config.new_astro_denom) + }))] + ); + } + + #[test] + fn test_ibc_transfer() { + let deps = mock_dependencies(); + let outpost_params = OutpostBurnParams { + terra_burn_addr: "terra1xxx".to_string(), + old_astro_transfer_channel: "channel-1".to_string(), + }; + let mut config = Config { + old_astro_asset_info: AssetInfo::cw20_unchecked("terra1xxx"), + new_astro_denom: "ibc/astro".to_string(), + outpost_burn_params: Some(outpost_params.clone()), + }; + + let info = mock_info("permissionless", &[]); + let err = ibc_transfer_for_burning( + deps.as_ref().querier, + mock_env(), + info.clone(), + config.clone(), + None, + ) + .unwrap_err(); + assert_eq!(err, ContractError::IbcTransferError {}); + + config.old_astro_asset_info = AssetInfo::native("ibc/old_astro"); + + let err = ibc_transfer_for_burning( + deps.as_ref().querier, + mock_env(), + info.clone(), + config.clone(), + None, + ) + .unwrap_err(); + assert_eq!(err.to_string(), "Generic error: No tokens to transfer"); + + let deps = mock_dependencies_with_balance(&coins(100, "ibc/old_astro")); + let env = mock_env(); + let res = ibc_transfer_for_burning( + deps.as_ref().querier, + env.clone(), + info, + config.clone(), + None, + ) + .unwrap(); + + assert_eq!( + res.messages, + [SubMsg::new(CosmosMsg::Ibc(IbcMsg::Transfer { + channel_id: outpost_params.old_astro_transfer_channel, + to_address: outpost_params.terra_burn_addr, + amount: coin(100, "ibc/old_astro"), + timeout: env.block.time.plus_seconds(DEFAULT_TIMEOUT).into(), + }))] + ); + } + + fn querier_wrapper_with_cw20_balances( + mock_querier: &mut MockQuerier, + balances: Vec<(Addr, Uint128)>, + ) -> QuerierWrapper { + let wasm_handler = move |query: &WasmQuery| match query { + WasmQuery::Smart { contract_addr, msg } if contract_addr == "terra1xxx" => { + let contract_result: ContractResult<_> = match from_json(msg) { + Ok(Cw20QueryMsg::Balance { address }) => { + let balance = balances + .iter() + .find_map(|(addr, balance)| { + if addr == &address { + Some(balance) + } else { + None + } + }) + .cloned() + .unwrap_or_else(Uint128::zero); + to_json_binary(&cw20::BalanceResponse { balance }).into() + } + _ => unimplemented!(), + }; + SystemResult::Ok(contract_result) + } + _ => unimplemented!(), + }; + mock_querier.update_wasm(wasm_handler); + + QuerierWrapper::new(&*mock_querier) + } + + #[test] + fn test_burn() { + let deps = mock_dependencies(); + let mut config = Config { + old_astro_asset_info: AssetInfo::native("ibc/old_astro"), + new_astro_denom: "ibc/astro".to_string(), + outpost_burn_params: None, + }; + + let info = mock_info("permissionless", &[]); + let err = burn::( + deps.as_ref().querier, + mock_env(), + info.clone(), + config.clone(), + ) + .unwrap_err(); + assert_eq!(err, ContractError::BurnError {}); + + config.old_astro_asset_info = AssetInfo::cw20_unchecked("terra1xxx"); + + let env = mock_env(); + let mut mock_querier: MockQuerier = MockQuerier::new(&[]); + let querier_wrapper = querier_wrapper_with_cw20_balances( + &mut mock_querier, + vec![(env.contract.address.clone(), 0u128.into())], + ); + let err = + burn::(querier_wrapper, mock_env(), info.clone(), config.clone()).unwrap_err(); + assert_eq!(err.to_string(), "Generic error: No tokens to burn"); + + let env = mock_env(); + let mut mock_querier: MockQuerier = MockQuerier::new(&[]); + let querier_wrapper = querier_wrapper_with_cw20_balances( + &mut mock_querier, + vec![(env.contract.address.clone(), 100u128.into())], + ); + let res = burn::(querier_wrapper, env.clone(), info, config.clone()).unwrap(); + + assert_eq!( + res.messages, + [SubMsg::new(CosmosMsg::Wasm(WasmMsg::Execute { + contract_addr: config.old_astro_asset_info.to_string(), + msg: to_json_binary(&Cw20ExecuteMsg::Burn { + amount: 100u128.into() + }) + .unwrap(), + funds: vec![], + }))] + ); + } +} diff --git a/contracts/periphery/astro_converter/src/error.rs b/contracts/periphery/astro_converter/src/error.rs new file mode 100644 index 000000000..02433f16f --- /dev/null +++ b/contracts/periphery/astro_converter/src/error.rs @@ -0,0 +1,27 @@ +use cosmwasm_std::{Addr, StdError}; +use cw_utils::PaymentError; +use thiserror::Error; + +/// This enum describes pair contract errors +#[derive(Error, Debug, PartialEq)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("{0}")] + PaymentError(#[from] PaymentError), + + #[error( + "Invalid endpoint. Consider cw20::send on Terra and converter::convert on Astroport outposts" + )] + InvalidEndpoint {}, + + #[error("Burn is only allowed on Terra")] + BurnError {}, + + #[error("Transfer to burn is only available on Astroport outposts")] + IbcTransferError {}, + + #[error("Invalid cw20 token: {0}")] + UnsupportedCw20Token(Addr), +} diff --git a/contracts/periphery/astro_converter/src/lib.rs b/contracts/periphery/astro_converter/src/lib.rs new file mode 100644 index 000000000..3d3e89c85 --- /dev/null +++ b/contracts/periphery/astro_converter/src/lib.rs @@ -0,0 +1,3 @@ +pub mod contract; +pub mod error; +pub mod state; diff --git a/contracts/periphery/astro_converter/src/state.rs b/contracts/periphery/astro_converter/src/state.rs new file mode 100644 index 000000000..e19fe92ca --- /dev/null +++ b/contracts/periphery/astro_converter/src/state.rs @@ -0,0 +1,5 @@ +use cw_storage_plus::Item; + +use astroport::astro_converter::Config; + +pub const CONFIG: Item = Item::new("config"); diff --git a/contracts/periphery/astro_converter_neutron/.cargo/config b/contracts/periphery/astro_converter_neutron/.cargo/config new file mode 100644 index 000000000..379205b72 --- /dev/null +++ b/contracts/periphery/astro_converter_neutron/.cargo/config @@ -0,0 +1,6 @@ +[alias] +wasm = "build --release --target wasm32-unknown-unknown" +wasm-debug = "build --target wasm32-unknown-unknown" +unit-test = "test --lib" +integration-test = "test --test integration" +schema = "run --example pair_concentrated_schema" diff --git a/contracts/periphery/astro_converter_neutron/.editorconfig b/contracts/periphery/astro_converter_neutron/.editorconfig new file mode 100644 index 000000000..3d36f20b1 --- /dev/null +++ b/contracts/periphery/astro_converter_neutron/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.rs] +indent_size = 4 diff --git a/contracts/periphery/astro_converter_neutron/Cargo.toml b/contracts/periphery/astro_converter_neutron/Cargo.toml new file mode 100644 index 000000000..5cf94d30a --- /dev/null +++ b/contracts/periphery/astro_converter_neutron/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "astro-token-converter-neutron" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +library = [] + +[dependencies] +neutron-sdk = "0.7.0" +astroport = { path = "../../../packages/astroport", version = "3" } +astro-token-converter = { path = "../astro_converter", version = "0.1", features = ["library"] } +cosmwasm-std = "1.5" +cw2 = "1.1" +cw-utils = "1" diff --git a/contracts/periphery/astro_converter_neutron/README.md b/contracts/periphery/astro_converter_neutron/README.md new file mode 100644 index 000000000..b3db70e53 --- /dev/null +++ b/contracts/periphery/astro_converter_neutron/README.md @@ -0,0 +1 @@ +# Astroport cw20 -> native ASTRO converter \ No newline at end of file diff --git a/contracts/periphery/astro_converter_neutron/rustfmt.toml b/contracts/periphery/astro_converter_neutron/rustfmt.toml new file mode 100644 index 000000000..11a85e6a9 --- /dev/null +++ b/contracts/periphery/astro_converter_neutron/rustfmt.toml @@ -0,0 +1,15 @@ +# stable +newline_style = "unix" +hard_tabs = false +tab_spaces = 4 + +# unstable... should we require `rustup run nightly cargo fmt` ? +# or just update the style guide when they are stable? +#fn_single_line = true +#format_code_in_doc_comments = true +#overflow_delimited_expr = true +#reorder_impl_items = true +#struct_field_align_threshold = 20 +#struct_lit_single_line = true +#report_todo = "Always" + diff --git a/contracts/periphery/astro_converter_neutron/src/contract.rs b/contracts/periphery/astro_converter_neutron/src/contract.rs new file mode 100644 index 000000000..bff5cb603 --- /dev/null +++ b/contracts/periphery/astro_converter_neutron/src/contract.rs @@ -0,0 +1,269 @@ +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{ + attr, coin, ensure, Deps, DepsMut, Env, MessageInfo, Response, StdError, StdResult, +}; +use cw2::set_contract_version; +use cw_utils::nonpayable; +use neutron_sdk::bindings::msg::{IbcFee, NeutronMsg}; +use neutron_sdk::bindings::query::NeutronQuery; +use neutron_sdk::query::min_ibc_fee::query_min_ibc_fee; +use neutron_sdk::sudo::msg::{RequestPacketTimeoutHeight, TransferSudoMsg}; + +use astro_token_converter::contract::{burn, convert, cw20_receive}; +use astro_token_converter::error::ContractError; +use astro_token_converter::state::CONFIG; +use astroport::asset::AssetInfo; +use astroport::astro_converter::{Config, ExecuteMsg, InstantiateMsg, DEFAULT_TIMEOUT}; + +const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); +const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); +/// Denom used to pay IBC fees +const FEE_DENOM: &str = "untrn"; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + astro_token_converter::contract::instantiate(deps, env, info, msg) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result, ContractError> { + let config = CONFIG.load(deps.storage)?; + + match msg { + ExecuteMsg::Receive(cw20_msg) => cw20_receive(config, info, cw20_msg), + ExecuteMsg::Convert {} => convert(config, info), + ExecuteMsg::TransferForBurning { timeout } => { + ibc_transfer_for_burning(deps.as_ref(), env, info, config, timeout) + } + ExecuteMsg::Burn {} => burn(deps.into_empty().querier, env, info, config), + } +} + +pub fn ibc_transfer_for_burning( + deps: Deps, + env: Env, + info: MessageInfo, + config: Config, + timeout: Option, +) -> Result, ContractError> { + nonpayable(&info)?; + match config.old_astro_asset_info { + AssetInfo::NativeToken { denom } => { + let ntrn_bal = deps + .querier + .query_balance(&env.contract.address, FEE_DENOM)? + .amount; + + ensure!( + ntrn_bal.u128() >= 200_000, + StdError::generic_err("Contract requires at least 0.2 NTRN in balance") + ); + + let amount = deps + .querier + .query_balance(&env.contract.address, &denom)? + .amount; + + ensure!( + !amount.is_zero(), + StdError::generic_err("No tokens to transfer") + ); + + let timeout = timeout.unwrap_or(DEFAULT_TIMEOUT); + let burn_params = config.outpost_burn_params.expect("No outpost burn params"); + + let fee = min_ntrn_ibc_fee( + query_min_ibc_fee(deps) + .map_err(|err| StdError::generic_err(err.to_string()))? + .min_fee, + ); + + let ibc_transfer_msg = NeutronMsg::IbcTransfer { + source_port: "transfer".to_string(), + source_channel: burn_params.old_astro_transfer_channel, + sender: env.contract.address.to_string(), + receiver: burn_params.terra_burn_addr, + token: coin(amount.u128(), denom), + timeout_height: RequestPacketTimeoutHeight { + revision_number: None, + revision_height: None, + }, + timeout_timestamp: env.block.time.plus_seconds(timeout).nanos(), + memo: "".to_string(), + fee, + }; + + Ok(Response::new() + .add_message(ibc_transfer_msg) + .add_attributes([ + attr("action", "ibc_transfer_for_burning"), + attr("type", "ibc:astro"), + attr("amount", amount), + ])) + } + AssetInfo::Token { .. } => Err(ContractError::IbcTransferError {}), + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn sudo(_deps: DepsMut, _env: Env, _msg: TransferSudoMsg) -> StdResult { + // Neutron requires sudo endpoint to be implemented + Ok(Response::new()) +} + +fn min_ntrn_ibc_fee(fee: IbcFee) -> IbcFee { + IbcFee { + recv_fee: fee.recv_fee, + ack_fee: fee + .ack_fee + .into_iter() + .filter(|a| a.denom == FEE_DENOM) + .collect(), + timeout_fee: fee + .timeout_fee + .into_iter() + .filter(|a| a.denom == FEE_DENOM) + .collect(), + } +} + +#[cfg(test)] +mod testing { + use std::marker::PhantomData; + + use cosmwasm_std::testing::{mock_env, mock_info, MockApi, MockQuerier, MockStorage}; + use cosmwasm_std::{ + coins, to_json_binary, Coin, ContractResult, CosmosMsg, OwnedDeps, SubMsg, SystemResult, + }; + use neutron_sdk::query::min_ibc_fee::MinIbcFeeResponse; + + use astroport::astro_converter::OutpostBurnParams; + + use super::*; + + fn mock_neutron_dependencies( + balances: &[(&str, &[Coin])], + ) -> OwnedDeps, NeutronQuery> { + let neutron_custom_handler = |request: &NeutronQuery| { + let contract_result: ContractResult<_> = match request { + NeutronQuery::MinIbcFee {} => to_json_binary(&MinIbcFeeResponse { + min_fee: IbcFee { + recv_fee: vec![], + ack_fee: coins(100_000, FEE_DENOM), + timeout_fee: coins(100_000, FEE_DENOM), + }, + }) + .into(), + _ => unimplemented!("Unsupported query request: {:?}", request), + }; + SystemResult::Ok(contract_result) + }; + + OwnedDeps { + storage: MockStorage::default(), + api: MockApi::default(), + querier: MockQuerier::new(balances).with_custom_handler(neutron_custom_handler), + custom_query_type: PhantomData, + } + } + + #[test] + fn test_neutron_ibc_transfer() { + let deps = mock_neutron_dependencies(&[]); + let outpost_params = OutpostBurnParams { + terra_burn_addr: "terra1xxx".to_string(), + old_astro_transfer_channel: "channel-1".to_string(), + }; + let mut config = Config { + old_astro_asset_info: AssetInfo::cw20_unchecked("terra1xxx"), + new_astro_denom: "ibc/astro".to_string(), + outpost_burn_params: Some(outpost_params.clone()), + }; + + let info = mock_info("permissionless", &[]); + let err = ibc_transfer_for_burning( + deps.as_ref(), + mock_env(), + info.clone(), + config.clone(), + None, + ) + .unwrap_err(); + assert_eq!(err, ContractError::IbcTransferError {}); + + config.old_astro_asset_info = AssetInfo::native("ibc/old_astro"); + + let env = mock_env(); + let deps = mock_neutron_dependencies(&[( + env.contract.address.as_str(), + &coins(100, "ibc/old_astro"), + )]); + let err = ibc_transfer_for_burning( + deps.as_ref(), + env.clone(), + info.clone(), + config.clone(), + None, + ) + .unwrap_err(); + assert_eq!( + err.to_string(), + "Generic error: Contract requires at least 0.2 NTRN in balance" + ); + + let deps = mock_neutron_dependencies(&[( + env.contract.address.as_str(), + &[coin(200_000, FEE_DENOM)], + )]); + let err = ibc_transfer_for_burning( + deps.as_ref(), + mock_env(), + info.clone(), + config.clone(), + None, + ) + .unwrap_err(); + assert_eq!(err.to_string(), "Generic error: No tokens to transfer"); + + let deps = mock_neutron_dependencies(&[( + env.contract.address.as_str(), + &[coin(100, "ibc/old_astro"), coin(200_000, FEE_DENOM)], + )]); + let res = ibc_transfer_for_burning(deps.as_ref(), env.clone(), info, config.clone(), None) + .unwrap(); + + assert_eq!( + res.messages, + [SubMsg::new(CosmosMsg::Custom(NeutronMsg::IbcTransfer { + source_port: "transfer".to_string(), + source_channel: outpost_params.old_astro_transfer_channel.to_string(), + sender: env.contract.address.to_string(), + receiver: outpost_params.terra_burn_addr.to_string(), + token: coin(100, "ibc/old_astro"), + timeout_height: RequestPacketTimeoutHeight { + revision_number: None, + revision_height: None, + }, + timeout_timestamp: env.block.time.plus_seconds(DEFAULT_TIMEOUT).nanos(), + memo: "".to_string(), + fee: IbcFee { + recv_fee: vec![], + ack_fee: coins(100_000, FEE_DENOM), + timeout_fee: coins(100_000, FEE_DENOM), + }, + }))] + ); + } +} diff --git a/contracts/periphery/astro_converter_neutron/src/lib.rs b/contracts/periphery/astro_converter_neutron/src/lib.rs new file mode 100644 index 000000000..2943dbb50 --- /dev/null +++ b/contracts/periphery/astro_converter_neutron/src/lib.rs @@ -0,0 +1 @@ +pub mod contract; diff --git a/packages/astroport/src/astro_converter.rs b/packages/astroport/src/astro_converter.rs new file mode 100644 index 000000000..a50aa0169 --- /dev/null +++ b/packages/astroport/src/astro_converter.rs @@ -0,0 +1,35 @@ +use cosmwasm_schema::cw_serde; +use cw20::Cw20ReceiveMsg; + +use crate::asset::AssetInfo; + +/// Default timeout for IBC transfer (5 minutes) +pub const DEFAULT_TIMEOUT: u64 = 300; + +#[cw_serde] +pub struct OutpostBurnParams { + pub terra_burn_addr: String, + pub old_astro_transfer_channel: String, +} + +#[cw_serde] +pub struct Config { + pub old_astro_asset_info: AssetInfo, + pub new_astro_denom: String, + pub outpost_burn_params: Option, +} + +#[cw_serde] +pub struct InstantiateMsg { + pub old_astro_asset_info: AssetInfo, + pub new_astro_denom: String, + pub outpost_burn_params: Option, +} + +#[cw_serde] +pub enum ExecuteMsg { + Convert {}, + Receive(Cw20ReceiveMsg), + TransferForBurning { timeout: Option }, + Burn {}, +} diff --git a/packages/astroport/src/lib.rs b/packages/astroport/src/lib.rs index 52da7aff8..5b15a82f9 100644 --- a/packages/astroport/src/lib.rs +++ b/packages/astroport/src/lib.rs @@ -31,6 +31,7 @@ pub mod xastro_token; #[cfg(test)] mod mock_querier; +pub mod astro_converter; pub mod incentives; pub mod liquidity_manager; #[cfg(test)] From c4c7903028d40a0c320eb9db99591fb80002a37a Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 13 Dec 2023 14:07:40 +0400 Subject: [PATCH 11/84] replace deprecated cosmwasm functions --- contracts/cw20_ics20/src/contract.rs | 42 +++++----- contracts/cw20_ics20/src/ibc.rs | 84 ++++++++++--------- contracts/factory/src/contract.rs | 20 ++--- contracts/factory/src/mock_querier.rs | 18 ++-- contracts/factory/src/testing.rs | 26 +++--- contracts/pair/src/contract.rs | 44 +++++----- contracts/pair/src/mock_querier.rs | 23 ++--- contracts/pair/src/testing.rs | 26 +++--- contracts/pair/tests/integration.rs | 46 +++++----- contracts/pair_astro_xastro/src/contract.rs | 12 +-- contracts/pair_astro_xastro/src/lib.rs | 4 +- .../pair_astro_xastro/tests/integration.rs | 14 ++-- contracts/pair_concentrated/src/contract.rs | 8 +- contracts/pair_concentrated/src/queries.rs | 24 +++--- contracts/pair_concentrated/tests/helper.rs | 14 ++-- .../pair_concentrated_inj/src/contract.rs | 10 +-- .../pair_concentrated_inj/src/queries.rs | 28 +++---- .../tests/helper/mocks.rs | 12 +-- .../pair_concentrated_inj/tests/helper/mod.rs | 20 ++--- contracts/pair_stable/src/contract.rs | 32 +++---- contracts/pair_stable/src/mock_querier.rs | 32 +++---- contracts/pair_stable/src/testing.rs | 46 +++++----- contracts/pair_stable/src/utils.rs | 4 +- contracts/pair_stable/tests/helper.rs | 8 +- contracts/pair_stable/tests/integration.rs | 68 +++++++-------- contracts/periphery/fee_granter/src/query.rs | 24 +++--- .../liquidity_manager/src/contract.rs | 6 +- .../periphery/liquidity_manager/src/query.rs | 10 +-- .../periphery/liquidity_manager/src/utils.rs | 4 +- .../liquidity_manager/tests/helper.rs | 16 ++-- .../native-coin-wrapper/src/contract.rs | 10 +-- .../native-coin-wrapper/tests/integration.rs | 12 +-- .../native_coin_registry/src/contract.rs | 11 ++- contracts/periphery/oracle/src/contract.rs | 4 +- .../periphery/oracle/src/mock_querier.rs | 32 +++---- .../periphery/oracle/tests/integration.rs | 17 ++-- .../periphery/shared_multisig/src/contract.rs | 28 ++++--- .../periphery/shared_multisig/src/utils.rs | 8 +- .../shared_multisig/tests/integration.rs | 6 +- contracts/router/src/contract.rs | 12 +-- contracts/router/src/operations.rs | 9 +- contracts/router/src/testing/mock_querier.rs | 18 ++-- contracts/router/src/testing/tests.rs | 24 +++--- contracts/router/tests/router_integration.rs | 16 ++-- .../tokenomics/generator/src/contract.rs | 82 +++++++++--------- .../tokenomics/generator/tests/integration.rs | 18 ++-- .../tests/test_utils/controller_helper.rs | 4 +- .../tests/test_utils/delegation_helper.rs | 8 +- .../tests/test_utils/escrow_helper.rs | 12 +-- .../incentives/examples/serialization_cost.rs | 10 +-- .../tokenomics/incentives/src/execute.rs | 4 +- contracts/tokenomics/incentives/src/query.rs | 26 +++--- .../incentives/tests/helper/helper.rs | 6 +- contracts/tokenomics/maker/src/contract.rs | 8 +- contracts/tokenomics/maker/src/testing.rs | 4 +- contracts/tokenomics/maker/src/utils.rs | 14 ++-- .../tokenomics/maker/tests/integration.rs | 18 ++-- contracts/tokenomics/staking/src/contract.rs | 16 ++-- .../tokenomics/staking/tests/integration.rs | 74 ++++++++-------- contracts/tokenomics/vesting/src/contract.rs | 18 ++-- contracts/tokenomics/vesting/src/testing.rs | 6 +- .../tokenomics/vesting/tests/integration.rs | 24 +++--- .../xastro_outpost_token/src/contract.rs | 22 ++--- .../tokenomics/xastro_token/src/contract.rs | 24 +++--- packages/astroport/src/asset.rs | 4 +- packages/astroport/src/generator.rs | 6 +- packages/astroport/src/mock_querier.rs | 24 +++--- packages/astroport/src/observation.rs | 4 +- packages/astroport/src/pair.rs | 25 +++--- packages/astroport/src/querier.rs | 4 +- packages/astroport/src/shared_multisig.rs | 4 +- packages/astroport/src/testing.rs | 6 +- packages/astroport_mocks/src/factory.rs | 10 ++- packages/astroport_mocks/src/generator.rs | 4 +- packages/astroport_mocks/src/staking.rs | 6 +- packages/astroport_pcl_common/src/utils.rs | 6 +- packages/pair_bonded/src/base.rs | 20 +++-- .../generator_proxy_template/src/contract.rs | 20 ++--- templates/pair_bonded_template/src/lib.rs | 9 +- 79 files changed, 761 insertions(+), 721 deletions(-) diff --git a/contracts/cw20_ics20/src/contract.rs b/contracts/cw20_ics20/src/contract.rs index 370e07962..a97aefac6 100644 --- a/contracts/cw20_ics20/src/contract.rs +++ b/contracts/cw20_ics20/src/contract.rs @@ -3,8 +3,8 @@ use astroport::cw20_ics20::TransferMsg; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - from_binary, to_binary, Addr, Binary, Deps, DepsMut, Env, IbcMsg, IbcQuery, MessageInfo, Order, - PortIdResponse, Response, StdError, StdResult, + from_json, to_json_binary, Addr, Binary, Deps, DepsMut, Env, IbcMsg, IbcQuery, MessageInfo, + Order, PortIdResponse, Response, StdError, StdResult, }; use semver::Version; @@ -91,7 +91,7 @@ pub fn execute_receive( ) -> Result { nonpayable(&info)?; - let msg: TransferMsg = from_binary(&wrapper.msg)?; + let msg: TransferMsg = from_json(&wrapper.msg)?; let amount = Amount::Cw20(Cw20Coin { address: info.sender.to_string(), amount: wrapper.amount, @@ -153,7 +153,7 @@ pub fn execute_transfer( // prepare ibc message let msg = IbcMsg::SendPacket { channel_id: msg.channel, - data: to_binary(&packet)?, + data: to_json_binary(&packet)?, timeout: timeout.into(), }; @@ -294,15 +294,15 @@ fn from_semver(err: semver::Error) -> StdError { #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Port {} => to_binary(&query_port(deps)?), - QueryMsg::ListChannels {} => to_binary(&query_list(deps)?), - QueryMsg::Channel { id } => to_binary(&query_channel(deps, id)?), - QueryMsg::Config {} => to_binary(&query_config(deps)?), - QueryMsg::Allowed { contract } => to_binary(&query_allowed(deps, contract)?), + QueryMsg::Port {} => to_json_binary(&query_port(deps)?), + QueryMsg::ListChannels {} => to_json_binary(&query_list(deps)?), + QueryMsg::Channel { id } => to_json_binary(&query_channel(deps, id)?), + QueryMsg::Config {} => to_json_binary(&query_config(deps)?), + QueryMsg::Allowed { contract } => to_json_binary(&query_allowed(deps, contract)?), QueryMsg::ListAllowed { start_after, limit } => { - to_binary(&list_allowed(deps, start_after, limit)?) + to_json_binary(&list_allowed(deps, start_after, limit)?) } - QueryMsg::Admin {} => to_binary(&ADMIN.query_admin(deps)?), + QueryMsg::Admin {} => to_json_binary(&ADMIN.query_admin(deps)?), } } @@ -416,7 +416,7 @@ mod test { let deps = setup(&["channel-3", "channel-7"], &[]); let raw_list = query(deps.as_ref(), mock_env(), QueryMsg::ListChannels {}).unwrap(); - let list_res: ListChannelsResponse = from_binary(&raw_list).unwrap(); + let list_res: ListChannelsResponse = from_json(&raw_list).unwrap(); assert_eq!(2, list_res.channels.len()); assert_eq!(mock_channel_info("channel-3"), list_res.channels[0]); assert_eq!(mock_channel_info("channel-7"), list_res.channels[1]); @@ -429,7 +429,7 @@ mod test { }, ) .unwrap(); - let chan_res: ChannelResponse = from_binary(&raw_channel).unwrap(); + let chan_res: ChannelResponse = from_json(&raw_channel).unwrap(); assert_eq!(chan_res.info, mock_channel_info("channel-3")); assert_eq!(0, chan_res.total_sent.len()); assert_eq!(0, chan_res.balances.len()); @@ -475,7 +475,7 @@ mod test { let expected_timeout = mock_env().block.time.plus_seconds(DEFAULT_TIMEOUT); assert_eq!(timeout, &expected_timeout.into()); assert_eq!(channel_id.as_str(), send_channel); - let msg: Ics20Packet = from_binary(data).unwrap(); + let msg: Ics20Packet = from_json(data).unwrap(); assert_eq!(msg.amount, Uint128::new(1234567)); assert_eq!(msg.denom.as_str(), "ucosm"); assert_eq!(msg.sender.as_str(), "foobar"); @@ -524,7 +524,7 @@ mod test { let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: "my-account".into(), amount: Uint128::new(888777666), - msg: to_binary(&transfer).unwrap(), + msg: to_json_binary(&transfer).unwrap(), }); // works with proper funds @@ -541,7 +541,7 @@ mod test { let expected_timeout = mock_env().block.time.plus_seconds(7777); assert_eq!(timeout, &expected_timeout.into()); assert_eq!(channel_id.as_str(), send_channel); - let msg: Ics20Packet = from_binary(data).unwrap(); + let msg: Ics20Packet = from_json(data).unwrap(); assert_eq!(msg.amount, Uint128::new(888777666)); assert_eq!(msg.denom, format!("cw20:{}", cw20_addr)); assert_eq!(msg.sender.as_str(), "my-account"); @@ -571,7 +571,7 @@ mod test { let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: "my-account".into(), amount: Uint128::new(888777666), - msg: to_binary(&transfer).unwrap(), + msg: to_json_binary(&transfer).unwrap(), }); // rejected as not on allow list @@ -648,7 +648,7 @@ mod test { let expected_timeout = mock_env().block.time.plus_seconds(DEFAULT_TIMEOUT); assert_eq!(timeout, &expected_timeout.into()); assert_eq!(channel_id.as_str(), send_channel); - let msg: Ics20Packet = from_binary(data).unwrap(); + let msg: Ics20Packet = from_json(data).unwrap(); assert_eq!(msg.amount, Uint128::new(1234567)); assert_eq!(msg.denom.as_str(), "ucosm"); assert_eq!(msg.sender.as_str(), "foobar"); @@ -677,7 +677,7 @@ mod test { #[test] fn memo_is_backwards_compatible() { let mut deps = setup(&["channel-5", "channel-10"], &[]); - let transfer: TransferMsg = cosmwasm_std::from_slice( + let transfer: TransferMsg = cosmwasm_std::from_json( br#"{"channel": "channel-5", "remote_address": "foreign-address"}"#, ) .unwrap(); @@ -692,7 +692,7 @@ mod test { timeout: _, }) = &res.messages[0].msg { - let msg: Ics20Packet = from_binary(data).unwrap(); + let msg: Ics20Packet = from_json(data).unwrap(); assert_eq!(msg.memo, None); // This is the old version of the Ics20Packet. Deserializing into it @@ -705,7 +705,7 @@ mod test { pub receiver: String, } - let _msg: Ics20PacketNoMemo = from_binary(data).unwrap(); + let _msg: Ics20PacketNoMemo = from_json(data).unwrap(); } else { panic!("Unexpected return message: {:?}", res.messages[0]); } diff --git a/contracts/cw20_ics20/src/ibc.rs b/contracts/cw20_ics20/src/ibc.rs index ab0e52510..a0dcf8e53 100644 --- a/contracts/cw20_ics20/src/ibc.rs +++ b/contracts/cw20_ics20/src/ibc.rs @@ -1,14 +1,15 @@ -use astroport::outpost_handler::Cw20HookMsg; -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; - use cosmwasm_schema::cw_serde; use cosmwasm_std::{ - attr, entry_point, from_binary, to_binary, BankMsg, Binary, CosmosMsg, Deps, DepsMut, Env, + attr, entry_point, from_json, to_json_binary, BankMsg, Binary, CosmosMsg, Deps, DepsMut, Env, IbcBasicResponse, IbcChannel, IbcChannelCloseMsg, IbcChannelConnectMsg, IbcChannelOpenMsg, IbcEndpoint, IbcOrder, IbcPacket, IbcPacketAckMsg, IbcPacketReceiveMsg, IbcPacketTimeoutMsg, IbcReceiveResponse, Reply, Response, SubMsg, SubMsgResult, Uint128, WasmMsg, }; +use cw20::Cw20ExecuteMsg; +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +use astroport::outpost_handler::Cw20HookMsg; use crate::amount::Amount; use crate::error::{ContractError, Never}; @@ -16,7 +17,6 @@ use crate::state::{ reduce_channel_balance, undo_reduce_channel_balance, ChannelInfo, ReplyArgs, ALLOW_LIST, CHANNEL_INFO, CONFIG, REPLY_ARGS, }; -use cw20::Cw20ExecuteMsg; pub const ICS20_VERSION: &str = "ics20-1"; pub const ICS20_ORDERING: IbcOrder = IbcOrder::Unordered; @@ -75,13 +75,13 @@ pub enum Ics20Ack { // create a serialized success message fn ack_success() -> Binary { let res = Ics20Ack::Result(b"1".into()); - to_binary(&res).unwrap() + to_json_binary(&res).unwrap() } // create a serialized error message fn ack_fail(err: String) -> Binary { let res = Ics20Ack::Error(err); - to_binary(&res).unwrap() + to_json_binary(&res).unwrap() } const RECEIVE_ID: u64 = 1337; @@ -240,7 +240,7 @@ fn do_ibc_packet_receive( deps: DepsMut, packet: &IbcPacket, ) -> Result { - let msg: Ics20Packet = from_binary(&packet.data)?; + let msg: Ics20Packet = from_json(&packet.data)?; let channel = packet.dest.channel_id.clone(); // If the token originated on the remote chain, it looks like "ucosm". @@ -280,7 +280,7 @@ fn do_ibc_packet_receive( let msg = Cw20ExecuteMsg::Send { contract: hook_contract.to_string(), amount: coin.amount, - msg: to_binary(&Cw20HookMsg::OutpostMemo { + msg: to_json_binary(&Cw20HookMsg::OutpostMemo { // The channel this packet was received on channel: packet.dest.channel_id.clone(), // Original sender from Outpost @@ -293,7 +293,7 @@ fn do_ibc_packet_receive( Ok(WasmMsg::Execute { contract_addr: coin.address, - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), funds: vec![], } .into()) @@ -355,7 +355,7 @@ pub fn ibc_packet_ack( // Design decision: should we trap error like in receive? // TODO: unsure... as it is now a failed ack handling would revert the tx and would be // retried again and again. is that good? - let ics20msg: Ics20Ack = from_binary(&msg.acknowledgement.data)?; + let ics20msg: Ics20Ack = from_json(&msg.acknowledgement.data)?; match ics20msg { Ics20Ack::Result(_) => on_packet_success(deps, msg.original_packet), Ics20Ack::Error(err) => on_packet_failure(deps, msg.original_packet, err), @@ -376,7 +376,7 @@ pub fn ibc_packet_timeout( // update the balance stored on this (channel, denom) index fn on_packet_success(_deps: DepsMut, packet: IbcPacket) -> Result { - let msg: Ics20Packet = from_binary(&packet.data)?; + let msg: Ics20Packet = from_json(&packet.data)?; // similar event messages like ibctransfer module let attributes = vec![ @@ -397,7 +397,7 @@ fn on_packet_failure( packet: IbcPacket, err: String, ) -> Result { - let ics_msg: Ics20Packet = from_binary(&packet.data)?; + let ics_msg: Ics20Packet = from_json(&packet.data)?; // undo the balance update on failure (as we pre-emptively added it on send) reduce_channel_balance( @@ -426,14 +426,14 @@ fn on_packet_failure( let cw20_msg = Cw20ExecuteMsg::Send { contract: hook_addr.to_string(), amount: coin.amount, - msg: to_binary(&Cw20HookMsg::TransferFailure { + msg: to_json_binary(&Cw20HookMsg::TransferFailure { receiver: ics_msg.receiver.clone(), })?, }; Ok(WasmMsg::Execute { contract_addr: coin.address, - msg: to_binary(&cw20_msg)?, + msg: to_json_binary(&cw20_msg)?, funds: vec![], } .into()) @@ -478,7 +478,7 @@ fn send_amount(amount: Amount, recipient: String) -> CosmosMsg { }; WasmMsg::Execute { contract_addr: coin.address, - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), funds: vec![], } .into() @@ -488,25 +488,27 @@ fn send_amount(amount: Amount, recipient: String) -> CosmosMsg { #[cfg(test)] mod test { - use super::*; - use crate::test_helpers::*; + use cosmwasm_std::testing::{mock_env, mock_info}; + use cosmwasm_std::{coins, to_json_vec, Addr, IbcEndpoint, IbcMsg, IbcTimeout, Timestamp}; + use cw20::Cw20ReceiveMsg; + + use astroport::cw20_ics20::TransferMsg; use crate::contract::{execute, migrate, query_channel}; use crate::msg::{ExecuteMsg, MigrateMsg}; - use astroport::cw20_ics20::TransferMsg; - use cosmwasm_std::testing::{mock_env, mock_info}; - use cosmwasm_std::{coins, to_vec, Addr, IbcEndpoint, IbcMsg, IbcTimeout, Timestamp}; - use cw20::Cw20ReceiveMsg; + use crate::test_helpers::*; + + use super::*; #[test] fn check_ack_json() { let success = Ics20Ack::Result(b"1".into()); let fail = Ics20Ack::Error("bad coin".into()); - let success_json = String::from_utf8(to_vec(&success).unwrap()).unwrap(); + let success_json = String::from_utf8(to_json_vec(&success).unwrap()).unwrap(); assert_eq!(r#"{"result":"MQ=="}"#, success_json.as_str()); - let fail_json = String::from_utf8(to_vec(&fail).unwrap()).unwrap(); + let fail_json = String::from_utf8(to_json_vec(&fail).unwrap()).unwrap(); assert_eq!(r#"{"error":"bad coin"}"#, fail_json.as_str()); } @@ -521,7 +523,7 @@ mod test { // Example message generated from the SDK let expected = r#"{"amount":"12345","denom":"ucosm","receiver":"wasm1fucynrfkrt684pm8jrt8la5h2csvs5cnldcgqc","sender":"cosmos1zedxv25ah8fksmg2lzrndrpkvsjqgk4zt5ff7n"}"#; - let encdoded = String::from_utf8(to_vec(&packet).unwrap()).unwrap(); + let encdoded = String::from_utf8(to_json_vec(&packet).unwrap()).unwrap(); assert_eq!(expected, encdoded.as_str()); } @@ -537,7 +539,7 @@ mod test { }; let exec = WasmMsg::Execute { contract_addr: address.into(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), funds: vec![], }; let mut msg = SubMsg::reply_on_error(exec, RECEIVE_ID); @@ -572,7 +574,7 @@ mod test { }; print!("Packet denom: {}", &data.denom); IbcPacket::new( - to_binary(&data).unwrap(), + to_json_binary(&data).unwrap(), IbcEndpoint { port_id: REMOTE_PORT.to_string(), channel_id: "channel-1234".to_string(), @@ -611,7 +613,7 @@ mod test { let msg = IbcPacketReceiveMsg::new(recv_packet.clone(), mock_relayer_addr()); let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_binary(&res.acknowledgement).unwrap(); + let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); let no_funds = Ics20Ack::Error(ContractError::InsufficientFunds {}.to_string()); assert_eq!(ack, no_funds); @@ -625,7 +627,7 @@ mod test { let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: "local-sender".to_string(), amount: Uint128::new(987654321), - msg: to_binary(&transfer).unwrap(), + msg: to_json_binary(&transfer).unwrap(), }); let info = mock_info(cw20_addr, &[]); let res = execute(deps.as_mut(), mock_env(), info, msg).unwrap(); @@ -642,7 +644,7 @@ mod test { &res.messages[0], &SubMsg::new(IbcMsg::SendPacket { channel_id: send_channel.to_string(), - data: to_binary(&expected).unwrap(), + data: to_json_binary(&expected).unwrap(), timeout: IbcTimeout::with_timestamp(timeout), }) ); @@ -656,7 +658,7 @@ mod test { let msg = IbcPacketReceiveMsg::new(recv_high_packet, mock_relayer_addr()); let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_binary(&res.acknowledgement).unwrap(); + let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); assert_eq!(ack, no_funds); // we can receive less than we sent @@ -667,7 +669,7 @@ mod test { cw20_payment(876543210, cw20_addr, "local-rcpt", Some(gas_limit)), res.messages[0] ); - let ack: Ics20Ack = from_binary(&res.acknowledgement).unwrap(); + let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); assert!(matches!(ack, Ics20Ack::Result(_))); // TODO: we need to call the reply block @@ -706,7 +708,7 @@ mod test { let msg = IbcPacketReceiveMsg::new(recv_packet, mock_relayer_addr()); let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_binary(&res.acknowledgement).unwrap(); + let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); let no_funds = Ics20Ack::Error(ContractError::InsufficientFunds {}.to_string()); assert_eq!(ack, no_funds); @@ -720,7 +722,7 @@ mod test { let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: "local-sender".to_string(), amount: Uint128::new(987654321), - msg: to_binary(&transfer).unwrap(), + msg: to_json_binary(&transfer).unwrap(), }); let info = mock_info(cw20_addr, &[]); let res = execute(deps.as_mut(), mock_env(), info, msg).unwrap(); @@ -737,7 +739,7 @@ mod test { &res.messages[0], &SubMsg::new(IbcMsg::SendPacket { channel_id: send_channel.to_string(), - data: to_binary(&expected).unwrap(), + data: to_json_binary(&expected).unwrap(), timeout: IbcTimeout::with_timestamp(timeout), }) ); @@ -751,7 +753,7 @@ mod test { let msg = IbcPacketReceiveMsg::new(recv_high_packet, mock_relayer_addr()); let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_binary(&res.acknowledgement).unwrap(); + let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); assert_eq!(ack, no_funds); // We can receive less than we sent, but if a memo is set without a handler, we fail @@ -760,7 +762,7 @@ mod test { // No messages should be sent assert_eq!(0, res.messages.len()); - let ack: Ics20Ack = from_binary(&res.acknowledgement).unwrap(); + let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); // We should get an error because no handler is set assert!(matches!(ack, Ics20Ack::Error(_))); @@ -787,7 +789,7 @@ mod test { let msg = IbcPacketReceiveMsg::new(recv_packet.clone(), mock_relayer_addr()); let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_binary(&res.acknowledgement).unwrap(); + let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); let no_funds = Ics20Ack::Error(ContractError::InsufficientFunds {}.to_string()); assert_eq!(ack, no_funds); @@ -810,7 +812,7 @@ mod test { let msg = IbcPacketReceiveMsg::new(recv_high_packet, mock_relayer_addr()); let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_binary(&res.acknowledgement).unwrap(); + let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); assert_eq!(ack, no_funds); // we can receive less than we sent @@ -821,7 +823,7 @@ mod test { native_payment(876543210, denom, "local-rcpt"), res.messages[0] ); - let ack: Ics20Ack = from_binary(&res.acknowledgement).unwrap(); + let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); assert!(matches!(ack, Ics20Ack::Result(_))); // only need to call reply block on error case diff --git a/contracts/factory/src/contract.rs b/contracts/factory/src/contract.rs index 40777437e..4f52be47f 100644 --- a/contracts/factory/src/contract.rs +++ b/contracts/factory/src/contract.rs @@ -3,8 +3,8 @@ use std::collections::HashSet; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, from_binary, to_binary, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Order, Reply, - ReplyOn, Response, StdError, StdResult, SubMsg, SubMsgResponse, SubMsgResult, WasmMsg, + attr, from_json, to_json_binary, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Order, + Reply, ReplyOn, Response, StdError, StdResult, SubMsg, SubMsgResponse, SubMsgResult, WasmMsg, }; use cw2::{get_contract_version, set_contract_version}; use cw_utils::parse_instantiate_response_data; @@ -305,7 +305,7 @@ pub fn execute_create_pair( msg: WasmMsg::Instantiate { admin: Some(config.owner.to_string()), code_id: pair_config.code_id, - msg: to_binary(&PairInstantiateMsg { + msg: to_json_binary(&PairInstantiateMsg { asset_infos: asset_infos.clone(), token_code_id: config.token_code_id, factory_addr: env.contract.address.to_string(), @@ -388,7 +388,7 @@ pub fn deregister( // sets the allocation point to zero for the lp_token messages.push(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: generator.to_string(), - msg: to_binary(&DeactivatePool { + msg: to_json_binary(&DeactivatePool { lp_token: pair_info.liquidity_token.to_string(), })?, funds: vec![], @@ -417,13 +417,13 @@ pub fn deregister( #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Config {} => to_binary(&query_config(deps)?), - QueryMsg::Pair { asset_infos } => to_binary(&query_pair(deps, asset_infos)?), + QueryMsg::Config {} => to_json_binary(&query_config(deps)?), + QueryMsg::Pair { asset_infos } => to_json_binary(&query_pair(deps, asset_infos)?), QueryMsg::Pairs { start_after, limit } => { - to_binary(&query_pairs(deps, start_after, limit)?) + to_json_binary(&query_pairs(deps, start_after, limit)?) } - QueryMsg::FeeInfo { pair_type } => to_binary(&query_fee_info(deps, pair_type)?), - QueryMsg::BlacklistedPairTypes {} => to_binary(&query_blacklisted_pair_types(deps)?), + QueryMsg::FeeInfo { pair_type } => to_json_binary(&query_fee_info(deps, pair_type)?), + QueryMsg::BlacklistedPairTypes {} => to_json_binary(&query_blacklisted_pair_types(deps)?), } } @@ -509,7 +509,7 @@ pub fn migrate(mut deps: DepsMut, _env: Env, msg: MigrateMsg) -> Result match contract_version.version.as_ref() { "1.2.0" | "1.2.1" => { - let msg: migration::MigrationMsg = from_binary(&msg.params)?; + let msg: migration::MigrationMsg = from_json(&msg.params)?; migrate_configs(&mut deps, &msg)?; } "1.3.0" | "1.5.1" => {} diff --git a/contracts/factory/src/mock_querier.rs b/contracts/factory/src/mock_querier.rs index f031ebfc9..4057ad3dd 100644 --- a/contracts/factory/src/mock_querier.rs +++ b/contracts/factory/src/mock_querier.rs @@ -1,11 +1,13 @@ -use astroport::asset::PairInfo; -use astroport::pair::QueryMsg; +use std::collections::HashMap; + use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage, MOCK_CONTRACT_ADDR}; use cosmwasm_std::{ - from_binary, from_slice, to_binary, Coin, Empty, OwnedDeps, Querier, QuerierResult, - QueryRequest, SystemError, SystemResult, WasmQuery, + from_json, to_json_binary, Coin, Empty, OwnedDeps, Querier, QuerierResult, QueryRequest, + SystemError, SystemResult, WasmQuery, }; -use std::collections::HashMap; + +use astroport::asset::PairInfo; +use astroport::pair::QueryMsg; /// mock_dependencies is a drop-in replacement for cosmwasm_std::testing::mock_dependencies. /// This uses the Astroport CustomQuerier. @@ -52,7 +54,7 @@ pub(crate) fn pairs_to_map(pairs: &[(&String, &PairInfo)]) -> HashMap QuerierResult { // MockQuerier doesn't support Custom, so we ignore it completely - let request: QueryRequest = match from_slice(bin_request) { + let request: QueryRequest = match from_json(bin_request) { Ok(v) => v, Err(e) => { return SystemResult::Err(SystemError::InvalidRequest { @@ -69,7 +71,7 @@ impl WasmMockQuerier { pub fn handle_query(&self, request: &QueryRequest) -> QuerierResult { match &request { QueryRequest::Wasm(WasmQuery::Smart {contract_addr, msg})// => { - => match from_binary(&msg).unwrap() { + => match from_json(&msg).unwrap() { QueryMsg::Pair {} => { let pair_info: PairInfo = match self.astroport_pair_querier.pairs.get(contract_addr) { @@ -81,7 +83,7 @@ impl WasmMockQuerier { } }; - SystemResult::Ok(to_binary(&pair_info).into()) + SystemResult::Ok(to_json_binary(&pair_info).into()) } _ => panic!("DO NOT ENTER HERE") } diff --git a/contracts/factory/src/testing.rs b/contracts/factory/src/testing.rs index 5940fe808..87ac0657e 100644 --- a/contracts/factory/src/testing.rs +++ b/contracts/factory/src/testing.rs @@ -1,5 +1,5 @@ use cosmwasm_std::{ - attr, from_binary, to_binary, Addr, Reply, ReplyOn, SubMsg, SubMsgResponse, SubMsgResult, + attr, from_json, to_json_binary, Addr, Reply, ReplyOn, SubMsg, SubMsgResponse, SubMsgResult, WasmMsg, }; @@ -132,7 +132,7 @@ fn proper_initialization() { instantiate(deps.as_mut(), env.clone(), info, msg.clone()).unwrap(); let query_res = query(deps.as_ref(), env, QueryMsg::Config {}).unwrap(); - let config_res: ConfigResponse = from_binary(&query_res).unwrap(); + let config_res: ConfigResponse = from_json(&query_res).unwrap(); assert_eq!(123u64, config_res.token_code_id); assert_eq!(msg.pair_configs, config_res.pair_configs); assert_eq!(Addr::unchecked(owner), config_res.owner); @@ -184,7 +184,7 @@ fn update_config() { // It worked, let's query the state let query_res = query(deps.as_ref(), env, QueryMsg::Config {}).unwrap(); - let config_res: ConfigResponse = from_binary(&query_res).unwrap(); + let config_res: ConfigResponse = from_json(&query_res).unwrap(); assert_eq!(200u64, config_res.token_code_id); assert_eq!(owner, config_res.owner); assert_eq!( @@ -286,7 +286,7 @@ fn update_owner() { // Let's query the state let config: ConfigResponse = - from_binary(&query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap()).unwrap(); + from_json(&query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap()).unwrap(); assert_eq!(new_owner, config.owner); } @@ -321,7 +321,7 @@ fn update_pair_config() { // It worked, let's query the state let query_res = query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap(); - let config_res: ConfigResponse = from_binary(&query_res).unwrap(); + let config_res: ConfigResponse = from_json(&query_res).unwrap(); assert_eq!(pair_configs, config_res.pair_configs); // Update config @@ -371,7 +371,7 @@ fn update_pair_config() { // It worked, let's query the state let query_res = query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap(); - let config_res: ConfigResponse = from_binary(&query_res).unwrap(); + let config_res: ConfigResponse = from_json(&query_res).unwrap(); assert_eq!(vec![pair_config.clone()], config_res.pair_configs); // Add second config @@ -393,7 +393,7 @@ fn update_pair_config() { // It worked, let's query the state let query_res = query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap(); - let config_res: ConfigResponse = from_binary(&query_res).unwrap(); + let config_res: ConfigResponse = from_json(&query_res).unwrap(); assert_eq!( vec![pair_config_custom.clone(), pair_config.clone()], config_res.pair_configs @@ -479,7 +479,7 @@ fn create_pair() { res.messages, vec![SubMsg { msg: WasmMsg::Instantiate { - msg: to_binary(&PairInstantiateMsg { + msg: to_json_binary(&PairInstantiateMsg { factory_addr: String::from(MOCK_CONTRACT_ADDR), asset_infos: asset_infos.clone(), token_code_id: msg.token_code_id, @@ -586,7 +586,7 @@ fn register() { ) .unwrap(); - let pair_res: PairInfo = from_binary(&query_res).unwrap(); + let pair_res: PairInfo = from_json(&query_res).unwrap(); assert_eq!( pair_res, PairInfo { @@ -660,7 +660,7 @@ fn register() { }; let res = query(deps.as_ref(), env.clone(), query_msg).unwrap(); - let pairs_res: PairsResponse = from_binary(&res).unwrap(); + let pairs_res: PairsResponse = from_json(&res).unwrap(); assert_eq!( pairs_res.pairs, vec![ @@ -685,7 +685,7 @@ fn register() { }; let res = query(deps.as_ref(), env.clone(), query_msg).unwrap(); - let pairs_res: PairsResponse = from_binary(&res).unwrap(); + let pairs_res: PairsResponse = from_json(&res).unwrap(); assert_eq!( pairs_res.pairs, vec![PairInfo { @@ -702,7 +702,7 @@ fn register() { }; let res = query(deps.as_ref(), env.clone(), query_msg).unwrap(); - let pairs_res: PairsResponse = from_binary(&res).unwrap(); + let pairs_res: PairsResponse = from_json(&res).unwrap(); assert_eq!( pairs_res.pairs, vec![PairInfo { @@ -749,7 +749,7 @@ fn register() { }; let res = query(deps.as_ref(), env.clone(), query_msg).unwrap(); - let pairs_res: PairsResponse = from_binary(&res).unwrap(); + let pairs_res: PairsResponse = from_json(&res).unwrap(); assert_eq!( pairs_res.pairs, vec![PairInfo { diff --git a/contracts/pair/src/contract.rs b/contracts/pair/src/contract.rs index 8bf979bbd..81a314a30 100644 --- a/contracts/pair/src/contract.rs +++ b/contracts/pair/src/contract.rs @@ -5,9 +5,9 @@ use std::vec; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, from_binary, to_binary, Addr, Binary, CosmosMsg, Decimal, Decimal256, Deps, DepsMut, Env, - Fraction, MessageInfo, QuerierWrapper, Reply, ReplyOn, Response, StdError, StdResult, SubMsg, - SubMsgResponse, SubMsgResult, Uint128, Uint256, Uint64, WasmMsg, + attr, from_json, to_json_binary, Addr, Binary, CosmosMsg, Decimal, Decimal256, Deps, DepsMut, + Env, Fraction, MessageInfo, QuerierWrapper, Reply, ReplyOn, Response, StdError, StdResult, + SubMsg, SubMsgResponse, SubMsgResult, Uint128, Uint256, Uint64, WasmMsg, }; use cw2::{get_contract_version, set_contract_version}; use cw20::{Cw20ExecuteMsg, Cw20ReceiveMsg, MinterResponse}; @@ -62,7 +62,7 @@ pub fn instantiate( let mut track_asset_balances = false; if let Some(init_params) = msg.init_params { - let params: XYKPoolParams = from_binary(&init_params)?; + let params: XYKPoolParams = from_json(&init_params)?; track_asset_balances = params.track_asset_balances.unwrap_or_default(); } @@ -97,7 +97,7 @@ pub fn instantiate( let sub_msg: Vec = vec![SubMsg { msg: WasmMsg::Instantiate { code_id: msg.token_code_id, - msg: to_binary(&TokenInstantiateMsg { + msg: to_json_binary(&TokenInstantiateMsg { name: token_name, symbol: "uLP".to_string(), decimals: 6, @@ -244,7 +244,7 @@ pub fn receive_cw20( info: MessageInfo, cw20_msg: Cw20ReceiveMsg, ) -> Result { - match from_binary(&cw20_msg.msg)? { + match from_json(&cw20_msg.msg)? { Cw20HookMsg::Swap { belief_price, max_spread, @@ -355,7 +355,7 @@ pub fn provide_liquidity( if let AssetInfo::Token { contract_addr, .. } = &pool.info { messages.push(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: contract_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::TransferFrom { + msg: to_json_binary(&Cw20ExecuteMsg::TransferFrom { owner: info.sender.to_string(), recipient: env.contract.address.to_string(), amount: deposits[i], @@ -473,7 +473,7 @@ fn mint_liquidity_token_message( if !auto_stake { return Ok(vec![CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: lp_token.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Mint { + msg: to_json_binary(&Cw20ExecuteMsg::Mint { recipient: recipient.to_string(), amount, })?, @@ -488,7 +488,7 @@ fn mint_liquidity_token_message( Ok(vec![ CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: lp_token.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Mint { + msg: to_json_binary(&Cw20ExecuteMsg::Mint { recipient: contract_address.to_string(), amount, })?, @@ -496,10 +496,10 @@ fn mint_liquidity_token_message( }), CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: lp_token.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Send { + msg: to_json_binary(&Cw20ExecuteMsg::Send { contract: generator.to_string(), amount, - msg: to_binary(&GeneratorHookMsg::DepositFor(recipient.to_string()))?, + msg: to_json_binary(&GeneratorHookMsg::DepositFor(recipient.to_string()))?, })?, funds: vec![], }), @@ -563,7 +563,7 @@ pub fn withdraw_liquidity( refund_assets[1].clone().into_msg(sender.clone())?, CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: config.pair_info.liquidity_token.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Burn { amount })?, + msg: to_json_binary(&Cw20ExecuteMsg::Burn { amount })?, funds: vec![], }), ]; @@ -794,7 +794,7 @@ pub fn update_config( let mut response = Response::default(); - match from_binary::(¶ms)? { + match from_json::(¶ms)? { XYKPoolUpdateParams::EnableAssetBalancesTracking => { if config.track_asset_balances { return Err(ContractError::AssetBalancesTrackingIsAlreadyEnabled {}); @@ -950,21 +950,21 @@ pub fn calculate_maker_fee( #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Pair {} => to_binary(&CONFIG.load(deps.storage)?.pair_info), - QueryMsg::Pool {} => to_binary(&query_pool(deps)?), - QueryMsg::Share { amount } => to_binary(&query_share(deps, amount)?), + QueryMsg::Pair {} => to_json_binary(&CONFIG.load(deps.storage)?.pair_info), + QueryMsg::Pool {} => to_json_binary(&query_pool(deps)?), + QueryMsg::Share { amount } => to_json_binary(&query_share(deps, amount)?), QueryMsg::Simulation { offer_asset, .. } => { - to_binary(&query_simulation(deps, offer_asset)?) + to_json_binary(&query_simulation(deps, offer_asset)?) } QueryMsg::ReverseSimulation { ask_asset, .. } => { - to_binary(&query_reverse_simulation(deps, ask_asset)?) + to_json_binary(&query_reverse_simulation(deps, ask_asset)?) } - QueryMsg::CumulativePrices {} => to_binary(&query_cumulative_prices(deps, env)?), - QueryMsg::Config {} => to_binary(&query_config(deps)?), + QueryMsg::CumulativePrices {} => to_json_binary(&query_cumulative_prices(deps, env)?), + QueryMsg::Config {} => to_json_binary(&query_config(deps)?), QueryMsg::AssetBalanceAt { asset_info, block_height, - } => to_binary(&query_asset_balances_at(deps, asset_info, block_height)?), + } => to_json_binary(&query_asset_balances_at(deps, asset_info, block_height)?), _ => Err(StdError::generic_err("Query is not supported")), } } @@ -1134,7 +1134,7 @@ pub fn query_config(deps: Deps) -> StdResult { Ok(ConfigResponse { block_time_last: config.block_time_last, - params: Some(to_binary(&XYKPoolConfig { + params: Some(to_json_binary(&XYKPoolConfig { track_asset_balances: config.track_asset_balances, fee_share: config.fee_share, })?), diff --git a/contracts/pair/src/mock_querier.rs b/contracts/pair/src/mock_querier.rs index 8f13c575a..19b509c58 100644 --- a/contracts/pair/src/mock_querier.rs +++ b/contracts/pair/src/mock_querier.rs @@ -1,13 +1,14 @@ +use std::collections::HashMap; + use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage, MOCK_CONTRACT_ADDR}; use cosmwasm_std::{ - from_binary, from_slice, to_binary, Addr, Coin, Empty, OwnedDeps, Querier, QuerierResult, - QueryRequest, SystemError, SystemResult, Uint128, WasmQuery, + from_json, to_json_binary, Addr, Coin, Empty, OwnedDeps, Querier, QuerierResult, QueryRequest, + SystemError, SystemResult, Uint128, WasmQuery, }; -use std::collections::HashMap; +use cw20::{BalanceResponse, Cw20QueryMsg, TokenInfoResponse}; use astroport::factory::FeeInfoResponse; use astroport::factory::QueryMsg::FeeInfo; -use cw20::{BalanceResponse, Cw20QueryMsg, TokenInfoResponse}; /// mock_dependencies is a drop-in replacement for cosmwasm_std::testing::mock_dependencies. /// This uses the Astroport CustomQuerier. @@ -62,7 +63,7 @@ pub(crate) fn balances_to_map( impl Querier for WasmMockQuerier { fn raw_query(&self, bin_request: &[u8]) -> QuerierResult { // MockQuerier doesn't support Custom, so we ignore it completely - let request: QueryRequest = match from_slice(bin_request) { + let request: QueryRequest = match from_json(bin_request) { Ok(v) => v, Err(e) => { return SystemResult::Err(SystemError::InvalidRequest { @@ -80,9 +81,9 @@ impl WasmMockQuerier { match &request { QueryRequest::Wasm(WasmQuery::Smart { contract_addr, msg }) => { if contract_addr == "factory" { - match from_binary(&msg).unwrap() { + match from_json(&msg).unwrap() { FeeInfo { .. } => SystemResult::Ok( - to_binary(&FeeInfoResponse { + to_json_binary(&FeeInfoResponse { fee_address: Some(Addr::unchecked("fee_address")), total_fee_bps: 30, maker_fee_bps: 1660, @@ -92,7 +93,7 @@ impl WasmMockQuerier { _ => panic!("DO NOT ENTER HERE"), } } else { - match from_binary(&msg).unwrap() { + match from_json(&msg).unwrap() { Cw20QueryMsg::TokenInfo {} => { let balances: &HashMap = match self.token_querier.balances.get(contract_addr) { @@ -109,7 +110,7 @@ impl WasmMockQuerier { } SystemResult::Ok( - to_binary(&TokenInfoResponse { + to_json_binary(&TokenInfoResponse { name: "mAPPL".to_string(), symbol: "mAPPL".to_string(), decimals: 6, @@ -135,7 +136,7 @@ impl WasmMockQuerier { }; SystemResult::Ok( - to_binary(&BalanceResponse { balance: *balance }).into(), + to_json_binary(&BalanceResponse { balance: *balance }).into(), ) } _ => panic!("DO NOT ENTER HERE"), @@ -144,7 +145,7 @@ impl WasmMockQuerier { } QueryRequest::Wasm(WasmQuery::Raw { contract_addr, .. }) => { if contract_addr == "factory" { - SystemResult::Ok(to_binary(&Vec::::new()).into()) + SystemResult::Ok(to_json_binary(&Vec::::new()).into()) } else { panic!("DO NOT ENTER HERE"); } diff --git a/contracts/pair/src/testing.rs b/contracts/pair/src/testing.rs index 9755bb39a..5bc52b668 100644 --- a/contracts/pair/src/testing.rs +++ b/contracts/pair/src/testing.rs @@ -1,6 +1,6 @@ use cosmwasm_std::testing::{mock_env, mock_info, MOCK_CONTRACT_ADDR}; use cosmwasm_std::{ - attr, to_binary, Addr, BankMsg, BlockInfo, Coin, CosmosMsg, Decimal, DepsMut, Env, Reply, + attr, to_json_binary, Addr, BankMsg, BlockInfo, Coin, CosmosMsg, Decimal, DepsMut, Env, Reply, ReplyOn, Response, StdError, SubMsg, SubMsgResponse, SubMsgResult, Timestamp, Uint128, WasmMsg, }; use cw20::{Cw20ExecuteMsg, Cw20ReceiveMsg, MinterResponse}; @@ -89,7 +89,7 @@ fn proper_initialization() { vec![SubMsg { msg: WasmMsg::Instantiate { code_id: 10u64, - msg: to_binary(&TokenInstantiateMsg { + msg: to_json_binary(&TokenInstantiateMsg { name: "UUSD-MAPP-LP".to_string(), symbol: "uLP".to_string(), decimals: 6, @@ -209,7 +209,7 @@ fn provide_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("asset0000"), - msg: to_binary(&Cw20ExecuteMsg::TransferFrom { + msg: to_json_binary(&Cw20ExecuteMsg::TransferFrom { owner: String::from("addr0000"), recipient: String::from(MOCK_CONTRACT_ADDR), amount: Uint128::from(100_000000000000000000u128), @@ -228,7 +228,7 @@ fn provide_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("liquidity0000"), - msg: to_binary(&Cw20ExecuteMsg::Mint { + msg: to_json_binary(&Cw20ExecuteMsg::Mint { recipient: String::from(MOCK_CONTRACT_ADDR), amount: Uint128::from(1000_u128), }) @@ -246,7 +246,7 @@ fn provide_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("liquidity0000"), - msg: to_binary(&Cw20ExecuteMsg::Mint { + msg: to_json_binary(&Cw20ExecuteMsg::Mint { recipient: String::from("addr0000"), amount: Uint128::from(99_999999999999999000u128), }) @@ -325,7 +325,7 @@ fn provide_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("asset0000"), - msg: to_binary(&Cw20ExecuteMsg::TransferFrom { + msg: to_json_binary(&Cw20ExecuteMsg::TransferFrom { owner: String::from("addr0000"), recipient: String::from(MOCK_CONTRACT_ADDR), amount: Uint128::from(100_000000000000000000u128), @@ -344,7 +344,7 @@ fn provide_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("liquidity0000"), - msg: to_binary(&Cw20ExecuteMsg::Mint { + msg: to_json_binary(&Cw20ExecuteMsg::Mint { recipient: String::from("addr0000"), amount: Uint128::from(50_000000000000000000u128), }) @@ -677,7 +677,7 @@ fn withdraw_liquidity() { // Withdraw liquidity let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: String::from("addr0000"), - msg: to_binary(&Cw20HookMsg::WithdrawLiquidity { assets: vec![] }).unwrap(), + msg: to_json_binary(&Cw20HookMsg::WithdrawLiquidity { assets: vec![] }).unwrap(), amount: Uint128::new(100u128), }); @@ -709,7 +709,7 @@ fn withdraw_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("asset0000"), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: String::from("addr0000"), amount: Uint128::from(100u128), }) @@ -727,7 +727,7 @@ fn withdraw_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("liquidity0000"), - msg: to_binary(&Cw20ExecuteMsg::Burn { + msg: to_json_binary(&Cw20ExecuteMsg::Burn { amount: Uint128::from(100u128), }) .unwrap(), @@ -939,7 +939,7 @@ fn try_native_to_token() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("asset0000"), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: String::from("addr0000"), amount: Uint128::from(expected_return_amount), }) @@ -1024,7 +1024,7 @@ fn try_token_to_native() { let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: String::from("addr0000"), amount: offer_amount, - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: Some(Decimal::percent(50)), @@ -1147,7 +1147,7 @@ fn try_token_to_native() { let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: String::from("addr0000"), amount: offer_amount, - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, diff --git a/contracts/pair/tests/integration.rs b/contracts/pair/tests/integration.rs index 1486973bd..c40883333 100644 --- a/contracts/pair/tests/integration.rs +++ b/contracts/pair/tests/integration.rs @@ -17,7 +17,7 @@ use astroport::token::InstantiateMsg as TokenInstantiateMsg; use astroport_mocks::cw_multi_test::{App, BasicApp, ContractWrapper, Executor}; use astroport_mocks::{astroport_address, MockGeneratorBuilder, MockXykPairBuilder}; use astroport_pair::error::ContractError; -use cosmwasm_std::{attr, to_binary, Addr, Coin, Decimal, Uint128, Uint64}; +use cosmwasm_std::{attr, to_json_binary, Addr, Coin, Decimal, Uint128, Uint64}; use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; const OWNER: &str = "owner"; @@ -290,7 +290,7 @@ fn test_provide_and_withdraw_liquidity() { let msg = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), amount: Uint128::from(50u8), - msg: to_binary(&Cw20HookMsg::WithdrawLiquidity { assets: vec![] }).unwrap(), + msg: to_json_binary(&Cw20HookMsg::WithdrawLiquidity { assets: vec![] }).unwrap(), }; // Try to send withdraw liquidity with FOO token let err = router @@ -339,7 +339,7 @@ fn test_provide_and_withdraw_liquidity() { ConfigResponse { block_time_last: router.block_info().time.seconds(), params: Some( - to_binary(&XYKPoolConfig { + to_json_binary(&XYKPoolConfig { track_asset_balances: false, fee_share: None, }) @@ -559,7 +559,7 @@ fn test_compatibility_of_tokens_with_different_precision() { let swap_msg = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -604,7 +604,7 @@ fn test_compatibility_of_tokens_with_different_precision() { let swap_msg = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -960,7 +960,7 @@ fn asset_balances_tracking_works_correctly() { // Enable asset balances tracking let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&XYKPoolUpdateParams::EnableAssetBalancesTracking).unwrap(), + params: to_json_binary(&XYKPoolUpdateParams::EnableAssetBalancesTracking).unwrap(), }; app.execute_contract(owner.clone(), pair_instance.clone(), &msg, &[]) .unwrap(); @@ -1103,7 +1103,7 @@ fn asset_balances_tracking_works_correctly() { ], pair_type: PairType::Xyk {}, init_params: Some( - to_binary(&XYKPoolParams { + to_json_binary(&XYKPoolParams { track_asset_balances: Some(true), }) .unwrap(), @@ -1164,7 +1164,7 @@ fn asset_balances_tracking_works_correctly() { // Check that enabling asset balances tracking can not be done if it is already enabled let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&XYKPoolUpdateParams::EnableAssetBalancesTracking).unwrap(), + params: to_json_binary(&XYKPoolUpdateParams::EnableAssetBalancesTracking).unwrap(), }; assert_eq!( app.execute_contract(owner.clone(), pair_instance.clone(), &msg, &[]) @@ -1339,7 +1339,7 @@ fn asset_balances_tracking_works_correctly() { let msg = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), amount: Uint128::new(500_000000), - msg: to_binary(&Cw20HookMsg::WithdrawLiquidity { assets: vec![] }).unwrap(), + msg: to_json_binary(&Cw20HookMsg::WithdrawLiquidity { assets: vec![] }).unwrap(), }; app.execute_contract(owner.clone(), lp_token_address, &msg, &[]) @@ -1454,7 +1454,7 @@ fn update_pair_config() { ConfigResponse { block_time_last: 0, params: Some( - to_binary(&XYKPoolConfig { + to_json_binary(&XYKPoolConfig { track_asset_balances: false, fee_share: None, }) @@ -1466,7 +1466,7 @@ fn update_pair_config() { ); let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&XYKPoolUpdateParams::EnableAssetBalancesTracking).unwrap(), + params: to_json_binary(&XYKPoolUpdateParams::EnableAssetBalancesTracking).unwrap(), }; assert_eq!( router @@ -1495,7 +1495,7 @@ fn update_pair_config() { ConfigResponse { block_time_last: 0, params: Some( - to_binary(&XYKPoolConfig { + to_json_binary(&XYKPoolConfig { track_asset_balances: true, fee_share: None, }) @@ -1585,7 +1585,7 @@ fn enable_disable_fee_sharing() { ConfigResponse { block_time_last: 0, params: Some( - to_binary(&XYKPoolConfig { + to_json_binary(&XYKPoolConfig { track_asset_balances: false, fee_share: None, }) @@ -1598,7 +1598,7 @@ fn enable_disable_fee_sharing() { // Attemt to set fee sharing higher than maximum let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&XYKPoolUpdateParams::EnableFeeShare { + params: to_json_binary(&XYKPoolUpdateParams::EnableFeeShare { fee_share_bps: MAX_FEE_SHARE_BPS + 1, fee_share_address: "contract".to_string(), }) @@ -1615,7 +1615,7 @@ fn enable_disable_fee_sharing() { // Attemt to set fee sharing to 0 let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&XYKPoolUpdateParams::EnableFeeShare { + params: to_json_binary(&XYKPoolUpdateParams::EnableFeeShare { fee_share_bps: 0, fee_share_address: "contract".to_string(), }) @@ -1634,7 +1634,7 @@ fn enable_disable_fee_sharing() { let fee_share_contract = "contract".to_string(); let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&XYKPoolUpdateParams::EnableFeeShare { + params: to_json_binary(&XYKPoolUpdateParams::EnableFeeShare { fee_share_bps, fee_share_address: fee_share_contract.clone(), }) @@ -1654,7 +1654,7 @@ fn enable_disable_fee_sharing() { ConfigResponse { block_time_last: 0, params: Some( - to_binary(&XYKPoolConfig { + to_json_binary(&XYKPoolConfig { track_asset_balances: false, fee_share: Some(FeeShareConfig { bps: fee_share_bps, @@ -1670,7 +1670,7 @@ fn enable_disable_fee_sharing() { // Disable fee sharing let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&XYKPoolUpdateParams::DisableFeeShare).unwrap(), + params: to_json_binary(&XYKPoolUpdateParams::DisableFeeShare).unwrap(), }; router @@ -1686,7 +1686,7 @@ fn enable_disable_fee_sharing() { ConfigResponse { block_time_last: 0, params: Some( - to_binary(&XYKPoolConfig { + to_json_binary(&XYKPoolConfig { track_asset_balances: false, fee_share: None, }) @@ -1827,7 +1827,7 @@ fn test_imbalanced_withdraw_is_disabled() { let msg_imbalance = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), amount: Uint128::from(50u8), - msg: to_binary(&Cw20HookMsg::WithdrawLiquidity { + msg: to_json_binary(&Cw20HookMsg::WithdrawLiquidity { assets: vec![Asset { info: AssetInfo::NativeToken { denom: "uusd".to_string(), @@ -2013,7 +2013,7 @@ fn test_fee_share( ], pair_type: PairType::Xyk {}, init_params: Some( - to_binary(&XYKPoolParams { + to_json_binary(&XYKPoolParams { track_asset_balances: Some(true), }) .unwrap(), @@ -2087,7 +2087,7 @@ fn test_fee_share( let fee_share_address = "contract_receiver".to_string(); let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&XYKPoolUpdateParams::EnableFeeShare { + params: to_json_binary(&XYKPoolUpdateParams::EnableFeeShare { fee_share_bps, fee_share_address: fee_share_address.clone(), }) @@ -2099,7 +2099,7 @@ fn test_fee_share( let swap_msg = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, diff --git a/contracts/pair_astro_xastro/src/contract.rs b/contracts/pair_astro_xastro/src/contract.rs index a9dffbd94..9450a7add 100644 --- a/contracts/pair_astro_xastro/src/contract.rs +++ b/contracts/pair_astro_xastro/src/contract.rs @@ -1,6 +1,6 @@ use crate::state::Params; use cosmwasm_std::{ - to_binary, Addr, CosmosMsg, Decimal, Deps, DepsMut, Env, MessageInfo, Response, StdError, + to_json_binary, Addr, CosmosMsg, Decimal, Deps, DepsMut, Env, MessageInfo, Response, StdError, StdResult, Uint128, WasmMsg, }; @@ -82,20 +82,20 @@ impl<'a> PairBonded<'a> for Contract<'a> { }) { messages.push(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: params.astro_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Send { + msg: to_json_binary(&Cw20ExecuteMsg::Send { contract: params.staking_addr.to_string(), amount: offer_asset.amount, - msg: to_binary(&StakingCw20HookMsg::Enter {})?, + msg: to_json_binary(&StakingCw20HookMsg::Enter {})?, })?, funds: vec![], })) } else { messages.push(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: params.xastro_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Send { + msg: to_json_binary(&Cw20ExecuteMsg::Send { contract: params.staking_addr.to_string(), amount: offer_asset.amount, - msg: to_binary(&StakingCw20HookMsg::Leave {})?, + msg: to_json_binary(&StakingCw20HookMsg::Leave {})?, })?, funds: vec![], })) @@ -106,7 +106,7 @@ impl<'a> PairBonded<'a> for Contract<'a> { messages.push(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: env.contract.address.to_string(), funds: vec![], - msg: to_binary(&ExecuteMsg::AssertAndSend { + msg: to_json_binary(&ExecuteMsg::AssertAndSend { offer_asset: Asset { amount: offer_asset.amount, info: offer_pool.info, diff --git a/contracts/pair_astro_xastro/src/lib.rs b/contracts/pair_astro_xastro/src/lib.rs index 8f6663633..76808db19 100644 --- a/contracts/pair_astro_xastro/src/lib.rs +++ b/contracts/pair_astro_xastro/src/lib.rs @@ -9,7 +9,7 @@ use astroport::pair_bonded::{ExecuteMsg, QueryMsg}; use astroport_pair_bonded::base::PairBonded; use astroport_pair_bonded::error::ContractError; use cosmwasm_std::{ - entry_point, from_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult, + entry_point, from_json, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult, }; use cw2::{get_contract_version, set_contract_version}; @@ -22,7 +22,7 @@ pub fn instantiate( msg: InstantiateMsg, ) -> Result { if let Some(ser_init_params) = &msg.init_params { - let init_params: InitParams = from_binary(ser_init_params)?; + let init_params: InitParams = from_json(ser_init_params)?; let contract = Contract::new("params"); contract .params diff --git a/contracts/pair_astro_xastro/tests/integration.rs b/contracts/pair_astro_xastro/tests/integration.rs index e5da73364..1c323c4e8 100644 --- a/contracts/pair_astro_xastro/tests/integration.rs +++ b/contracts/pair_astro_xastro/tests/integration.rs @@ -14,7 +14,7 @@ use astroport::staking::{ use astroport::pair_bonded::{ExecuteMsg, QueryMsg}; use astroport::token::InstantiateMsg as TokenInstantiateMsg; use astroport_pair_astro_xastro::state::Params; -use cosmwasm_std::{to_binary, Addr, Coin, Uint128}; +use cosmwasm_std::{to_json_binary, Addr, Coin, Uint128}; use cw20::{Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; use cw_multi_test::{App, ContractWrapper, Executor}; @@ -190,7 +190,7 @@ fn instantiate_astroport(mut router: &mut App, owner: &Addr) -> AstroportContrac token_code_id: 123, factory_addr: factory_instance.to_string(), init_params: Some( - to_binary(&Params { + to_json_binary(&Params { astro_addr: token_instance.clone(), xastro_addr: xastro_instance.clone(), staking_addr: staking_instance.clone(), @@ -301,7 +301,7 @@ fn test_pair_instantiation() { token_code_id: 123, factory_addr: factory_instance.to_string(), init_params: Some( - to_binary(&Params { + to_json_binary(&Params { astro_addr: token_instance.clone(), xastro_addr: xastro_instance.clone(), staking_addr: staking_instance.clone(), @@ -409,7 +409,7 @@ fn test_pair_swap() { &Cw20ExecuteMsg::Send { contract: contracts.pair_instance.clone().to_string(), amount: Uint128::from(10_000u64), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -429,7 +429,7 @@ fn test_pair_swap() { &Cw20ExecuteMsg::Send { contract: contracts.pair_instance.clone().to_string(), amount: Uint128::from(30_000u64), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -542,7 +542,7 @@ fn test_pair_swap() { &Cw20ExecuteMsg::Send { contract: contracts.pair_instance.clone().to_string(), amount: Uint128::from(9_000u64), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -562,7 +562,7 @@ fn test_pair_swap() { &Cw20ExecuteMsg::Send { contract: contracts.pair_instance.clone().to_string(), amount: Uint128::from(30_000u64), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, diff --git a/contracts/pair_concentrated/src/contract.rs b/contracts/pair_concentrated/src/contract.rs index 25fb704b9..aa584d3d0 100644 --- a/contracts/pair_concentrated/src/contract.rs +++ b/contracts/pair_concentrated/src/contract.rs @@ -3,7 +3,7 @@ use std::vec; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, from_binary, wasm_execute, wasm_instantiate, Addr, Attribute, Binary, CosmosMsg, Decimal, + attr, from_json, wasm_execute, wasm_instantiate, Addr, Attribute, Binary, CosmosMsg, Decimal, Decimal256, DepsMut, Env, MessageInfo, Reply, Response, StdError, StdResult, SubMsg, SubMsgResponse, SubMsgResult, Uint128, }; @@ -68,7 +68,7 @@ pub fn instantiate( check_asset_infos(deps.api, &msg.asset_infos)?; - let params: ConcentratedPoolParams = from_binary( + let params: ConcentratedPoolParams = from_json( &msg.init_params .ok_or(ContractError::InitParamsNotFound {})?, )?; @@ -320,7 +320,7 @@ fn receive_cw20( info: MessageInfo, cw20_msg: Cw20ReceiveMsg, ) -> Result { - match from_binary(&cw20_msg.msg)? { + match from_json(&cw20_msg.msg)? { Cw20HookMsg::Swap { belief_price, max_spread, @@ -883,7 +883,7 @@ fn update_config( let mut attrs: Vec = vec![]; - let action = match from_binary::(¶ms)? { + let action = match from_json::(¶ms)? { ConcentratedPoolUpdateParams::Update(update_params) => { config.pool_params.update_params(update_params)?; "update_params" diff --git a/contracts/pair_concentrated/src/queries.rs b/contracts/pair_concentrated/src/queries.rs index 7b5e70bd2..582eacedd 100644 --- a/contracts/pair_concentrated/src/queries.rs +++ b/contracts/pair_concentrated/src/queries.rs @@ -1,7 +1,7 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - to_binary, Binary, Decimal, Decimal256, Deps, Env, StdError, StdResult, Uint128, Uint64, + to_json_binary, Binary, Decimal, Decimal256, Deps, Env, StdError, StdResult, Uint128, Uint64, }; use itertools::Itertools; @@ -53,16 +53,16 @@ use crate::utils::{pool_info, query_pools}; #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Pair {} => to_binary(&CONFIG.load(deps.storage)?.pair_info), - QueryMsg::Pool {} => to_binary(&query_pool(deps)?), - QueryMsg::Share { amount } => to_binary( + QueryMsg::Pair {} => to_json_binary(&CONFIG.load(deps.storage)?.pair_info), + QueryMsg::Pool {} => to_json_binary(&query_pool(deps)?), + QueryMsg::Share { amount } => to_json_binary( &query_share(deps, amount).map_err(|err| StdError::generic_err(err.to_string()))?, ), - QueryMsg::Simulation { offer_asset, .. } => to_binary( + QueryMsg::Simulation { offer_asset, .. } => to_json_binary( &query_simulation(deps, env, offer_asset) .map_err(|err| StdError::generic_err(format!("{err}")))?, ), - QueryMsg::ReverseSimulation { ask_asset, .. } => to_binary( + QueryMsg::ReverseSimulation { ask_asset, .. } => to_json_binary( &query_reverse_simulation(deps, env, ask_asset) .map_err(|err| StdError::generic_err(format!("{err}")))?, ), @@ -70,15 +70,15 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { stringify!(Not implemented. Use {"observe": {"seconds_ago": ... }} instead.), )), QueryMsg::Observe { seconds_ago } => { - to_binary(&query_observation(deps, env, OBSERVATIONS, seconds_ago)?) + to_json_binary(&query_observation(deps, env, OBSERVATIONS, seconds_ago)?) } - QueryMsg::Config {} => to_binary(&query_config(deps, env)?), - QueryMsg::LpPrice {} => to_binary(&query_lp_price(deps, env)?), - QueryMsg::ComputeD {} => to_binary(&query_compute_d(deps, env)?), + QueryMsg::Config {} => to_json_binary(&query_config(deps, env)?), + QueryMsg::LpPrice {} => to_json_binary(&query_lp_price(deps, env)?), + QueryMsg::ComputeD {} => to_json_binary(&query_compute_d(deps, env)?), QueryMsg::AssetBalanceAt { asset_info, block_height, - } => to_binary(&query_asset_balances_at(deps, asset_info, block_height)?), + } => to_json_binary(&query_asset_balances_at(deps, asset_info, block_height)?), } } @@ -254,7 +254,7 @@ pub fn query_config(deps: Deps, env: Env) -> StdResult { Ok(ConfigResponse { block_time_last: 0, // keeping this field for backwards compatibility - params: Some(to_binary(&ConcentratedPoolConfig { + params: Some(to_json_binary(&ConcentratedPoolConfig { amp: amp_gamma.amp, gamma: amp_gamma.gamma, mid_fee: config.pool_params.mid_fee, diff --git a/contracts/pair_concentrated/tests/helper.rs b/contracts/pair_concentrated/tests/helper.rs index e7743ea8f..b4afa8729 100644 --- a/contracts/pair_concentrated/tests/helper.rs +++ b/contracts/pair_concentrated/tests/helper.rs @@ -9,7 +9,7 @@ use std::str::FromStr; use anyhow::Result as AnyResult; use cosmwasm_schema::cw_serde; use cosmwasm_std::{ - coin, from_slice, to_binary, Addr, Coin, Decimal, Decimal256, Empty, StdError, StdResult, + coin, from_json, to_json_binary, Addr, Coin, Decimal, Decimal256, Empty, StdError, StdResult, Uint128, }; use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg}; @@ -256,7 +256,7 @@ impl Helper { let init_pair_msg = astroport::factory::ExecuteMsg::CreatePair { pair_type, asset_infos: asset_infos.clone(), - init_params: Some(to_binary(¶ms).unwrap()), + init_params: Some(to_json_binary(¶ms).unwrap()), }; app.execute_contract(owner.clone(), factory.clone(), &init_pair_msg, &[])?; @@ -314,7 +314,7 @@ impl Helper { let msg = Cw20ExecuteMsg::Send { contract: self.pair_addr.to_string(), amount: Uint128::from(amount), - msg: to_binary(&Cw20HookMsg::WithdrawLiquidity { assets }).unwrap(), + msg: to_json_binary(&Cw20HookMsg::WithdrawLiquidity { assets }).unwrap(), }; self.app @@ -342,7 +342,7 @@ impl Helper { let msg = Cw20ExecuteMsg::Send { contract: self.pair_addr.to_string(), amount: offer_asset.amount, - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price, max_spread, @@ -484,7 +484,7 @@ impl Helper { .wrap() .query_wasm_raw(&self.pair_addr, b"config")? .ok_or_else(|| StdError::generic_err("Failed to find config in storage"))?; - from_slice(&binary) + from_json(&binary) } pub fn query_pool(&self) -> StdResult { @@ -522,7 +522,7 @@ impl Helper { user.clone(), self.pair_addr.clone(), &ExecuteMsg::UpdateConfig { - params: to_binary(action).unwrap(), + params: to_json_binary(action).unwrap(), }, &[], ) @@ -533,7 +533,7 @@ impl Helper { .app .wrap() .query_wasm_smart(&self.pair_addr, &QueryMsg::Config {})?; - let params: ConcentratedPoolConfig = from_slice( + let params: ConcentratedPoolConfig = from_json( &config_resp .params .ok_or_else(|| StdError::generic_err("Params not found in config response!"))?, diff --git a/contracts/pair_concentrated_inj/src/contract.rs b/contracts/pair_concentrated_inj/src/contract.rs index 372606e3e..6be558711 100644 --- a/contracts/pair_concentrated_inj/src/contract.rs +++ b/contracts/pair_concentrated_inj/src/contract.rs @@ -1,8 +1,8 @@ use std::vec; use cosmwasm_std::{ - attr, entry_point, from_binary, wasm_execute, wasm_instantiate, Addr, Binary, CustomMsg, - Decimal, Decimal256, DepsMut, Env, MessageInfo, Reply, Response, StdError, StdResult, SubMsg, + attr, entry_point, from_json, wasm_execute, wasm_instantiate, Addr, Binary, CustomMsg, Decimal, + Decimal256, DepsMut, Env, MessageInfo, Reply, Response, StdError, StdResult, SubMsg, SubMsgResponse, SubMsgResult, Uint128, }; use cw2::set_contract_version; @@ -69,7 +69,7 @@ pub fn instantiate( return Err(StdError::generic_err("asset_infos must contain exactly two elements").into()); } - let orderbook_params: ConcentratedInjObParams = from_binary( + let orderbook_params: ConcentratedInjObParams = from_json( &msg.init_params .ok_or(ContractError::InitParamsNotFound {})?, )?; @@ -325,7 +325,7 @@ fn receive_cw20( info: MessageInfo, cw20_msg: Cw20ReceiveMsg, ) -> Result, ContractError> { - match from_binary(&cw20_msg.msg)? { + match from_json(&cw20_msg.msg)? { Cw20HookMsg::WithdrawLiquidity { assets } => withdraw_liquidity( deps, env, @@ -891,7 +891,7 @@ fn update_config( return Err(ContractError::Unauthorized {}); } - let attributes = match from_binary::(¶ms)? { + let attributes = match from_json::(¶ms)? { ConcentratedObPoolUpdateParams::Update(update_params) => { let mut attrs = config.pool_params.update_params(update_params)?; attrs.push(attr("action", "update_params")); diff --git a/contracts/pair_concentrated_inj/src/queries.rs b/contracts/pair_concentrated_inj/src/queries.rs index 5f71ddfd3..0b629de5d 100644 --- a/contracts/pair_concentrated_inj/src/queries.rs +++ b/contracts/pair_concentrated_inj/src/queries.rs @@ -1,5 +1,5 @@ use cosmwasm_std::{ - entry_point, to_binary, Binary, CustomQuery, Decimal, Decimal256, Deps, Env, StdError, + entry_point, to_json_binary, Binary, CustomQuery, Decimal, Decimal256, Deps, Env, StdError, StdResult, Uint128, }; use injective_cosmwasm::InjectiveQueryWrapper; @@ -49,33 +49,33 @@ use crate::utils::query_pools; #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Pair {} => to_binary(&CONFIG.load(deps.storage)?.pair_info), - QueryMsg::Pool {} => { - to_binary(&query_pool(deps, env).map_err(|err| StdError::generic_err(err.to_string()))?) - } - QueryMsg::Share { amount } => to_binary( + QueryMsg::Pair {} => to_json_binary(&CONFIG.load(deps.storage)?.pair_info), + QueryMsg::Pool {} => to_json_binary( + &query_pool(deps, env).map_err(|err| StdError::generic_err(err.to_string()))?, + ), + QueryMsg::Share { amount } => to_json_binary( &query_share(deps, amount).map_err(|err| StdError::generic_err(err.to_string()))?, ), - QueryMsg::Simulation { offer_asset, .. } => to_binary( + QueryMsg::Simulation { offer_asset, .. } => to_json_binary( &query_simulation(deps, env, offer_asset) .map_err(|err| StdError::generic_err(format!("{err}")))?, ), - QueryMsg::ReverseSimulation { ask_asset, .. } => to_binary( + QueryMsg::ReverseSimulation { ask_asset, .. } => to_json_binary( &query_reverse_simulation(deps, env, ask_asset) .map_err(|err| StdError::generic_err(format!("{err}")))?, ), - QueryMsg::Config {} => to_binary(&query_config(deps, env)?), - QueryMsg::LpPrice {} => to_binary(&query_lp_price(deps, env)?), - QueryMsg::ComputeD {} => to_binary(&query_compute_d(deps, env)?), + QueryMsg::Config {} => to_json_binary(&query_config(deps, env)?), + QueryMsg::LpPrice {} => to_json_binary(&query_lp_price(deps, env)?), + QueryMsg::ComputeD {} => to_json_binary(&query_compute_d(deps, env)?), QueryMsg::CumulativePrices {} => Err(StdError::generic_err( stringify!(Not implemented. Use {"observe": {"seconds_ago": ... }} instead.), )), QueryMsg::Observe { seconds_ago } => { - to_binary(&query_observation(deps, env, OBSERVATIONS, seconds_ago)?) + to_json_binary(&query_observation(deps, env, OBSERVATIONS, seconds_ago)?) } QueryMsg::OrderbookState {} => { let resp: OrderbookStateResponse = OrderbookState::load(deps.storage)?.into(); - to_binary(&resp) + to_json_binary(&resp) } } } @@ -296,7 +296,7 @@ where let factory_config = query_factory_config(&deps.querier, &config.factory_addr)?; Ok(ConfigResponse { block_time_last: 0, // keeping this field for backwards compatibility - params: Some(to_binary(&ConcentratedPoolParams { + params: Some(to_json_binary(&ConcentratedPoolParams { amp: amp_gamma.amp, gamma: amp_gamma.gamma, mid_fee: config.pool_params.mid_fee, diff --git a/contracts/pair_concentrated_inj/tests/helper/mocks.rs b/contracts/pair_concentrated_inj/tests/helper/mocks.rs index 985a419f2..42498310f 100644 --- a/contracts/pair_concentrated_inj/tests/helper/mocks.rs +++ b/contracts/pair_concentrated_inj/tests/helper/mocks.rs @@ -16,7 +16,7 @@ use cosmwasm_schema::schemars::JsonSchema; use cosmwasm_schema::serde::de::DeserializeOwned; use cosmwasm_std::testing::MockApi; use cosmwasm_std::{ - attr, coin, coins, to_binary, Addr, Api, BankMsg, Binary, BlockInfo, Coin, CustomMsg, + attr, coin, coins, to_json_binary, Addr, Api, BankMsg, Binary, BlockInfo, Coin, CustomMsg, CustomQuery, Decimal256, DepsMut, Empty, Env, GovMsg, IbcMsg, IbcQuery, MemoryStorage, OverflowError, Querier, Reply, Response, StdError, Storage, SubMsgResponse, SubMsgResult, }; @@ -622,7 +622,7 @@ impl Module for InjMockModule { if let Some((base_denom, quote_denom)) = markets.get(&market_id) { // TODO: save min_quantity_tick_size and min_price_tick_size somewhere if needed // as currently they are hardcoded - Ok(to_binary(&SpotMarketResponse { + Ok(to_json_binary(&SpotMarketResponse { market: Some(SpotMarket { ticker: base_denom.to_string() + "/" + quote_denom, market_id, @@ -638,7 +638,7 @@ impl Module for InjMockModule { }), })?) } else { - Ok(to_binary(&SpotMarketResponse { market: None })?) + Ok(to_json_binary(&SpotMarketResponse { market: None })?) } } InjectiveQuery::SubaccountDeposit { @@ -661,7 +661,7 @@ impl Module for InjMockModule { .unwrap_or_default() }) .unwrap_or_default(); - Ok(to_binary(&SubaccountDepositResponse { + Ok(to_json_binary(&SubaccountDepositResponse { deposits: Deposit { available_balance: FPDecimal::from(balance), total_balance: FPDecimal::from(balance), @@ -690,7 +690,7 @@ impl Module for InjMockModule { }) .collect::>() }); - Ok(to_binary(&TraderSpotOrdersResponse { orders })?) + Ok(to_json_binary(&TraderSpotOrdersResponse { orders })?) } InjectiveQuery::WasmxRegisteredContractInfo { contract_address } => { let contract = self @@ -715,7 +715,7 @@ impl Module for InjMockModule { fund_mode: fund_mode.into(), } }); - Ok(to_binary(&QueryContractRegistrationInfoResponse { + Ok(to_json_binary(&QueryContractRegistrationInfoResponse { contract, })?) } diff --git a/contracts/pair_concentrated_inj/tests/helper/mod.rs b/contracts/pair_concentrated_inj/tests/helper/mod.rs index 5691dbca2..c672ef284 100644 --- a/contracts/pair_concentrated_inj/tests/helper/mod.rs +++ b/contracts/pair_concentrated_inj/tests/helper/mod.rs @@ -10,8 +10,8 @@ use anyhow::Result as AnyResult; use cosmwasm_schema::cw_serde; use cosmwasm_schema::schemars::JsonSchema; use cosmwasm_std::{ - coin, from_slice, to_binary, Addr, Coin, CustomMsg, CustomQuery, Decimal, Decimal256, StdError, - StdResult, Uint128, + coin, from_json, to_json_binary, Addr, Coin, CustomMsg, CustomQuery, Decimal, Decimal256, + StdError, StdResult, Uint128, }; use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg}; use derivative::Derivative; @@ -323,7 +323,7 @@ impl Helper { let params = if with_orderbook { let market_id = market_id.unwrap_or_else(|| calc_market_ids(&asset_infos).unwrap()[0].clone()); - to_binary(&ConcentratedInjObParams { + to_json_binary(&ConcentratedInjObParams { main_params: params, orderbook_config: OrderbookConfig { market_id, @@ -333,7 +333,7 @@ impl Helper { }) .unwrap() } else { - to_binary(¶ms).unwrap() + to_json_binary(¶ms).unwrap() }; let init_pair_msg = astroport::factory::ExecuteMsg::CreatePair { @@ -420,7 +420,7 @@ impl Helper { let msg = Cw20ExecuteMsg::Send { contract: self.pair_addr.to_string(), amount: Uint128::from(amount), - msg: to_binary(&Cw20HookMsg::WithdrawLiquidity { assets }).unwrap(), + msg: to_json_binary(&Cw20HookMsg::WithdrawLiquidity { assets }).unwrap(), }; self.app @@ -448,7 +448,7 @@ impl Helper { let msg = Cw20ExecuteMsg::Send { contract: self.pair_addr.to_string(), amount: offer_asset.amount, - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price, max_spread, @@ -523,7 +523,7 @@ impl Helper { .query_wasm_raw(&self.pair_addr, b"orderbook_config")? .unwrap(); - from_slice(&bin) + from_json(&bin) } pub fn query_ob_config_smart(&self) -> StdResult { @@ -615,7 +615,7 @@ impl Helper { .wrap() .query_wasm_raw(&self.pair_addr, b"config")? .ok_or_else(|| StdError::generic_err("Failed to find config in storage"))?; - from_slice(&binary) + from_json(&binary) } pub fn query_lp_price(&self) -> StdResult { @@ -633,7 +633,7 @@ impl Helper { user.clone(), self.pair_addr.clone(), &ExecuteMsg::UpdateConfig { - params: to_binary(action).unwrap(), + params: to_json_binary(action).unwrap(), }, &[], ) @@ -644,7 +644,7 @@ impl Helper { .app .wrap() .query_wasm_smart(&self.pair_addr, &QueryMsg::Config {})?; - let params: ConcentratedPoolParams = from_slice( + let params: ConcentratedPoolParams = from_json( &config_resp .params .ok_or_else(|| StdError::generic_err("Params not found in config response!"))?, diff --git a/contracts/pair_stable/src/contract.rs b/contracts/pair_stable/src/contract.rs index 0c75c7aea..86ee12956 100644 --- a/contracts/pair_stable/src/contract.rs +++ b/contracts/pair_stable/src/contract.rs @@ -5,9 +5,9 @@ use std::vec; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, from_binary, to_binary, wasm_execute, wasm_instantiate, Addr, Binary, CosmosMsg, Decimal, - Decimal256, Deps, DepsMut, Env, Fraction, MessageInfo, QuerierWrapper, Reply, Response, - StdError, StdResult, SubMsg, SubMsgResponse, SubMsgResult, Uint128, WasmMsg, + attr, from_json, to_json_binary, wasm_execute, wasm_instantiate, Addr, Binary, CosmosMsg, + Decimal, Decimal256, Deps, DepsMut, Env, Fraction, MessageInfo, QuerierWrapper, Reply, + Response, StdError, StdResult, SubMsg, SubMsgResponse, SubMsgResult, Uint128, WasmMsg, }; use cw2::{get_contract_version, set_contract_version}; use cw20::{Cw20ExecuteMsg, Cw20ReceiveMsg, MinterResponse}; @@ -78,7 +78,7 @@ pub fn instantiate( return Err(ContractError::InitParamsNotFound {}); } - let params: StablePoolParams = from_binary(&msg.init_params.unwrap())?; + let params: StablePoolParams = from_json(&msg.init_params.unwrap())?; if params.amp == 0 || params.amp > MAX_AMP { return Err(ContractError::IncorrectAmp {}); @@ -280,7 +280,7 @@ pub fn receive_cw20( info: MessageInfo, cw20_msg: Cw20ReceiveMsg, ) -> Result { - match from_binary(&cw20_msg.msg)? { + match from_json(&cw20_msg.msg)? { Cw20HookMsg::Swap { ask_asset_info, belief_price, @@ -408,7 +408,7 @@ pub fn provide_liquidity( if let AssetInfo::Token { contract_addr } = &deposit.info { messages.push(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: contract_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::TransferFrom { + msg: to_json_binary(&Cw20ExecuteMsg::TransferFrom { owner: info.sender.to_string(), recipient: env.contract.address.to_string(), amount: deposit.amount, @@ -780,17 +780,17 @@ pub fn calculate_maker_fee( #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Pair {} => to_binary(&CONFIG.load(deps.storage)?.pair_info), - QueryMsg::Pool {} => to_binary(&query_pool(deps)?), - QueryMsg::Share { amount } => to_binary(&query_share(deps, amount)?), + QueryMsg::Pair {} => to_json_binary(&CONFIG.load(deps.storage)?.pair_info), + QueryMsg::Pool {} => to_json_binary(&query_pool(deps)?), + QueryMsg::Share { amount } => to_json_binary(&query_share(deps, amount)?), QueryMsg::Simulation { offer_asset, ask_asset_info, - } => to_binary(&query_simulation(deps, env, offer_asset, ask_asset_info)?), + } => to_json_binary(&query_simulation(deps, env, offer_asset, ask_asset_info)?), QueryMsg::ReverseSimulation { offer_asset_info, ask_asset, - } => to_binary(&query_reverse_simulation( + } => to_json_binary(&query_reverse_simulation( deps, env, ask_asset, @@ -800,10 +800,10 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { stringify!(Not implemented. Use {"observe": {"seconds_ago": ... }} instead.), )), QueryMsg::Observe { seconds_ago } => { - to_binary(&query_observation(deps, env, OBSERVATIONS, seconds_ago)?) + to_json_binary(&query_observation(deps, env, OBSERVATIONS, seconds_ago)?) } - QueryMsg::Config {} => to_binary(&query_config(deps, env)?), - QueryMsg::QueryComputeD {} => to_binary(&query_compute_d(deps, env)?), + QueryMsg::Config {} => to_json_binary(&query_config(deps, env)?), + QueryMsg::QueryComputeD {} => to_json_binary(&query_compute_d(deps, env)?), _ => Err(StdError::generic_err("Query is not supported")), } } @@ -995,7 +995,7 @@ pub fn query_config(deps: Deps, env: Env) -> StdResult { let factory_config = query_factory_config(&deps.querier, &config.factory_addr)?; Ok(ConfigResponse { block_time_last: config.block_time_last, - params: Some(to_binary(&StablePoolConfig { + params: Some(to_json_binary(&StablePoolConfig { amp: Decimal::from_ratio(compute_current_amp(&config, &env)?, AMP_PRECISION), fee_share: config.fee_share, })?), @@ -1114,7 +1114,7 @@ pub fn update_config( let mut response = Response::default(); - match from_binary::(¶ms)? { + match from_json::(¶ms)? { StablePoolUpdateParams::StartChangingAmp { next_amp, next_amp_time, diff --git a/contracts/pair_stable/src/mock_querier.rs b/contracts/pair_stable/src/mock_querier.rs index 0c809ee39..76fadc80e 100644 --- a/contracts/pair_stable/src/mock_querier.rs +++ b/contracts/pair_stable/src/mock_querier.rs @@ -1,12 +1,14 @@ -use astroport::factory::QueryMsg::{Config, FeeInfo}; -use astroport::factory::{Config as FactoryConfig, ConfigResponse, FeeInfoResponse}; +use std::collections::HashMap; + use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage, MOCK_CONTRACT_ADDR}; use cosmwasm_std::{ - from_binary, from_slice, to_binary, Addr, Coin, Empty, OwnedDeps, Querier, QuerierResult, - QueryRequest, SystemError, SystemResult, Uint128, WasmQuery, + from_json, to_json_binary, Addr, Coin, Empty, OwnedDeps, Querier, QuerierResult, QueryRequest, + SystemError, SystemResult, Uint128, WasmQuery, }; use cw20::{BalanceResponse, Cw20QueryMsg, TokenInfoResponse}; -use std::collections::HashMap; + +use astroport::factory::QueryMsg::{Config, FeeInfo}; +use astroport::factory::{Config as FactoryConfig, ConfigResponse, FeeInfoResponse}; /// mock_dependencies is a drop-in replacement for cosmwasm_std::testing::mock_dependencies. /// This uses the Astroport CustomQuerier. @@ -61,7 +63,7 @@ pub(crate) fn balances_to_map( impl Querier for WasmMockQuerier { fn raw_query(&self, bin_request: &[u8]) -> QuerierResult { // MockQuerier doesn't support Custom, so we ignore it completely - let request: QueryRequest = match from_slice(bin_request) { + let request: QueryRequest = match from_json(bin_request) { Ok(v) => v, Err(e) => { return SystemResult::Err(SystemError::InvalidRequest { @@ -79,9 +81,9 @@ impl WasmMockQuerier { match &request { QueryRequest::Wasm(WasmQuery::Smart { contract_addr, msg }) => { if contract_addr == "factory" { - match from_binary(&msg).unwrap() { + match from_json(&msg).unwrap() { FeeInfo { .. } => SystemResult::Ok( - to_binary(&FeeInfoResponse { + to_json_binary(&FeeInfoResponse { fee_address: Some(Addr::unchecked("fee_address")), total_fee_bps: 30, maker_fee_bps: 1660, @@ -89,7 +91,7 @@ impl WasmMockQuerier { .into(), ), Config {} => SystemResult::Ok( - to_binary(&ConfigResponse { + to_json_binary(&ConfigResponse { owner: Addr::unchecked("owner"), pair_configs: vec![], token_code_id: 0, @@ -103,7 +105,7 @@ impl WasmMockQuerier { _ => panic!("DO NOT ENTER HERE"), } } else { - match from_binary(&msg).unwrap() { + match from_json(&msg).unwrap() { Cw20QueryMsg::TokenInfo {} => { let balances: &HashMap = match self.token_querier.balances.get(contract_addr) { @@ -120,7 +122,7 @@ impl WasmMockQuerier { } SystemResult::Ok( - to_binary(&TokenInfoResponse { + to_json_binary(&TokenInfoResponse { name: "mAPPL".to_string(), symbol: "mAPPL".to_string(), decimals: 6, @@ -146,7 +148,7 @@ impl WasmMockQuerier { }; SystemResult::Ok( - to_binary(&BalanceResponse { balance: *balance }).into(), + to_json_binary(&BalanceResponse { balance: *balance }).into(), ) } _ => panic!("DO NOT ENTER HERE"), @@ -157,7 +159,7 @@ impl WasmMockQuerier { if contract_addr == "factory" { if key.as_slice() == b"config".as_slice() { SystemResult::Ok( - to_binary(&FactoryConfig { + to_json_binary(&FactoryConfig { owner: Addr::unchecked("owner"), token_code_id: 0, fee_address: Some(Addr::unchecked("fee_address")), @@ -168,12 +170,12 @@ impl WasmMockQuerier { .into(), ) } else if key.as_slice() == b"pairs_to_migrate".as_slice() { - SystemResult::Ok(to_binary(&Vec::::new()).into()) + SystemResult::Ok(to_json_binary(&Vec::::new()).into()) } else { panic!("DO NOT ENTER HERE"); } } else if contract_addr == "coin_registry" { - SystemResult::Ok(to_binary(&6).into()) + SystemResult::Ok(to_json_binary(&6).into()) } else { panic!("DO NOT ENTER HERE"); } diff --git a/contracts/pair_stable/src/testing.rs b/contracts/pair_stable/src/testing.rs index e65f61a66..2339c37ec 100644 --- a/contracts/pair_stable/src/testing.rs +++ b/contracts/pair_stable/src/testing.rs @@ -3,7 +3,7 @@ use std::str::FromStr; use cosmwasm_std::testing::{mock_env, mock_info, MOCK_CONTRACT_ADDR}; use cosmwasm_std::{ - attr, coin, from_binary, to_binary, Addr, BankMsg, BlockInfo, Coin, CosmosMsg, Decimal, + attr, coin, from_json, to_json_binary, Addr, BankMsg, BlockInfo, Coin, CosmosMsg, Decimal, DepsMut, Env, Reply, ReplyOn, Response, SubMsg, SubMsgResponse, SubMsgResult, Timestamp, Uint128, WasmMsg, }; @@ -84,7 +84,7 @@ fn proper_initialization() { ], token_code_id: 10u64, init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -102,7 +102,7 @@ fn proper_initialization() { vec![SubMsg { msg: WasmMsg::Instantiate { code_id: 10u64, - msg: to_binary(&TokenInstantiateMsg { + msg: to_json_binary(&TokenInstantiateMsg { name: "UUSD-MAPP-LP".to_string(), symbol: "uLP".to_string(), decimals: 6, @@ -174,7 +174,7 @@ fn provide_liquidity() { token_code_id: 10u64, factory_addr: String::from("factory"), init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -229,7 +229,7 @@ fn provide_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("asset0000"), - msg: to_binary(&Cw20ExecuteMsg::TransferFrom { + msg: to_json_binary(&Cw20ExecuteMsg::TransferFrom { owner: String::from("addr0000"), recipient: String::from(MOCK_CONTRACT_ADDR), amount: Uint128::from(100_000000000000000000u128), @@ -249,7 +249,7 @@ fn provide_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("liquidity0000"), - msg: to_binary(&Cw20ExecuteMsg::Mint { + msg: to_json_binary(&Cw20ExecuteMsg::Mint { recipient: String::from(MOCK_CONTRACT_ADDR), amount: Uint128::from(1000_u128), }) @@ -268,7 +268,7 @@ fn provide_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("liquidity0000"), - msg: to_binary(&Cw20ExecuteMsg::Mint { + msg: to_json_binary(&Cw20ExecuteMsg::Mint { recipient: String::from("addr0000"), amount: Uint128::from(299_814_698_523_989_456_628u128), }) @@ -345,7 +345,7 @@ fn provide_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("asset0000"), - msg: to_binary(&Cw20ExecuteMsg::TransferFrom { + msg: to_json_binary(&Cw20ExecuteMsg::TransferFrom { owner: String::from("addr0000"), recipient: String::from(MOCK_CONTRACT_ADDR), amount: Uint128::from(100_000000000000000000u128), @@ -364,7 +364,7 @@ fn provide_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("liquidity0000"), - msg: to_binary(&Cw20ExecuteMsg::Mint { + msg: to_json_binary(&Cw20ExecuteMsg::Mint { recipient: String::from("addr0000"), amount: Uint128::new(74_981_956_874_579_206461), }) @@ -556,7 +556,7 @@ fn withdraw_liquidity() { token_code_id: 10u64, factory_addr: String::from("factory"), init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -575,7 +575,7 @@ fn withdraw_liquidity() { // Withdraw liquidity let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: String::from("addr0000"), - msg: to_binary(&Cw20HookMsg::WithdrawLiquidity { assets: vec![] }).unwrap(), + msg: to_json_binary(&Cw20HookMsg::WithdrawLiquidity { assets: vec![] }).unwrap(), amount: Uint128::new(100u128), }); @@ -607,7 +607,7 @@ fn withdraw_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("asset0000"), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: String::from("addr0000"), amount: Uint128::from(100u128), }) @@ -625,7 +625,7 @@ fn withdraw_liquidity() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("liquidity0000"), - msg: to_binary(&Cw20ExecuteMsg::Burn { + msg: to_json_binary(&Cw20ExecuteMsg::Burn { amount: Uint128::from(100u128), }) .unwrap(), @@ -683,7 +683,7 @@ fn try_native_to_token() { token_code_id: 10u64, factory_addr: String::from("factory"), init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -787,7 +787,7 @@ fn try_native_to_token() { &SubMsg { msg: WasmMsg::Execute { contract_addr: String::from("asset0000"), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: String::from("addr0000"), amount: Uint128::from(1487928894u128), }) @@ -840,7 +840,7 @@ fn try_token_to_native() { token_code_id: 10u64, factory_addr: String::from("factory"), init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -878,7 +878,7 @@ fn try_token_to_native() { let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: String::from("addr0000"), amount: offer_amount, - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -976,7 +976,7 @@ fn try_token_to_native() { let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: String::from("addr0000"), amount: offer_amount, - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -1062,7 +1062,7 @@ fn test_query_pool() { token_code_id: 10u64, factory_addr: String::from("factory"), init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -1133,7 +1133,7 @@ fn test_query_share() { token_code_id: 10u64, factory_addr: String::from("factory"), init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -1334,7 +1334,7 @@ proptest! { factory_addr: String::from("factory"), asset_infos: vec![offer_asset.info.clone(), ask_asset.clone()], token_code_id: 10u64, - init_params: Some(to_binary(&StablePoolParams { amp, owner: None }).unwrap()), + init_params: Some(to_json_binary(&StablePoolParams { amp, owner: None }).unwrap()), }; let env = mock_env(); @@ -1421,7 +1421,7 @@ fn update_owner() { factory_addr: "factory".to_owned(), token_code_id: 123u64, init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: Some(owner.to_owned()), }) @@ -1518,6 +1518,6 @@ fn update_owner() { // Let's query the state let config: ConfigResponse = - from_binary(&query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap()).unwrap(); + from_json(&query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap()).unwrap(); assert_eq!(new_owner, config.owner); } diff --git a/contracts/pair_stable/src/utils.rs b/contracts/pair_stable/src/utils.rs index e2aedc22b..8a5cb12df 100644 --- a/contracts/pair_stable/src/utils.rs +++ b/contracts/pair_stable/src/utils.rs @@ -1,7 +1,7 @@ use std::cmp::Ordering; use cosmwasm_std::{ - to_binary, wasm_execute, Addr, Api, CosmosMsg, Decimal, Env, QuerierWrapper, StdResult, + to_json_binary, wasm_execute, Addr, Api, CosmosMsg, Decimal, Env, QuerierWrapper, StdResult, Storage, Uint128, Uint64, }; use cw20::Cw20ExecuteMsg; @@ -206,7 +206,7 @@ pub(crate) fn mint_liquidity_token_message( &Cw20ExecuteMsg::Send { contract: generator.to_string(), amount, - msg: to_binary(&astroport::generator::Cw20HookMsg::DepositFor( + msg: to_json_binary(&astroport::generator::Cw20HookMsg::DepositFor( recipient.to_string(), ))?, }, diff --git a/contracts/pair_stable/tests/helper.rs b/contracts/pair_stable/tests/helper.rs index 4e01c5fa6..fec169f2e 100644 --- a/contracts/pair_stable/tests/helper.rs +++ b/contracts/pair_stable/tests/helper.rs @@ -6,7 +6,7 @@ use std::str::FromStr; use anyhow::Result as AnyResult; use astroport_mocks::cw_multi_test::{App, AppResponse, Contract, ContractWrapper, Executor}; -use cosmwasm_std::{coin, to_binary, Addr, Coin, Decimal, Empty, StdResult, Uint128}; +use cosmwasm_std::{coin, to_json_binary, Addr, Coin, Decimal, Empty, StdResult, Uint128}; use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg}; use derivative::Derivative; use itertools::Itertools; @@ -213,7 +213,7 @@ impl Helper { let init_pair_msg = astroport::factory::ExecuteMsg::CreatePair { pair_type: PairType::Stable {}, asset_infos: asset_infos.clone(), - init_params: Some(to_binary(&StablePoolParams { amp, owner: None }).unwrap()), + init_params: Some(to_json_binary(&StablePoolParams { amp, owner: None }).unwrap()), }; app.execute_contract(owner.clone(), factory.clone(), &init_pair_msg, &[])?; @@ -258,7 +258,7 @@ impl Helper { let msg = Cw20ExecuteMsg::Send { contract: self.pair_addr.to_string(), amount: Uint128::from(amount), - msg: to_binary(&Cw20HookMsg::WithdrawLiquidity { assets }).unwrap(), + msg: to_json_binary(&Cw20HookMsg::WithdrawLiquidity { assets }).unwrap(), }; self.app @@ -276,7 +276,7 @@ impl Helper { let msg = Cw20ExecuteMsg::Send { contract: self.pair_addr.to_string(), amount: offer_asset.amount, - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info, belief_price: None, max_spread: None, diff --git a/contracts/pair_stable/tests/integration.rs b/contracts/pair_stable/tests/integration.rs index 43075e0e9..c68ce22c7 100644 --- a/contracts/pair_stable/tests/integration.rs +++ b/contracts/pair_stable/tests/integration.rs @@ -21,7 +21,7 @@ use astroport_mocks::pair_stable::MockStablePairBuilder; use astroport_mocks::{astroport_address, MockGeneratorBuilder}; use astroport_pair_stable::math::{MAX_AMP, MAX_AMP_CHANGE, MIN_AMP_CHANGING_TIME}; use cosmwasm_std::{ - attr, from_binary, to_binary, Addr, Coin, Decimal, QueryRequest, Uint128, WasmQuery, + attr, from_json, to_json_binary, Addr, Coin, Decimal, QueryRequest, Uint128, WasmQuery, }; use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; @@ -189,7 +189,7 @@ fn instantiate_pair(mut router: &mut App, owner: &Addr) -> Addr { token_code_id: token_contract_code_id, factory_addr: factory_addr.to_string(), init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -260,7 +260,7 @@ fn test_provide_and_withdraw_liquidity() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: pair_instance.to_string(), - msg: to_binary(&QueryMsg::Pair {}).unwrap(), + msg: to_json_binary(&QueryMsg::Pair {}).unwrap(), })); let res = res.unwrap(); @@ -522,7 +522,7 @@ fn provide_lp_for_single_token() { }, ], init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -571,7 +571,7 @@ fn provide_lp_for_single_token() { let swap_msg = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -699,7 +699,7 @@ fn provide_lp_for_single_token() { // try swap 120_000_000 from token_y to token_x (from lower token amount to higher) let msg = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -715,7 +715,7 @@ fn provide_lp_for_single_token() { // try swap 120_000_000 from token_x to token_y (from higher token amount to lower ) let msg = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -856,7 +856,7 @@ fn test_compatibility_of_tokens_with_different_precision() { }, ], init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -936,7 +936,7 @@ fn test_compatibility_of_tokens_with_different_precision() { let msg = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, @@ -1078,7 +1078,7 @@ fn update_pair_config() { token_code_id: token_contract_code_id, factory_addr: factory_instance.to_string(), init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -1102,13 +1102,13 @@ fn update_pair_config() { .query_wasm_smart(pair.clone(), &QueryMsg::Config {}) .unwrap(); - let params: StablePoolConfig = from_binary(&res.params.unwrap()).unwrap(); + let params: StablePoolConfig = from_json(&res.params.unwrap()).unwrap(); assert_eq!(params.amp, Decimal::from_ratio(100u32, 1u32)); // Start changing amp with incorrect next amp let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::StartChangingAmp { + params: to_json_binary(&StablePoolUpdateParams::StartChangingAmp { next_amp: MAX_AMP + 1, next_amp_time: router.block_info().time.seconds(), }) @@ -1129,7 +1129,7 @@ fn update_pair_config() { // Start changing amp with big difference between the old and new amp value let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::StartChangingAmp { + params: to_json_binary(&StablePoolUpdateParams::StartChangingAmp { next_amp: 100 * MAX_AMP_CHANGE + 1, next_amp_time: router.block_info().time.seconds(), }) @@ -1150,7 +1150,7 @@ fn update_pair_config() { // Start changing amp before the MIN_AMP_CHANGING_TIME has elapsed let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::StartChangingAmp { + params: to_json_binary(&StablePoolUpdateParams::StartChangingAmp { next_amp: 250, next_amp_time: router.block_info().time.seconds(), }) @@ -1175,7 +1175,7 @@ fn update_pair_config() { }); let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::StartChangingAmp { + params: to_json_binary(&StablePoolUpdateParams::StartChangingAmp { next_amp: 250, next_amp_time: router.block_info().time.seconds() + MIN_AMP_CHANGING_TIME, }) @@ -1195,7 +1195,7 @@ fn update_pair_config() { .query_wasm_smart(pair.clone(), &QueryMsg::Config {}) .unwrap(); - let params: StablePoolConfig = from_binary(&res.params.unwrap()).unwrap(); + let params: StablePoolConfig = from_json(&res.params.unwrap()).unwrap(); assert_eq!(params.amp, Decimal::from_ratio(175u32, 1u32)); @@ -1208,7 +1208,7 @@ fn update_pair_config() { .query_wasm_smart(pair.clone(), &QueryMsg::Config {}) .unwrap(); - let params: StablePoolConfig = from_binary(&res.params.unwrap()).unwrap(); + let params: StablePoolConfig = from_json(&res.params.unwrap()).unwrap(); assert_eq!(params.amp, Decimal::from_ratio(250u32, 1u32)); @@ -1218,7 +1218,7 @@ fn update_pair_config() { }); let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::StartChangingAmp { + params: to_json_binary(&StablePoolUpdateParams::StartChangingAmp { next_amp: 50, next_amp_time: router.block_info().time.seconds() + MIN_AMP_CHANGING_TIME, }) @@ -1238,13 +1238,13 @@ fn update_pair_config() { .query_wasm_smart(pair.clone(), &QueryMsg::Config {}) .unwrap(); - let params: StablePoolConfig = from_binary(&res.params.unwrap()).unwrap(); + let params: StablePoolConfig = from_json(&res.params.unwrap()).unwrap(); assert_eq!(params.amp, Decimal::from_ratio(150u32, 1u32)); // Stop changing amp let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::StopChangingAmp {}).unwrap(), + params: to_json_binary(&StablePoolUpdateParams::StopChangingAmp {}).unwrap(), }; router @@ -1260,7 +1260,7 @@ fn update_pair_config() { .query_wasm_smart(pair.clone(), &QueryMsg::Config {}) .unwrap(); - let params: StablePoolConfig = from_binary(&res.params.unwrap()).unwrap(); + let params: StablePoolConfig = from_json(&res.params.unwrap()).unwrap(); assert_eq!(params.amp, Decimal::from_ratio(150u32, 1u32)); } @@ -1325,7 +1325,7 @@ fn enable_disable_fee_sharing() { token_code_id: token_contract_code_id, factory_addr: factory_instance.to_string(), init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -1349,14 +1349,14 @@ fn enable_disable_fee_sharing() { .query_wasm_smart(pair.clone(), &QueryMsg::Config {}) .unwrap(); - let params: StablePoolConfig = from_binary(&res.params.unwrap()).unwrap(); + let params: StablePoolConfig = from_json(&res.params.unwrap()).unwrap(); assert_eq!(params.amp, Decimal::from_ratio(100u32, 1u32)); assert_eq!(params.fee_share, None); // Attemt to set fee sharing higher than maximum let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::EnableFeeShare { + params: to_json_binary(&StablePoolUpdateParams::EnableFeeShare { fee_share_bps: MAX_FEE_SHARE_BPS + 1, fee_share_address: "contract".to_string(), }) @@ -1374,7 +1374,7 @@ fn enable_disable_fee_sharing() { // Attemt to set fee sharing to 0 let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::EnableFeeShare { + params: to_json_binary(&StablePoolUpdateParams::EnableFeeShare { fee_share_bps: 0, fee_share_address: "contract".to_string(), }) @@ -1395,7 +1395,7 @@ fn enable_disable_fee_sharing() { // Set valid fee share let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::EnableFeeShare { + params: to_json_binary(&StablePoolUpdateParams::EnableFeeShare { fee_share_bps, fee_share_address: fee_share_address.clone(), }) @@ -1411,7 +1411,7 @@ fn enable_disable_fee_sharing() { .query_wasm_smart(pair.clone(), &QueryMsg::Config {}) .unwrap(); - let params: StablePoolConfig = from_binary(&res.params.unwrap()).unwrap(); + let params: StablePoolConfig = from_json(&res.params.unwrap()).unwrap(); let set_fee_share = params.fee_share.unwrap(); assert_eq!(set_fee_share.bps, fee_share_bps); @@ -1419,7 +1419,7 @@ fn enable_disable_fee_sharing() { // Disable fee share let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::DisableFeeShare {}).unwrap(), + params: to_json_binary(&StablePoolUpdateParams::DisableFeeShare {}).unwrap(), }; router @@ -1431,7 +1431,7 @@ fn enable_disable_fee_sharing() { .query_wasm_smart(pair.clone(), &QueryMsg::Config {}) .unwrap(); - let params: StablePoolConfig = from_binary(&res.params.unwrap()).unwrap(); + let params: StablePoolConfig = from_json(&res.params.unwrap()).unwrap(); assert!(params.fee_share.is_none()); } @@ -1623,7 +1623,7 @@ fn test_imbalance_withdraw_is_disabled() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: pair_instance.to_string(), - msg: to_binary(&QueryMsg::Pair {}).unwrap(), + msg: to_json_binary(&QueryMsg::Pair {}).unwrap(), })) .unwrap(); @@ -1661,7 +1661,7 @@ fn test_imbalance_withdraw_is_disabled() { let msg_imbalance = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), amount: Uint128::from(50u8), - msg: to_binary(&Cw20HookMsg::WithdrawLiquidity { + msg: to_json_binary(&Cw20HookMsg::WithdrawLiquidity { assets: vec![Asset { info: AssetInfo::NativeToken { denom: "uusd".to_string(), @@ -1933,7 +1933,7 @@ fn test_fee_share( }, ], init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: Some(owner.to_string()), }) @@ -2013,7 +2013,7 @@ fn test_fee_share( let fee_share_address = "contract_receiver".to_string(); let msg = ExecuteMsg::UpdateConfig { - params: to_binary(&StablePoolUpdateParams::EnableFeeShare { + params: to_json_binary(&StablePoolUpdateParams::EnableFeeShare { fee_share_bps, fee_share_address: fee_share_address.clone(), }) @@ -2027,7 +2027,7 @@ fn test_fee_share( let msg = Cw20ExecuteMsg::Send { contract: pair_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread: None, diff --git a/contracts/periphery/fee_granter/src/query.rs b/contracts/periphery/fee_granter/src/query.rs index 37241e3f1..170c68c57 100644 --- a/contracts/periphery/fee_granter/src/query.rs +++ b/contracts/periphery/fee_granter/src/query.rs @@ -1,6 +1,6 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, Env, Order, StdResult}; +use cosmwasm_std::{to_json_binary, Binary, Deps, Env, Order, StdResult}; use cw_storage_plus::Bound; use crate::state::{CONFIG, GRANTS}; @@ -12,11 +12,13 @@ const DEFAULT_LIMIT: u32 = 50; #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Config {} => to_binary(&CONFIG.load(deps.storage)?), + QueryMsg::Config {} => to_json_binary(&CONFIG.load(deps.storage)?), QueryMsg::GrantsList { start_after, limit } => { - to_binary(&list_grants(deps, start_after, limit)?) + to_json_binary(&list_grants(deps, start_after, limit)?) + } + QueryMsg::GrantFor { grantee_contract } => { + to_json_binary(&grant_for(deps, grantee_contract)?) } - QueryMsg::GrantFor { grantee_contract } => to_binary(&grant_for(deps, grantee_contract)?), } } @@ -59,7 +61,7 @@ mod unit_tests { use crate::contract::{execute, instantiate}; use astroport::fee_granter::{Config, ExecuteMsg, InstantiateMsg}; use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; - use cosmwasm_std::{coins, from_binary, Addr, Uint128}; + use cosmwasm_std::{coins, from_json, Addr, Uint128}; const GAS_DENOM: &str = "inj"; @@ -93,7 +95,7 @@ mod unit_tests { execute(deps.as_mut(), env.clone(), info, msg).unwrap(); let resp = query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap(); - let config: Config = from_binary(&resp).unwrap(); + let config: Config = from_json(&resp).unwrap(); assert_eq!( config, @@ -112,7 +114,7 @@ mod unit_tests { }, ) .unwrap(); - let config: GrantResponse = from_binary(&resp).unwrap(); + let config: GrantResponse = from_json(&resp).unwrap(); assert_eq!( config, GrantResponse { @@ -129,7 +131,7 @@ mod unit_tests { }, ) .unwrap(); - let config: GrantResponse = from_binary(&resp).unwrap(); + let config: GrantResponse = from_json(&resp).unwrap(); assert_eq!( config, GrantResponse { @@ -147,7 +149,7 @@ mod unit_tests { }, ) .unwrap(); - let config: Vec = from_binary(&resp).unwrap(); + let config: Vec = from_json(&resp).unwrap(); assert_eq!( config, [GrantResponse { @@ -165,7 +167,7 @@ mod unit_tests { }, ) .unwrap(); - let config: Vec = from_binary(&resp).unwrap(); + let config: Vec = from_json(&resp).unwrap(); assert_eq!( config, [GrantResponse { @@ -183,7 +185,7 @@ mod unit_tests { }, ) .unwrap(); - let config: Vec = from_binary(&resp).unwrap(); + let config: Vec = from_json(&resp).unwrap(); assert_eq!( config, [ diff --git a/contracts/periphery/liquidity_manager/src/contract.rs b/contracts/periphery/liquidity_manager/src/contract.rs index 2062fa464..9e2c64baa 100644 --- a/contracts/periphery/liquidity_manager/src/contract.rs +++ b/contracts/periphery/liquidity_manager/src/contract.rs @@ -1,7 +1,7 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - from_binary, to_binary, wasm_execute, Addr, DepsMut, Env, MessageInfo, Reply, ReplyOn, + from_json, to_json_binary, wasm_execute, Addr, DepsMut, Env, MessageInfo, Reply, ReplyOn, Response, StdError, StdResult, SubMsg, Uint128, }; use cw20::{Cw20ExecuteMsg, Expiration}; @@ -55,7 +55,7 @@ pub fn execute( let pair_addr = deps.api.addr_validate(&pair_addr)?; provide_liquidity(deps, info, env, pair_addr, msg, min_lp_to_receive) } - ExecuteMsg::Receive(cw20_msg) => match from_binary(&cw20_msg.msg)? { + ExecuteMsg::Receive(cw20_msg) => match from_json(&cw20_msg.msg)? { Cw20HookMsg::WithdrawLiquidity { pair_msg: msg, min_assets_to_receive, @@ -372,7 +372,7 @@ fn withdraw_liquidity( &Cw20ExecuteMsg::Send { contract: pair_addr.to_string(), amount, - msg: to_binary(&inner_msg)?, + msg: to_json_binary(&inner_msg)?, }, vec![], )?; diff --git a/contracts/periphery/liquidity_manager/src/query.rs b/contracts/periphery/liquidity_manager/src/query.rs index b7b989df8..b851d05b3 100644 --- a/contracts/periphery/liquidity_manager/src/query.rs +++ b/contracts/periphery/liquidity_manager/src/query.rs @@ -1,6 +1,6 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, Env, StdError, StdResult, Uint128}; +use cosmwasm_std::{to_json_binary, Binary, Deps, Env, StdError, StdResult, Uint128}; use astroport::asset::{Asset, PairInfo}; use astroport::factory::PairType; @@ -95,7 +95,7 @@ fn simulate_provide( .map_err(|err| StdError::generic_err(format!("{err}")))?; } - to_binary(&predicted_lp_amount) + to_json_binary(&predicted_lp_amount) } PairType::Stable {} => { let pair_config_data = deps @@ -103,7 +103,7 @@ fn simulate_provide( .query_wasm_raw(pair_addr, b"config")? .ok_or_else(|| StdError::generic_err("pair stable config not found"))?; let pair_config = convert_config(deps.querier, pair_config_data)?; - to_binary( + to_json_binary( &stableswap_provide_simulation( deps.querier, env, @@ -134,7 +134,7 @@ fn simulate_withdraw(deps: Deps, pair_addr: String, lp_tokens: Uint128) -> StdRe ))); } - to_binary(&assets) + to_json_binary(&assets) } #[cfg(test)] @@ -215,7 +215,7 @@ mod tests { let withdraw_msg = cw20::Cw20ExecuteMsg::Send { contract: "wasm1...LP token address".to_string(), amount: 1000u128.into(), - msg: to_binary(&cw20hook_msg).unwrap(), + msg: to_json_binary(&cw20hook_msg).unwrap(), }; println!( diff --git a/contracts/periphery/liquidity_manager/src/utils.rs b/contracts/periphery/liquidity_manager/src/utils.rs index 171ce13d1..398a9ddbc 100644 --- a/contracts/periphery/liquidity_manager/src/utils.rs +++ b/contracts/periphery/liquidity_manager/src/utils.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; use cosmwasm_std::{ - from_slice, Addr, Decimal, Decimal256, Env, QuerierWrapper, StdError, StdResult, Uint128, + from_json, Addr, Decimal, Decimal256, Env, QuerierWrapper, StdError, StdResult, Uint128, }; use astroport::asset::{Asset, Decimal256Ext, DecimalAsset, PairInfo, MINIMUM_LIQUIDITY_AMOUNT}; @@ -247,7 +247,7 @@ pub fn convert_config( querier: QuerierWrapper, config_data: Vec, ) -> StdResult { - let compat_config: CompatPairStableConfig = from_slice(&config_data)?; + let compat_config: CompatPairStableConfig = from_json(&config_data)?; let greatest_precision = if let Some(prec) = compat_config.greatest_precision { prec diff --git a/contracts/periphery/liquidity_manager/tests/helper.rs b/contracts/periphery/liquidity_manager/tests/helper.rs index 7a2c3ee53..d8399d42b 100644 --- a/contracts/periphery/liquidity_manager/tests/helper.rs +++ b/contracts/periphery/liquidity_manager/tests/helper.rs @@ -9,7 +9,7 @@ use std::str::FromStr; use anyhow::Result as AnyResult; use cosmwasm_schema::serde::de::DeserializeOwned; use cosmwasm_std::{ - coin, from_slice, to_binary, Addr, Coin, Decimal, Empty, StdError, StdResult, Uint128, + coin, from_json, to_json_binary, Addr, Coin, Decimal, Empty, StdError, StdResult, Uint128, }; use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg}; use cw_multi_test::{App, AppResponse, Contract, ContractWrapper, Executor}; @@ -209,18 +209,18 @@ impl Helper { PoolParams::Constant(inner) => { pair_code_id = app.store_code(xyk_pair_contract()); pair_type = PairType::Xyk {}; - inner_params = to_binary(inner).unwrap(); + inner_params = to_json_binary(inner).unwrap(); } PoolParams::Stable(inner) => { pair_code_id = app.store_code(stable_pair_contract()); pair_type = PairType::Stable {}; - inner_params = to_binary(inner).unwrap(); + inner_params = to_json_binary(inner).unwrap(); } PoolParams::Concentrated(_) => { unimplemented!("Concentrated pool is not supported yet"); // pair_code_id = app.store_code(pcl_pair_contract()); // pair_type = PairType::Custom("concentrated".to_owned()); - // inner_params = to_binary(inner).unwrap(); + // inner_params = to_json_binary(inner).unwrap(); } } @@ -468,14 +468,14 @@ impl Helper { let (contract, msg); if let Some(min_assets_to_receive) = min_assets { contract = self.liquidity_manager.to_string(); - msg = to_binary(&Cw20HookMsg::WithdrawLiquidity { + msg = to_json_binary(&Cw20HookMsg::WithdrawLiquidity { pair_msg, min_assets_to_receive, }) .unwrap(); } else { contract = self.pair_addr.to_string(); - msg = to_binary(&pair_msg).unwrap(); + msg = to_json_binary(&pair_msg).unwrap(); } let msg = Cw20ExecuteMsg::Send { @@ -499,7 +499,7 @@ impl Helper { let msg = Cw20ExecuteMsg::Send { contract: self.pair_addr.to_string(), amount: offer_asset.amount, - msg: to_binary(&PairCw20HookMsg::Swap { + msg: to_json_binary(&PairCw20HookMsg::Swap { ask_asset_info: None, belief_price: None, max_spread, @@ -638,7 +638,7 @@ impl Helper { .wrap() .query_wasm_raw(&self.pair_addr, b"config")? .ok_or_else(|| StdError::generic_err("Failed to find config in storage"))?; - from_slice(&binary) + from_json(&binary) } pub fn query_asset_balance_at( diff --git a/contracts/periphery/native-coin-wrapper/src/contract.rs b/contracts/periphery/native-coin-wrapper/src/contract.rs index b00ec51f6..3a2e3c4d0 100644 --- a/contracts/periphery/native-coin-wrapper/src/contract.rs +++ b/contracts/periphery/native-coin-wrapper/src/contract.rs @@ -1,7 +1,7 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, from_binary, to_binary, wasm_execute, Addr, BankMsg, Binary, Coin, CosmosMsg, Deps, + attr, from_json, to_json_binary, wasm_execute, Addr, BankMsg, Binary, Coin, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Reply, ReplyOn, Response, StdError, StdResult, SubMsg, SubMsgResponse, SubMsgResult, WasmMsg, }; @@ -48,7 +48,7 @@ pub fn instantiate( msg: WasmMsg::Instantiate { admin: Some(info.sender.to_string()), code_id: msg.token_code_id, - msg: to_binary(&TokenInstantiateMsg { + msg: to_json_binary(&TokenInstantiateMsg { name: format!("CW20-wrapped {}", token_name), symbol: token_symbol.to_uppercase(), decimals: msg.token_decimals, @@ -152,7 +152,7 @@ pub(crate) fn receive_cw20( ) -> Result { let config: Config = CONFIG.load(deps.storage)?; - match from_binary(&cw20_msg.msg)? { + match from_json(&cw20_msg.msg)? { Cw20HookMsg::Unwrap {} => { // Permission check if info.sender != config.token { @@ -162,7 +162,7 @@ pub(crate) fn receive_cw20( Ok(Response::new() .add_message(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: config.token.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Burn { + msg: to_json_binary(&Cw20ExecuteMsg::Burn { amount: cw20_msg.amount, })?, funds: vec![], @@ -181,6 +181,6 @@ pub(crate) fn receive_cw20( #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Config {} => to_binary(&CONFIG.load(deps.storage)?), + QueryMsg::Config {} => to_json_binary(&CONFIG.load(deps.storage)?), } } diff --git a/contracts/periphery/native-coin-wrapper/tests/integration.rs b/contracts/periphery/native-coin-wrapper/tests/integration.rs index 24b30727f..960e9130a 100644 --- a/contracts/periphery/native-coin-wrapper/tests/integration.rs +++ b/contracts/periphery/native-coin-wrapper/tests/integration.rs @@ -1,7 +1,7 @@ #![cfg(not(tarpaulin_include))] use cosmwasm_std::{ - attr, coin, to_binary, Addr, BalanceResponse as NativeBalanceResponse, BankQuery, Coin, + attr, coin, to_json_binary, Addr, BalanceResponse as NativeBalanceResponse, BankQuery, Coin, QueryRequest, Uint128, WasmQuery, }; use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse, TokenInfoResponse}; @@ -23,7 +23,7 @@ fn check_balance(app: &mut App, user: Addr, asset_info: &AssetInfo) -> Uint128 { let res: Result = app.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: contract_addr.to_string(), - msg: to_binary(&Cw20QueryMsg::Balance { + msg: to_json_binary(&Cw20QueryMsg::Balance { address: user.to_string(), }) .unwrap(), @@ -209,7 +209,7 @@ fn check_wrap_and_unwrap() { .wrap() .query::(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: native_wrapper_instance.to_string(), - msg: to_binary(&QueryMsg::Config {}).unwrap(), + msg: to_json_binary(&QueryMsg::Config {}).unwrap(), })) .unwrap(); let wrapped_cw20_native_token = token_asset_info(res.token); @@ -248,7 +248,7 @@ fn check_wrap_and_unwrap() { Addr::unchecked(wrapped_cw20_native_token.to_string()), &Cw20ExecuteMsg::Send { contract: native_wrapper_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Unwrap {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Unwrap {}).unwrap(), amount: Uint128::from(10u128), }, &[], @@ -321,7 +321,7 @@ fn check_wrap_and_unwrap() { astro_token_addr.clone(), &Cw20ExecuteMsg::Send { contract: native_wrapper_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Unwrap {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Unwrap {}).unwrap(), amount: Uint128::from(10u128), }, &[], @@ -335,7 +335,7 @@ fn check_wrap_and_unwrap() { Addr::unchecked(wrapped_cw20_native_token.to_string()), &Cw20ExecuteMsg::Send { contract: native_wrapper_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Unwrap {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Unwrap {}).unwrap(), amount: Uint128::from(10u128), }, &[], diff --git a/contracts/periphery/native_coin_registry/src/contract.rs b/contracts/periphery/native_coin_registry/src/contract.rs index 1508b2ea1..89b9a3089 100644 --- a/contracts/periphery/native_coin_registry/src/contract.rs +++ b/contracts/periphery/native_coin_registry/src/contract.rs @@ -1,7 +1,8 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Order, Response, StdError, StdResult, + attr, to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Order, Response, StdError, + StdResult, }; use cw2::{get_contract_version, set_contract_version}; use cw_storage_plus::Bound; @@ -156,10 +157,12 @@ pub fn remove( #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Config {} => Ok(to_binary(&CONFIG.load(deps.storage)?)?), - QueryMsg::NativeToken { denom } => Ok(to_binary(&COINS_INFO.load(deps.storage, denom)?)?), + QueryMsg::Config {} => Ok(to_json_binary(&CONFIG.load(deps.storage)?)?), + QueryMsg::NativeToken { denom } => { + Ok(to_json_binary(&COINS_INFO.load(deps.storage, denom)?)?) + } QueryMsg::NativeTokens { start_after, limit } => { - to_binary(&query_native_tokens(deps, start_after, limit)?) + to_json_binary(&query_native_tokens(deps, start_after, limit)?) } } } diff --git a/contracts/periphery/oracle/src/contract.rs b/contracts/periphery/oracle/src/contract.rs index 8ab531de4..058ecc403 100644 --- a/contracts/periphery/oracle/src/contract.rs +++ b/contracts/periphery/oracle/src/contract.rs @@ -10,7 +10,7 @@ use astroport::pair::TWAP_PRECISION; use astroport::querier::query_pair_info; use cosmwasm_std::{ - entry_point, to_binary, Binary, Decimal256, Deps, DepsMut, Env, MessageInfo, Response, + entry_point, to_json_binary, Binary, Decimal256, Deps, DepsMut, Env, MessageInfo, Response, StdError, StdResult, Uint128, Uint256, }; use cw2::{get_contract_version, set_contract_version}; @@ -129,7 +129,7 @@ pub fn update(deps: DepsMut, env: Env) -> Result { #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Consult { token, amount } => to_binary(&consult(deps, token, amount)?), + QueryMsg::Consult { token, amount } => to_json_binary(&consult(deps, token, amount)?), } } diff --git a/contracts/periphery/oracle/src/mock_querier.rs b/contracts/periphery/oracle/src/mock_querier.rs index 006bd2e94..e5b27b48d 100644 --- a/contracts/periphery/oracle/src/mock_querier.rs +++ b/contracts/periphery/oracle/src/mock_querier.rs @@ -1,15 +1,17 @@ +use std::collections::HashMap; + +use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage, MOCK_CONTRACT_ADDR}; +use cosmwasm_std::{ + from_json, to_json_binary, Addr, Coin, Empty, OwnedDeps, Querier, QuerierResult, QueryRequest, + SystemError, SystemResult, Uint128, WasmQuery, +}; +use cw20::{BalanceResponse, Cw20QueryMsg, TokenInfoResponse}; + use astroport::asset::{Asset, AssetInfo, PairInfo}; use astroport::factory::PairType; use astroport::factory::QueryMsg::Pair; use astroport::pair::CumulativePricesResponse; use astroport::pair::QueryMsg::CumulativePrices; -use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage, MOCK_CONTRACT_ADDR}; -use cosmwasm_std::{ - from_binary, from_slice, to_binary, Addr, Coin, Empty, OwnedDeps, Querier, QuerierResult, - QueryRequest, SystemError, SystemResult, Uint128, WasmQuery, -}; -use cw20::{BalanceResponse, Cw20QueryMsg, TokenInfoResponse}; -use std::collections::HashMap; pub fn mock_dependencies( contract_balance: &[Coin], @@ -82,7 +84,7 @@ pub(crate) fn balances_to_map( impl Querier for WasmMockQuerier { fn raw_query(&self, bin_request: &[u8]) -> QuerierResult { // MockQuerier doesn't support Custom, so we ignore it completely here - let request: QueryRequest = match from_slice(bin_request) { + let request: QueryRequest = match from_json(bin_request) { Ok(v) => v, Err(e) => { return SystemResult::Err(SystemError::InvalidRequest { @@ -100,9 +102,9 @@ impl WasmMockQuerier { match &request { QueryRequest::Wasm(WasmQuery::Smart { contract_addr, msg }) => { if contract_addr == "factory" { - match from_binary(&msg).unwrap() { + match from_json(&msg).unwrap() { Pair { asset_infos } => SystemResult::Ok( - to_binary(&PairInfo { + to_json_binary(&PairInfo { asset_infos, contract_addr: Addr::unchecked("pair"), liquidity_token: Addr::unchecked("lp_token"), @@ -113,7 +115,7 @@ impl WasmMockQuerier { _ => panic!("DO NOT ENTER HERE"), } } else if contract_addr == "pair" { - match from_binary(&msg).unwrap() { + match from_json(&msg).unwrap() { CumulativePrices { .. } => { let balance = match self.token_querier.pairs.get(contract_addr) { Some(v) => v, @@ -121,12 +123,12 @@ impl WasmMockQuerier { return SystemResult::Err(SystemError::Unknown {}); } }; - SystemResult::Ok(to_binary(&balance).into()) + SystemResult::Ok(to_json_binary(&balance).into()) } _ => panic!("DO NOT ENTER HERE"), } } else { - match from_binary(&msg).unwrap() { + match from_json(&msg).unwrap() { Cw20QueryMsg::TokenInfo {} => { let balances: &HashMap = match self.token_querier.balances.get(contract_addr) { @@ -143,7 +145,7 @@ impl WasmMockQuerier { } SystemResult::Ok( - to_binary(&TokenInfoResponse { + to_json_binary(&TokenInfoResponse { name: "mAPPL".to_string(), symbol: "mAPPL".to_string(), decimals: 6, @@ -169,7 +171,7 @@ impl WasmMockQuerier { }; SystemResult::Ok( - to_binary(&BalanceResponse { balance: *balance }).into(), + to_json_binary(&BalanceResponse { balance: *balance }).into(), ) } _ => panic!("DO NOT ENTER HERE"), diff --git a/contracts/periphery/oracle/tests/integration.rs b/contracts/periphery/oracle/tests/integration.rs index 672500ea8..a9599fa03 100644 --- a/contracts/periphery/oracle/tests/integration.rs +++ b/contracts/periphery/oracle/tests/integration.rs @@ -2,7 +2,8 @@ use anyhow::Result; use cosmwasm_std::{ - attr, to_binary, Addr, BlockInfo, Coin, Decimal, QueryRequest, StdResult, Uint128, WasmQuery, + attr, to_json_binary, Addr, BlockInfo, Coin, Decimal, QueryRequest, StdResult, Uint128, + WasmQuery, }; use cw20::{BalanceResponse, Cw20QueryMsg, MinterResponse}; use cw_multi_test::{App, AppResponse, ContractWrapper, Executor}; @@ -266,7 +267,7 @@ fn check_balance(router: &mut App, user: Addr, token: Addr, expected_amount: Uin let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: token.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); let balance = res.unwrap(); @@ -382,7 +383,7 @@ fn create_pair( .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: factory_instance.clone().to_string(), - msg: to_binary(&astroport::factory::QueryMsg::Pair { + msg: to_json_binary(&astroport::factory::QueryMsg::Pair { asset_infos: asset_infos.clone(), }) .unwrap(), @@ -504,7 +505,7 @@ fn consult() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: factory_instance.clone().to_string(), - msg: to_binary(&astroport::factory::QueryMsg::Pair { + msg: to_json_binary(&astroport::factory::QueryMsg::Pair { asset_infos: asset_infos.clone(), }) .unwrap(), @@ -584,7 +585,7 @@ fn consult() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: oracle_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })) .unwrap(); assert_eq!(res[0].1, amount); @@ -792,7 +793,7 @@ fn consult2() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: oracle_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })) .unwrap(); assert_eq!(res[0].1, amount_exp); @@ -845,7 +846,7 @@ fn consult2() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: oracle_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })) .unwrap(); assert_eq!(res[0].1, amount_exp); @@ -981,7 +982,7 @@ fn consult_zero_price() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: oracle_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })) .unwrap(); assert_eq!(res[0].1, amount_out); diff --git a/contracts/periphery/shared_multisig/src/contract.rs b/contracts/periphery/shared_multisig/src/contract.rs index 372cf180e..b6636fa9d 100644 --- a/contracts/periphery/shared_multisig/src/contract.rs +++ b/contracts/periphery/shared_multisig/src/contract.rs @@ -3,7 +3,7 @@ use std::cmp::Ordering; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, to_binary, BankMsg, Binary, BlockInfo, Coin, CosmosMsg, Decimal, Deps, DepsMut, Env, + attr, to_json_binary, BankMsg, Binary, BlockInfo, Coin, CosmosMsg, Decimal, Deps, DepsMut, Env, MessageInfo, Order, Response, StdError, StdResult, Uint128, WasmMsg, }; use cw20::Cw20ExecuteMsg; @@ -301,10 +301,10 @@ pub fn deposit_generator( Ok(Response::new() .add_message(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: lp_token.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Send { + msg: to_json_binary(&Cw20ExecuteMsg::Send { contract: cfg.generator_addr.to_string(), amount: deposit_amount, - msg: to_binary(&Cw20HookMsg::Deposit {})?, + msg: to_json_binary(&Cw20HookMsg::Deposit {})?, })?, funds: vec![], })) @@ -320,7 +320,7 @@ pub fn claim_generator_rewards(deps: DepsMut) -> Result Ok(Response::new() .add_message(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: cfg.generator_addr.to_string(), - msg: to_binary(&GeneratorExecuteMsg::ClaimRewards { + msg: to_json_binary(&GeneratorExecuteMsg::ClaimRewards { lp_tokens: vec![lp_token.to_string()], })?, funds: vec![], @@ -371,7 +371,7 @@ pub fn withdraw_generator( Ok(Response::new() .add_message(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: cfg.generator_addr.to_string(), - msg: to_binary(&GeneratorExecuteMsg::Withdraw { + msg: to_json_binary(&GeneratorExecuteMsg::Withdraw { lp_token: lp_token.to_string(), amount: burn_amount, })?, @@ -555,7 +555,7 @@ fn transfer( CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: contract_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: recipient.clone(), amount: asset.amount, })?, @@ -937,17 +937,21 @@ pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result StdResult { match msg { - QueryMsg::Config {} => to_binary(&query_config(deps)?), - QueryMsg::Proposal { proposal_id } => to_binary(&query_proposal(deps, env, proposal_id)?), - QueryMsg::Vote { proposal_id, voter } => to_binary(&query_vote(deps, proposal_id, voter)?), + QueryMsg::Config {} => to_json_binary(&query_config(deps)?), + QueryMsg::Proposal { proposal_id } => { + to_json_binary(&query_proposal(deps, env, proposal_id)?) + } + QueryMsg::Vote { proposal_id, voter } => { + to_json_binary(&query_vote(deps, proposal_id, voter)?) + } QueryMsg::ListProposals { start_after, limit } => { - to_binary(&list_proposals(deps, env, start_after, limit)?) + to_json_binary(&list_proposals(deps, env, start_after, limit)?) } QueryMsg::ReverseProposals { start_before, limit, - } => to_binary(&reverse_proposals(deps, env, start_before, limit)?), - QueryMsg::ListVotes { proposal_id } => to_binary(&list_votes(deps, proposal_id)?), + } => to_json_binary(&reverse_proposals(deps, env, start_before, limit)?), + QueryMsg::ListVotes { proposal_id } => to_json_binary(&list_votes(deps, proposal_id)?), } } diff --git a/contracts/periphery/shared_multisig/src/utils.rs b/contracts/periphery/shared_multisig/src/utils.rs index 213187b5b..61a6e2c14 100644 --- a/contracts/periphery/shared_multisig/src/utils.rs +++ b/contracts/periphery/shared_multisig/src/utils.rs @@ -8,7 +8,7 @@ use astroport::generator::QueryMsg as GeneratorQueryMsg; use astroport::querier::{query_balance, query_pair_info, query_token_balance}; use astroport::shared_multisig::{Config, PoolType, ProvideParams}; use cosmwasm_std::{ - attr, to_binary, Addr, Attribute, CosmosMsg, Decimal, QuerierWrapper, StdError, StdResult, + attr, to_json_binary, Addr, Attribute, CosmosMsg, Decimal, QuerierWrapper, StdError, StdResult, Uint128, WasmMsg, }; use cw20::Cw20ExecuteMsg; @@ -63,9 +63,9 @@ pub(crate) fn prepare_withdraw_msg( Ok(( CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: lp_token.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Send { + msg: to_json_binary(&Cw20ExecuteMsg::Send { contract: pair.to_string(), - msg: to_binary(&PairCw20HookMsg::WithdrawLiquidity { assets: vec![] })?, + msg: to_json_binary(&PairCw20HookMsg::WithdrawLiquidity { assets: vec![] })?, amount: burn_amount, })?, funds: vec![], @@ -86,7 +86,7 @@ pub(crate) fn prepare_provide_msg( .iter() .map(|asset| asset.as_coin()) .collect::>()?, - msg: to_binary(&PairExecuteMsg::ProvideLiquidity { + msg: to_json_binary(&PairExecuteMsg::ProvideLiquidity { assets, slippage_tolerance, auto_stake, diff --git a/contracts/periphery/shared_multisig/tests/integration.rs b/contracts/periphery/shared_multisig/tests/integration.rs index c64f7e132..edb4eecaa 100644 --- a/contracts/periphery/shared_multisig/tests/integration.rs +++ b/contracts/periphery/shared_multisig/tests/integration.rs @@ -2,7 +2,7 @@ use astroport::asset::{Asset, AssetInfo}; use astroport::generator::PendingTokenResponse; -use cosmwasm_std::{to_binary, Addr, Coin, CosmosMsg, Decimal, Uint128, WasmMsg}; +use cosmwasm_std::{to_json_binary, Addr, Coin, CosmosMsg, Decimal, Uint128, WasmMsg}; use cw20::Cw20ExecuteMsg; use cw3::{Status, Vote, VoteInfo, VoteListResponse, VoteResponse}; use cw_utils::{Duration, ThresholdResponse}; @@ -343,7 +343,7 @@ fn test_proposal() { let setup_pools_msg = CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: shared_multisig.address.to_string(), - msg: to_binary(&ExecuteMsg::SetupPools { + msg: to_json_binary(&ExecuteMsg::SetupPools { target_pool: None, migration_pool: Some(pcl.address.to_string()), }) @@ -1685,7 +1685,7 @@ fn test_transfer_lp_tokens() { let lp_transfer_amount = Uint128::new(10_000_000); let transfer_lp_msg = CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: pcl_pair_info.liquidity_token.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: recipient.to_string(), amount: lp_transfer_amount, }) diff --git a/contracts/router/src/contract.rs b/contracts/router/src/contract.rs index 0ade7480c..520a83ead 100644 --- a/contracts/router/src/contract.rs +++ b/contracts/router/src/contract.rs @@ -1,6 +1,6 @@ use cosmwasm_std::{ - entry_point, from_binary, to_binary, wasm_execute, Addr, Api, Binary, Decimal, Deps, DepsMut, - Env, MessageInfo, Reply, Response, StdError, StdResult, SubMsg, SubMsgResult, Uint128, + entry_point, from_json, to_json_binary, wasm_execute, Addr, Api, Binary, Decimal, Deps, + DepsMut, Env, MessageInfo, Reply, Response, StdError, StdResult, SubMsg, SubMsgResult, Uint128, }; use cw2::{get_contract_version, set_contract_version}; use cw20::Cw20ReceiveMsg; @@ -104,7 +104,7 @@ pub fn receive_cw20( env: Env, cw20_msg: Cw20ReceiveMsg, ) -> Result { - match from_binary(&cw20_msg.msg)? { + match from_json(&cw20_msg.msg)? { Cw20HookMsg::ExecuteSwapOperations { operations, minimum_receive, @@ -216,7 +216,7 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result Result Result { match msg { - QueryMsg::Config {} => Ok(to_binary(&query_config(deps)?)?), + QueryMsg::Config {} => Ok(to_json_binary(&query_config(deps)?)?), QueryMsg::SimulateSwapOperations { offer_amount, operations, - } => Ok(to_binary(&simulate_swap_operations( + } => Ok(to_json_binary(&simulate_swap_operations( deps, offer_amount, operations, diff --git a/contracts/router/src/operations.rs b/contracts/router/src/operations.rs index 759e49e4d..1d3038c63 100644 --- a/contracts/router/src/operations.rs +++ b/contracts/router/src/operations.rs @@ -3,7 +3,8 @@ use astroport::pair::ExecuteMsg as PairExecuteMsg; use astroport::querier::{query_balance, query_pair_info, query_token_balance}; use astroport::router::SwapOperation; use cosmwasm_std::{ - to_binary, Coin, CosmosMsg, Decimal, DepsMut, Env, MessageInfo, Response, StdResult, WasmMsg, + to_json_binary, Coin, CosmosMsg, Decimal, DepsMut, Env, MessageInfo, Response, StdResult, + WasmMsg, }; use cw20::Cw20ExecuteMsg; @@ -101,7 +102,7 @@ pub fn asset_into_swap_msg( denom: denom.to_string(), amount: offer_asset.amount, }], - msg: to_binary(&PairExecuteMsg::Swap { + msg: to_json_binary(&PairExecuteMsg::Swap { offer_asset: Asset { amount: offer_asset.amount, ..offer_asset @@ -115,10 +116,10 @@ pub fn asset_into_swap_msg( AssetInfo::Token { contract_addr } => Ok(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: contract_addr.to_string(), funds: vec![], - msg: to_binary(&Cw20ExecuteMsg::Send { + msg: to_json_binary(&Cw20ExecuteMsg::Send { contract: pair_contract, amount: offer_asset.amount, - msg: to_binary(&astroport::pair::Cw20HookMsg::Swap { + msg: to_json_binary(&astroport::pair::Cw20HookMsg::Swap { ask_asset_info: Some(ask_asset_info), belief_price, max_spread, diff --git a/contracts/router/src/testing/mock_querier.rs b/contracts/router/src/testing/mock_querier.rs index 6d8764d95..976e075df 100644 --- a/contracts/router/src/testing/mock_querier.rs +++ b/contracts/router/src/testing/mock_querier.rs @@ -1,8 +1,8 @@ use cosmwasm_schema::cw_serde; use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage, MOCK_CONTRACT_ADDR}; use cosmwasm_std::{ - from_binary, from_slice, to_binary, Addr, Binary, Coin, ContractResult, Empty, OwnedDeps, - Querier, QuerierResult, QueryRequest, SystemError, SystemResult, Uint128, WasmQuery, + from_json, to_json_binary, Addr, Binary, Coin, ContractResult, Empty, OwnedDeps, Querier, + QuerierResult, QueryRequest, SystemError, SystemResult, Uint128, WasmQuery, }; use std::collections::HashMap; @@ -97,7 +97,7 @@ pub(crate) fn pairs_to_map(pairs: &[(&String, &String)]) -> HashMap QuerierResult { // MockQuerier doesn't support Custom, so we ignore it completely here - let request: QueryRequest = match from_slice(bin_request) { + let request: QueryRequest = match from_json(bin_request) { Ok(v) => v, Err(e) => { return SystemResult::Err(SystemError::InvalidRequest { @@ -132,11 +132,11 @@ impl WasmMockQuerier { } fn handle_default(&self, msg: &Binary) -> QuerierResult { - match from_binary(&msg).unwrap() { + match from_json(&msg).unwrap() { QueryMsg::Pair { asset_infos } => { let key = asset_infos[0].to_string() + asset_infos[1].to_string().as_str(); match self.astroport_factory_querier.pairs.get(&key) { - Some(v) => SystemResult::Ok(ContractResult::from(to_binary(&PairInfo { + Some(v) => SystemResult::Ok(ContractResult::from(to_json_binary(&PairInfo { contract_addr: Addr::unchecked(v), liquidity_token: Addr::unchecked("liquidity"), asset_infos: vec![ @@ -156,7 +156,7 @@ impl WasmMockQuerier { } } QueryMsg::Simulation { offer_asset, .. } => { - SystemResult::Ok(ContractResult::from(to_binary(&SimulationResponse { + SystemResult::Ok(ContractResult::from(to_json_binary(&SimulationResponse { return_amount: offer_asset.amount, commission_amount: Uint128::zero(), spread_amount: Uint128::zero(), @@ -166,7 +166,7 @@ impl WasmMockQuerier { } fn handle_cw20(&self, contract_addr: &String, msg: &Binary) -> QuerierResult { - match from_binary(&msg).unwrap() { + match from_json(&msg).unwrap() { Cw20QueryMsg::TokenInfo {} => { let balances: &HashMap = match self.token_querier.balances.get(contract_addr) { @@ -182,7 +182,7 @@ impl WasmMockQuerier { total_supply += *balance.1; } - SystemResult::Ok(ContractResult::from(to_binary(&TokenInfoResponse { + SystemResult::Ok(ContractResult::from(to_json_binary(&TokenInfoResponse { name: "mAPPL".to_string(), symbol: "mAPPL".to_string(), decimals: 6, @@ -205,7 +205,7 @@ impl WasmMockQuerier { } }; - SystemResult::Ok(ContractResult::from(to_binary(&BalanceResponse { + SystemResult::Ok(ContractResult::from(to_json_binary(&BalanceResponse { balance: *balance, }))) } diff --git a/contracts/router/src/testing/tests.rs b/contracts/router/src/testing/tests.rs index a9aedc89a..3ecec8ccf 100644 --- a/contracts/router/src/testing/tests.rs +++ b/contracts/router/src/testing/tests.rs @@ -1,5 +1,5 @@ use cosmwasm_std::testing::{mock_env, mock_info, MOCK_CONTRACT_ADDR}; -use cosmwasm_std::{from_binary, to_binary, Addr, Coin, ReplyOn, SubMsg, Uint128, WasmMsg}; +use cosmwasm_std::{from_json, to_json_binary, Addr, Coin, ReplyOn, SubMsg, Uint128, WasmMsg}; use cw20::{Cw20ExecuteMsg, Cw20ReceiveMsg}; use astroport::asset::{native_asset_info, AssetInfo}; @@ -28,7 +28,7 @@ fn proper_initialization() { // It worked, let's query the state let config: ConfigResponse = - from_binary(&query(deps.as_ref(), env, QueryMsg::Config {}).unwrap()).unwrap(); + from_json(&query(deps.as_ref(), env, QueryMsg::Config {}).unwrap()).unwrap(); assert_eq!("astroportfactory", config.astroport_factory.as_str()); } @@ -99,7 +99,7 @@ fn execute_swap_operations() { msg: WasmMsg::Execute { contract_addr: String::from(MOCK_CONTRACT_ADDR), funds: vec![], - msg: to_binary(&ExecuteMsg::ExecuteSwapOperation { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperation { operation: SwapOperation::AstroSwap { offer_asset_info: AssetInfo::NativeToken { denom: "ukrw".to_string(), @@ -123,7 +123,7 @@ fn execute_swap_operations() { msg: WasmMsg::Execute { contract_addr: String::from(MOCK_CONTRACT_ADDR), funds: vec![], - msg: to_binary(&ExecuteMsg::ExecuteSwapOperation { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperation { operation: SwapOperation::AstroSwap { offer_asset_info: AssetInfo::Token { contract_addr: Addr::unchecked("asset0001"), @@ -147,7 +147,7 @@ fn execute_swap_operations() { msg: WasmMsg::Execute { contract_addr: String::from(MOCK_CONTRACT_ADDR), funds: vec![], - msg: to_binary(&ExecuteMsg::ExecuteSwapOperation { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperation { operation: SwapOperation::AstroSwap { offer_asset_info: AssetInfo::NativeToken { denom: "uluna".to_string(), @@ -173,7 +173,7 @@ fn execute_swap_operations() { let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { sender: String::from("addr0000"), amount: Uint128::from(1000000u128), - msg: to_binary(&Cw20HookMsg::ExecuteSwapOperations { + msg: to_json_binary(&Cw20HookMsg::ExecuteSwapOperations { operations: vec![ SwapOperation::AstroSwap { offer_asset_info: AssetInfo::NativeToken { @@ -217,7 +217,7 @@ fn execute_swap_operations() { msg: WasmMsg::Execute { contract_addr: String::from(MOCK_CONTRACT_ADDR), funds: vec![], - msg: to_binary(&ExecuteMsg::ExecuteSwapOperation { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperation { operation: SwapOperation::AstroSwap { offer_asset_info: AssetInfo::NativeToken { denom: "ukrw".to_string(), @@ -241,7 +241,7 @@ fn execute_swap_operations() { msg: WasmMsg::Execute { contract_addr: String::from(MOCK_CONTRACT_ADDR), funds: vec![], - msg: to_binary(&ExecuteMsg::ExecuteSwapOperation { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperation { operation: SwapOperation::AstroSwap { offer_asset_info: AssetInfo::Token { contract_addr: Addr::unchecked("asset0001"), @@ -265,7 +265,7 @@ fn execute_swap_operations() { msg: WasmMsg::Execute { contract_addr: String::from(MOCK_CONTRACT_ADDR), funds: vec![], - msg: to_binary(&ExecuteMsg::ExecuteSwapOperation { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperation { operation: SwapOperation::AstroSwap { offer_asset_info: AssetInfo::NativeToken { denom: "uluna".to_string(), @@ -343,10 +343,10 @@ fn execute_swap_operation() { msg: WasmMsg::Execute { contract_addr: String::from("asset"), funds: vec![], - msg: to_binary(&Cw20ExecuteMsg::Send { + msg: to_json_binary(&Cw20ExecuteMsg::Send { contract: String::from("pair"), amount: Uint128::new(1000000u128), - msg: to_binary(&astroport::pair::Cw20HookMsg::Swap { + msg: to_json_binary(&astroport::pair::Cw20HookMsg::Swap { ask_asset_info: Some(native_asset_info("uusd".to_string())), belief_price: None, max_spread: None, @@ -405,7 +405,7 @@ fn query_buy_with_routes() { ]); let res: SimulateSwapOperationsResponse = - from_binary(&query(deps.as_ref(), env.clone(), msg).unwrap()).unwrap(); + from_json(&query(deps.as_ref(), env.clone(), msg).unwrap()).unwrap(); assert_eq!( res, SimulateSwapOperationsResponse { diff --git a/contracts/router/tests/router_integration.rs b/contracts/router/tests/router_integration.rs index 7ef895ee0..81d9a3678 100644 --- a/contracts/router/tests/router_integration.rs +++ b/contracts/router/tests/router_integration.rs @@ -1,6 +1,6 @@ #![cfg(not(tarpaulin_include))] -use cosmwasm_std::{coins, from_binary, to_binary, Addr, Empty, StdError}; +use cosmwasm_std::{coins, from_json, to_json_binary, Addr, Empty, StdError}; use cw20::Cw20ExecuteMsg; use cw_multi_test::{App, Contract, ContractWrapper, Executor}; @@ -75,7 +75,7 @@ fn router_does_not_enforce_spread_assertion() { &Cw20ExecuteMsg::Send { contract: router.to_string(), amount: 50_000_000000u128.into(), - msg: to_binary(&ExecuteMsg::ExecuteSwapOperations { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperations { operations: vec![ SwapOperation::AstroSwap { offer_asset_info: token_asset_info(token_x.clone()), @@ -111,7 +111,7 @@ fn router_does_not_enforce_spread_assertion() { &Cw20ExecuteMsg::Send { contract: router.to_string(), amount: 50_000_000000u128.into(), - msg: to_binary(&ExecuteMsg::ExecuteSwapOperations { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperations { operations: vec![SwapOperation::AstroSwap { offer_asset_info: token_asset_info(token_x.clone()), ask_asset_info: token_asset_info(token_y.clone()), @@ -269,7 +269,7 @@ fn route_through_pairs_with_natives() { ) .unwrap(); - let resp_data: SwapResponseData = from_binary(&resp.data.unwrap()).unwrap(); + let resp_data: SwapResponseData = from_json(&resp.data.unwrap()).unwrap(); assert_eq!(resp_data.return_amount.u128(), 32_258_064515); @@ -314,7 +314,7 @@ fn test_swap_route() { use astroport::router::{ ExecuteMsg, InstantiateMsg, QueryMsg, SimulateSwapOperationsResponse, SwapOperation, }; - use cosmwasm_std::{to_binary, Addr, Uint128}; + use cosmwasm_std::{to_json_binary, Addr, Uint128}; use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg}; let mut app = App::default(); let owner = Addr::unchecked("owner"); @@ -473,7 +473,7 @@ fn test_swap_route() { &Cw20ExecuteMsg::Send { contract: router.to_string(), amount: swap_amount, - msg: to_binary(&ExecuteMsg::ExecuteSwapOperations { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperations { operations: swap_operations.clone(), minimum_receive: None, to: None, @@ -560,7 +560,7 @@ fn test_swap_route() { &Cw20ExecuteMsg::Send { contract: router.to_string(), amount: swap_amount, - msg: to_binary(&ExecuteMsg::ExecuteSwapOperations { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperations { operations: swap_operations.clone(), minimum_receive: None, to: None, @@ -784,7 +784,7 @@ fn test_swap_route() { &Cw20ExecuteMsg::Send { contract: router.to_string(), amount: swap_amount, - msg: to_binary(&ExecuteMsg::ExecuteSwapOperations { + msg: to_json_binary(&ExecuteMsg::ExecuteSwapOperations { operations: swap_operations.clone(), minimum_receive: Some(donated_atom), to: None, diff --git a/contracts/tokenomics/generator/src/contract.rs b/contracts/tokenomics/generator/src/contract.rs index f98b90e42..b40ae8287 100644 --- a/contracts/tokenomics/generator/src/contract.rs +++ b/contracts/tokenomics/generator/src/contract.rs @@ -1,7 +1,7 @@ use std::collections::{HashMap, HashSet}; use cosmwasm_std::{ - attr, entry_point, from_binary, to_binary, wasm_execute, Addr, Binary, CosmosMsg, Decimal, + attr, entry_point, from_json, to_json_binary, wasm_execute, Addr, Binary, CosmosMsg, Decimal, Deps, DepsMut, Empty, Env, MessageInfo, Order, QuerierWrapper, Reply, Response, StdError, StdResult, SubMsg, SubMsgResponse, SubMsgResult, Uint128, Uint64, WasmMsg, }; @@ -709,7 +709,7 @@ fn get_proxy_rewards( Some(SubMsg::new(WasmMsg::Execute { contract_addr: reward_proxy.to_string(), funds: vec![], - msg: to_binary(&ProxyExecuteMsg::UpdateRewards {})?, + msg: to_json_binary(&ProxyExecuteMsg::UpdateRewards {})?, })) } else { None @@ -955,7 +955,7 @@ fn receive_cw20( create_pool(deps.branch(), &env, &lp_token, &cfg)?; } - match from_binary(&cw20_msg.msg)? { + match from_json(&cw20_msg.msg)? { Cw20HookMsg::Deposit {} => update_rewards_and_execute( deps, env, @@ -1008,7 +1008,7 @@ pub fn send_pending_rewards( if !pending_rewards.is_zero() { messages.push(WasmMsg::Execute { contract_addr: cfg.vesting_contract.to_string(), - msg: to_binary(&VestingExecuteMsg::Claim { + msg: to_json_binary(&VestingExecuteMsg::Claim { recipient: Some(to.to_string()), amount: Some(pending_rewards), })?, @@ -1026,7 +1026,7 @@ pub fn send_pending_rewards( messages.push(WasmMsg::Execute { contract_addr: proxy.to_string(), funds: vec![], - msg: to_binary(&ProxyExecuteMsg::SendRewards { + msg: to_json_binary(&ProxyExecuteMsg::SendRewards { account: to.to_string(), amount: pending_proxy_rewards, })?, @@ -1038,7 +1038,7 @@ pub fn send_pending_rewards( messages.push(WasmMsg::Execute { contract_addr: proxy_rewards_holder.to_string(), funds: vec![], - msg: to_binary(&cw1_whitelist::msg::ExecuteMsg::Execute { + msg: to_json_binary(&cw1_whitelist::msg::ExecuteMsg::Execute { msgs: vec![Asset { info: asset_info, amount: pending_proxy_rewards, @@ -1090,7 +1090,7 @@ pub fn deposit( &lp_token, &Cw20ExecuteMsg::Send { contract: pool.reward_proxy.clone().unwrap().to_string(), - msg: to_binary(&ProxyCw20HookMsg::Deposit {})?, + msg: to_json_binary(&ProxyCw20HookMsg::Deposit {})?, amount, }, vec![], @@ -1153,14 +1153,14 @@ pub fn withdraw( Some(proxy) => WasmMsg::Execute { contract_addr: proxy.to_string(), funds: vec![], - msg: to_binary(&ProxyExecuteMsg::Withdraw { + msg: to_json_binary(&ProxyExecuteMsg::Withdraw { account: account.to_string(), amount, })?, }, None => WasmMsg::Execute { contract_addr: lp_token.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: account.to_string(), amount, })?, @@ -1233,7 +1233,7 @@ pub fn emergency_withdraw( transfer_msg = WasmMsg::Execute { contract_addr: proxy.to_string(), - msg: to_binary(&ProxyExecuteMsg::EmergencyWithdraw { + msg: to_json_binary(&ProxyExecuteMsg::EmergencyWithdraw { account: info.sender.to_string(), amount: user.amount, })?, @@ -1242,7 +1242,7 @@ pub fn emergency_withdraw( } else { transfer_msg = WasmMsg::Execute { contract_addr: lp_token.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: info.sender.to_string(), amount: user.amount, })?, @@ -1297,7 +1297,7 @@ fn send_orphan_proxy_rewards( Some(reward_proxy) if reward_proxy == proxy => SubMsg::new(WasmMsg::Execute { contract_addr: reward_proxy.to_string(), funds: vec![], - msg: to_binary(&ProxyExecuteMsg::SendRewards { + msg: to_json_binary(&ProxyExecuteMsg::SendRewards { account: recipient.to_string(), amount: *amount, })?, @@ -1307,7 +1307,7 @@ fn send_orphan_proxy_rewards( SubMsg::new(WasmMsg::Execute { contract_addr: proxy_rewards_holder.to_string(), funds: vec![], - msg: to_binary(&cw1_whitelist::msg::ExecuteMsg::Execute { + msg: to_json_binary(&cw1_whitelist::msg::ExecuteMsg::Execute { msgs: vec![Asset { info: asset_info, amount: *amount, @@ -1349,7 +1349,7 @@ fn init_proxy_rewards_holder( code_id: whitelist_code_id, funds: vec![], label: "Proxy rewards holder".to_string(), - msg: to_binary(&cw1_whitelist::msg::InstantiateMsg { + msg: to_json_binary(&cw1_whitelist::msg::InstantiateMsg { admins: vec![admin.to_string()], mutable: false, })?, @@ -1445,7 +1445,7 @@ fn migrate_proxy_callback( let rewards_holder = PROXY_REWARDS_HOLDER.load(deps.storage)?; let trasfer_rewards_msg = SubMsg::new(WasmMsg::Execute { contract_addr: prev_proxy_addr.to_string(), - msg: to_binary(&ProxyExecuteMsg::SendRewards { + msg: to_json_binary(&ProxyExecuteMsg::SendRewards { account: rewards_holder.to_string(), amount: rewards_amount, })?, @@ -1459,7 +1459,7 @@ fn migrate_proxy_callback( // Firstly, transfer LP tokens to the generator address let transfer_lp_msg = SubMsg::new(WasmMsg::Execute { contract_addr: prev_proxy_addr.to_string(), - msg: to_binary(&ProxyExecuteMsg::Withdraw { + msg: to_json_binary(&ProxyExecuteMsg::Withdraw { account: env.contract.address.to_string(), amount: proxy_lp_balance, })?, @@ -1498,9 +1498,9 @@ fn migrate_proxy_deposit_lp( // Depositing LP tokens to new proxy let deposit_msg = WasmMsg::Execute { contract_addr: lp_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Send { + msg: to_json_binary(&Cw20ExecuteMsg::Send { contract: new_proxy.to_string(), - msg: to_binary(&ProxyCw20HookMsg::Deposit {})?, + msg: to_json_binary(&ProxyCw20HookMsg::Deposit {})?, amount, })?, funds: vec![], @@ -1560,9 +1560,9 @@ fn move_to_proxy( let messages = if !res.balance.is_zero() { vec![WasmMsg::Execute { contract_addr: lp_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Send { + msg: to_json_binary(&Cw20ExecuteMsg::Send { contract: pool_info.reward_proxy.clone().unwrap().to_string(), - msg: to_binary(&ProxyCw20HookMsg::Deposit {})?, + msg: to_json_binary(&ProxyCw20HookMsg::Deposit {})?, amount: res.balance, })?, funds: vec![], @@ -1603,33 +1603,37 @@ fn move_to_proxy( pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> Result { match msg { QueryMsg::TotalVirtualSupply { generator } => { - Ok(to_binary(&total_virtual_supply(deps, generator)?)?) + Ok(to_json_binary(&total_virtual_supply(deps, generator)?)?) } QueryMsg::ActivePoolLength {} => { let config = CONFIG.load(deps.storage)?; - Ok(to_binary(&config.active_pools.len())?) + Ok(to_json_binary(&config.active_pools.len())?) } QueryMsg::PoolLength {} => { let length = POOL_INFO .keys(deps.storage, None, None, Order::Ascending) .count(); - Ok(to_binary(&length)?) - } - QueryMsg::UserVirtualAmount { lp_token, user } => { - Ok(to_binary(&query_virtual_amount(deps, lp_token, user)?)?) + Ok(to_json_binary(&length)?) } + QueryMsg::UserVirtualAmount { lp_token, user } => Ok(to_json_binary( + &query_virtual_amount(deps, lp_token, user)?, + )?), QueryMsg::Deposit { lp_token, user } => { - Ok(to_binary(&query_deposit(deps, lp_token, user)?)?) + Ok(to_json_binary(&query_deposit(deps, lp_token, user)?)?) } QueryMsg::PendingToken { lp_token, user } => { - Ok(to_binary(&pending_token(deps, env, lp_token, user)?)?) + Ok(to_json_binary(&pending_token(deps, env, lp_token, user)?)?) + } + QueryMsg::Config {} => Ok(to_json_binary(&CONFIG.load(deps.storage)?)?), + QueryMsg::RewardInfo { lp_token } => { + Ok(to_json_binary(&query_reward_info(deps, lp_token)?)?) } - QueryMsg::Config {} => Ok(to_binary(&CONFIG.load(deps.storage)?)?), - QueryMsg::RewardInfo { lp_token } => Ok(to_binary(&query_reward_info(deps, lp_token)?)?), - QueryMsg::OrphanProxyRewards { lp_token } => { - Ok(to_binary(&query_orphan_proxy_rewards(deps, lp_token)?)?) + QueryMsg::OrphanProxyRewards { lp_token } => Ok(to_json_binary( + &query_orphan_proxy_rewards(deps, lp_token)?, + )?), + QueryMsg::PoolInfo { lp_token } => { + Ok(to_json_binary(&query_pool_info(deps, env, lp_token)?)?) } - QueryMsg::PoolInfo { lp_token } => Ok(to_binary(&query_pool_info(deps, env, lp_token)?)?), QueryMsg::SimulateFutureReward { lp_token, future_block, @@ -1638,26 +1642,26 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> Result { - Ok(to_binary(&CONFIG.load(deps.storage)?.blocked_tokens_list)?) - } + QueryMsg::BlockedTokensList {} => Ok(to_json_binary( + &CONFIG.load(deps.storage)?.blocked_tokens_list, + )?), QueryMsg::PoolStakers { lp_token, start_after, limit, - } => Ok(to_binary(&query_list_of_stakers( + } => Ok(to_json_binary(&query_list_of_stakers( deps, lp_token, start_after, limit, )?)?), - QueryMsg::RewardProxiesList {} => Ok(to_binary( + QueryMsg::RewardProxiesList {} => Ok(to_json_binary( &PROXY_REWARD_ASSET .keys(deps.storage, None, None, Order::Ascending) .collect::, StdError>>()?, diff --git a/contracts/tokenomics/generator/tests/integration.rs b/contracts/tokenomics/generator/tests/integration.rs index 0e4d760e3..e7a685190 100644 --- a/contracts/tokenomics/generator/tests/integration.rs +++ b/contracts/tokenomics/generator/tests/integration.rs @@ -31,7 +31,7 @@ use astroport::pair::StablePoolParams; use astroport_generator::error::ContractError; use astroport_mocks::cw_multi_test::{next_block, App, ContractWrapper, Executor}; use astroport_mocks::{astroport_address, MockGeneratorBuilder, MockToken, MockTokenBuilder}; -use cosmwasm_std::{from_slice, to_binary, Addr, Binary, StdResult, Uint128, Uint64}; +use cosmwasm_std::{from_json, to_json_binary, Addr, Binary, StdResult, Uint128, Uint64}; use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; use crate::test_utils::controller_helper::ControllerHelper; @@ -1151,7 +1151,7 @@ fn disabling_pool() { let msg = Cw20ExecuteMsg::Send { contract: generator_instance.to_string(), - msg: to_binary(&GeneratorHookMsg::Deposit {}).unwrap(), + msg: to_json_binary(&GeneratorHookMsg::Deposit {}).unwrap(), amount: Uint128::new(10), }; @@ -1187,7 +1187,7 @@ fn disabling_pool() { let msg = Cw20ExecuteMsg::Send { contract: generator_instance.to_string(), - msg: to_binary(&GeneratorHookMsg::Deposit {}).unwrap(), + msg: to_json_binary(&GeneratorHookMsg::Deposit {}).unwrap(), amount: Uint128::new(10), }; @@ -1271,7 +1271,7 @@ fn generator_without_reward_proxies() { let msg = Cw20ExecuteMsg::Send { contract: generator_instance.to_string(), - msg: to_binary(&GeneratorHookMsg::Deposit {}).unwrap(), + msg: to_json_binary(&GeneratorHookMsg::Deposit {}).unwrap(), amount: Uint128::new(10), }; @@ -1944,7 +1944,7 @@ fn generator_with_vkr_reward_proxy() { let msg = Cw20ExecuteMsg::Send { contract: generator_instance.to_string(), - msg: to_binary(&GeneratorHookMsg::Deposit {}).unwrap(), + msg: to_json_binary(&GeneratorHookMsg::Deposit {}).unwrap(), amount: Uint128::new(10), }; @@ -3341,7 +3341,7 @@ fn deactivate_pools_by_pair_types() { &factory_instance, Some(PairType::Stable {}), Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 100, owner: None, }) @@ -4053,7 +4053,7 @@ fn instantiate_generator( let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&VestingHookMsg::RegisterVestingAccounts { + msg: to_json_binary(&VestingHookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: generator_instance.to_string(), schedules: vec![VestingSchedule { @@ -4211,7 +4211,7 @@ fn deposit_lp_tokens_to_generator( for (token, amount) in lp_tokens { let msg = Cw20ExecuteMsg::Send { contract: generator_instance.to_string(), - msg: to_binary(&GeneratorHookMsg::Deposit {}).unwrap(), + msg: to_json_binary(&GeneratorHookMsg::Deposit {}).unwrap(), amount: Uint128::from(amount.to_owned()), }; @@ -4445,7 +4445,7 @@ fn migrate_proxy() { ) .unwrap(); - let proxy_reward_holder: Addr = from_slice( + let proxy_reward_holder: Addr = from_json( &app.borrow() .wrap() .query_wasm_raw(generator.address.clone(), b"proxy_rewards_holder") diff --git a/contracts/tokenomics/generator/tests/test_utils/controller_helper.rs b/contracts/tokenomics/generator/tests/test_utils/controller_helper.rs index b79f21fc4..2fe51b452 100644 --- a/contracts/tokenomics/generator/tests/test_utils/controller_helper.rs +++ b/contracts/tokenomics/generator/tests/test_utils/controller_helper.rs @@ -11,7 +11,7 @@ use astroport::vesting::{InstantiateMsg, VestingSchedule, VestingSchedulePoint}; use astroport_governance::generator_controller::{ExecuteMsg, QueryMsg}; use astroport_governance::generator_controller::{UserInfoResponse, VotedPoolInfoResponse}; use astroport_mocks::cw_multi_test::{App, AppResponse, ContractWrapper, Executor}; -use cosmwasm_std::{to_binary, Addr, StdResult, Uint128, Uint64}; +use cosmwasm_std::{to_json_binary, Addr, StdResult, Uint128, Uint64}; use cw20::Cw20ExecuteMsg; pub struct ControllerHelper { @@ -171,7 +171,7 @@ impl ControllerHelper { // Register vesting account let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&VestingHookMsg::RegisterVestingAccounts { + msg: to_json_binary(&VestingHookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: generator.to_string(), schedules: vec![VestingSchedule { diff --git a/contracts/tokenomics/generator/tests/test_utils/delegation_helper.rs b/contracts/tokenomics/generator/tests/test_utils/delegation_helper.rs index 54f86619f..468e9cf9f 100644 --- a/contracts/tokenomics/generator/tests/test_utils/delegation_helper.rs +++ b/contracts/tokenomics/generator/tests/test_utils/delegation_helper.rs @@ -3,7 +3,7 @@ use anyhow::Result; use astroport_governance::voting_escrow_delegation as escrow_delegation; use astroport_mocks::cw_multi_test::{App, AppResponse, Contract, ContractWrapper, Executor}; -use cosmwasm_std::{to_binary, Addr, Empty, QueryRequest, StdResult, Uint128, WasmQuery}; +use cosmwasm_std::{to_json_binary, Addr, Empty, QueryRequest, StdResult, Uint128, WasmQuery}; use cw721_base::helpers::Cw721Contract; @@ -60,7 +60,7 @@ impl DelegationHelper { .query::(&QueryRequest::Wasm( WasmQuery::Smart { contract_addr: delegation_addr.to_string(), - msg: to_binary(&escrow_delegation::QueryMsg::Config {}).unwrap(), + msg: to_json_binary(&escrow_delegation::QueryMsg::Config {}).unwrap(), }, )) .unwrap(); @@ -146,7 +146,7 @@ impl DelegationHelper { .wrap() .query::(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: self.delegation_instance.to_string(), - msg: to_binary(&escrow_delegation::QueryMsg::AdjustedBalance { + msg: to_json_binary(&escrow_delegation::QueryMsg::AdjustedBalance { account: user.to_string(), timestamp, }) @@ -164,7 +164,7 @@ impl DelegationHelper { .wrap() .query::(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: self.delegation_instance.to_string(), - msg: to_binary(&escrow_delegation::QueryMsg::DelegatedVotingPower { + msg: to_json_binary(&escrow_delegation::QueryMsg::DelegatedVotingPower { account: user.to_string(), timestamp, }) diff --git a/contracts/tokenomics/generator/tests/test_utils/escrow_helper.rs b/contracts/tokenomics/generator/tests/test_utils/escrow_helper.rs index 86006d202..bee959b6f 100644 --- a/contracts/tokenomics/generator/tests/test_utils/escrow_helper.rs +++ b/contracts/tokenomics/generator/tests/test_utils/escrow_helper.rs @@ -6,7 +6,7 @@ use astroport_governance::voting_escrow::{ Cw20HookMsg, ExecuteMsg, InstantiateMsg, LockInfoResponse, QueryMsg, VotingPowerResponse, }; use astroport_mocks::cw_multi_test::{App, AppResponse, ContractWrapper, Executor}; -use cosmwasm_std::{attr, to_binary, Addr, QueryRequest, StdResult, Uint128, WasmQuery}; +use cosmwasm_std::{attr, to_json_binary, Addr, QueryRequest, StdResult, Uint128, WasmQuery}; use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; pub const MULTIPLIER: u64 = 1000000; @@ -85,7 +85,7 @@ impl EscrowHelper { .wrap() .query::(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: staking_instance.to_string(), - msg: to_binary(&xastro::QueryMsg::Config {}).unwrap(), + msg: to_json_binary(&xastro::QueryMsg::Config {}).unwrap(), })) .unwrap(); @@ -144,7 +144,7 @@ impl EscrowHelper { let to_addr = Addr::unchecked(to); let msg = Cw20ExecuteMsg::Send { contract: self.staking_instance.to_string(), - msg: to_binary(&xastro::Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&xastro::Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(amount), }; router @@ -177,7 +177,7 @@ impl EscrowHelper { let cw20msg = Cw20ExecuteMsg::Send { contract: self.escrow_instance.to_string(), amount: Uint128::from(amount), - msg: to_binary(&Cw20HookMsg::CreateLock { time }).unwrap(), + msg: to_json_binary(&Cw20HookMsg::CreateLock { time }).unwrap(), }; router.execute_contract( Addr::unchecked(user), @@ -197,7 +197,7 @@ impl EscrowHelper { let cw20msg = Cw20ExecuteMsg::Send { contract: self.escrow_instance.to_string(), amount: Uint128::from(amount), - msg: to_binary(&Cw20HookMsg::ExtendLockAmount {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::ExtendLockAmount {}).unwrap(), }; router.execute_contract( Addr::unchecked(user), @@ -218,7 +218,7 @@ impl EscrowHelper { let cw20msg = Cw20ExecuteMsg::Send { contract: self.escrow_instance.to_string(), amount: Uint128::from(amount), - msg: to_binary(&Cw20HookMsg::DepositFor { + msg: to_json_binary(&Cw20HookMsg::DepositFor { user: to.to_string(), }) .unwrap(), diff --git a/contracts/tokenomics/incentives/examples/serialization_cost.rs b/contracts/tokenomics/incentives/examples/serialization_cost.rs index b53fb9b7e..91d8608ff 100644 --- a/contracts/tokenomics/incentives/examples/serialization_cost.rs +++ b/contracts/tokenomics/incentives/examples/serialization_cost.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::{to_binary, Decimal}; +use cosmwasm_std::{to_json_binary, Decimal}; use astroport::asset::AssetInfo; use astroport::incentives::{RewardInfo, RewardType}; @@ -21,12 +21,12 @@ fn main() { let pool_info = PoolInfo::default(); // https://github.com/cosmos/cosmos-sdk/blob/47f46643affd7ec7978329c42bac47275ac7e1cc/store/types/gas.go#L199 - let reward_info_storage_bytes = to_binary(&reward_info).unwrap().len(); + let reward_info_storage_bytes = to_json_binary(&reward_info).unwrap().len(); println!("reward info storage bytes {reward_info_storage_bytes}"); println!("sdk gas cost per read {}", reward_info_storage_bytes * 3); println!("sdk gas cost per write {}", reward_info_storage_bytes * 30); - let pool_info_storage_bytes = to_binary(&pool_info).unwrap().len(); + let pool_info_storage_bytes = to_json_binary(&pool_info).unwrap().len(); println!("pool info storage bytes {pool_info_storage_bytes}"); println!("sdk gas cost per read {}", pool_info_storage_bytes * 3); println!("sdk gas cost per write {}", pool_info_storage_bytes * 30); @@ -42,7 +42,7 @@ fn main() { last_rewards_index: Default::default(), last_claim_time: 0, }; - let user_info_storage_bytes = to_binary(&user_info).unwrap().len(); + let user_info_storage_bytes = to_json_binary(&user_info).unwrap().len(); println!("user info storage bytes {user_info_storage_bytes}"); println!("sdk gas cost per read {}", user_info_storage_bytes * 3); println!("sdk gas cost per write {}", user_info_storage_bytes * 30); @@ -55,7 +55,7 @@ fn main() { }, Decimal::zero(), ); - let reward_entry_storage_bytes = to_binary(&reward_index_entry).unwrap().len(); + let reward_entry_storage_bytes = to_json_binary(&reward_index_entry).unwrap().len(); let user_storage_bytes = user_info_storage_bytes + 6 * reward_entry_storage_bytes; println!("user with 5 + 1 rewards storage bytes {user_storage_bytes}"); println!("sdk gas cost per read {}", user_storage_bytes * 3); diff --git a/contracts/tokenomics/incentives/src/execute.rs b/contracts/tokenomics/incentives/src/execute.rs index e4bf152b4..47fe6b2d3 100644 --- a/contracts/tokenomics/incentives/src/execute.rs +++ b/contracts/tokenomics/incentives/src/execute.rs @@ -3,7 +3,7 @@ use std::collections::HashSet; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, ensure, from_binary, Addr, DepsMut, Env, MessageInfo, Response, StdError, StdResult, + attr, ensure, from_json, Addr, DepsMut, Env, MessageInfo, Response, StdError, StdResult, Uint128, }; use cw_utils::one_coin; @@ -72,7 +72,7 @@ pub fn execute( } ExecuteMsg::Receive(cw20msg) => { let maybe_lp = Asset::cw20(info.sender, cw20msg.amount); - let recipient = match from_binary(&cw20msg.msg)? { + let recipient = match from_json(&cw20msg.msg)? { Cw20Msg::Deposit { recipient } => recipient, Cw20Msg::DepositFor(recipient) => Some(recipient), }; diff --git a/contracts/tokenomics/incentives/src/query.rs b/contracts/tokenomics/incentives/src/query.rs index 072abb37c..b7fdab8d3 100644 --- a/contracts/tokenomics/incentives/src/query.rs +++ b/contracts/tokenomics/incentives/src/query.rs @@ -1,6 +1,8 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{ensure, to_binary, Binary, Deps, Env, Order, StdError, StdResult, Uint128}; +use cosmwasm_std::{ + ensure, to_json_binary, Binary, Deps, Env, Order, StdError, StdResult, Uint128, +}; use cw_storage_plus::Bound; use itertools::Itertools; @@ -16,28 +18,28 @@ use crate::utils::{asset_info_key, from_key_to_asset_info}; #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> Result { match msg { - QueryMsg::Config {} => Ok(to_binary(&CONFIG.load(deps.storage)?)?), + QueryMsg::Config {} => Ok(to_json_binary(&CONFIG.load(deps.storage)?)?), QueryMsg::Deposit { lp_token, user } => { let lp_asset = determine_asset_info(&lp_token, deps.api)?; let user_addr = deps.api.addr_validate(&user)?; let amount = UserInfo::load_position(deps.storage, &user_addr, &lp_asset)?.amount; - Ok(to_binary(&amount)?) + Ok(to_json_binary(&amount)?) } - QueryMsg::PendingRewards { lp_token, user } => Ok(to_binary(&query_pending_rewards( + QueryMsg::PendingRewards { lp_token, user } => Ok(to_json_binary(&query_pending_rewards( deps, env, user, lp_token, )?)?), QueryMsg::RewardInfo { lp_token } => { let lp_asset = determine_asset_info(&lp_token, deps.api)?; let mut pool_info = PoolInfo::load(deps.storage, &lp_asset)?; pool_info.update_rewards(deps.storage, &env, &lp_asset)?; - Ok(to_binary(&pool_info.rewards)?) - } - QueryMsg::BlockedTokensList { start_after, limit } => { - Ok(to_binary(&query_blocked_tokens(deps, start_after, limit)?)?) + Ok(to_json_binary(&pool_info.rewards)?) } + QueryMsg::BlockedTokensList { start_after, limit } => Ok(to_json_binary( + &query_blocked_tokens(deps, start_after, limit)?, + )?), QueryMsg::PoolInfo { lp_token } => { let lp_asset = determine_asset_info(&lp_token, deps.api)?; - Ok(to_binary( + Ok(to_json_binary( &PoolInfo::load(deps.storage, &lp_asset)?.into_response(), )?) } @@ -51,7 +53,7 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> Result { let lp_asset = determine_asset_info(&lp_token, deps.api)?; @@ -74,14 +76,14 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> Result Ok(to_binary(&query_external_reward_schedules( + } => Ok(to_json_binary(&query_external_reward_schedules( deps, env, reward, diff --git a/contracts/tokenomics/incentives/tests/helper/helper.rs b/contracts/tokenomics/incentives/tests/helper/helper.rs index 86cd244bb..dba5be89c 100644 --- a/contracts/tokenomics/incentives/tests/helper/helper.rs +++ b/contracts/tokenomics/incentives/tests/helper/helper.rs @@ -6,7 +6,7 @@ use std::collections::HashMap; use anyhow::Result as AnyResult; use cosmwasm_std::testing::{mock_env, MockApi, MockStorage}; use cosmwasm_std::{ - to_binary, Addr, Api, BlockInfo, CanonicalAddr, Coin, Empty, Env, IbcMsg, IbcQuery, + to_json_binary, Addr, Api, BlockInfo, CanonicalAddr, Coin, Empty, Env, IbcMsg, IbcQuery, RecoverPubkeyError, StdError, StdResult, Storage, Timestamp, Uint128, VerificationError, }; use cw20::MinterResponse; @@ -396,7 +396,7 @@ impl Helper { &cw20::Cw20ExecuteMsg::Send { contract: self.generator.to_string(), amount: lp_asset.amount, - msg: to_binary(&ExecuteMsg::Deposit { recipient: None }).unwrap(), + msg: to_json_binary(&ExecuteMsg::Deposit { recipient: None }).unwrap(), }, &[], ), @@ -932,7 +932,7 @@ impl Helper { pair_type: PairType::Stable {}, asset_infos: asset_infos.clone(), init_params: Some( - to_binary(&StablePoolParams { + to_json_binary(&StablePoolParams { amp: 10, owner: None, }) diff --git a/contracts/tokenomics/maker/src/contract.rs b/contracts/tokenomics/maker/src/contract.rs index 630d99f5a..6fae20444 100644 --- a/contracts/tokenomics/maker/src/contract.rs +++ b/contracts/tokenomics/maker/src/contract.rs @@ -18,7 +18,7 @@ use astroport::maker::{ }; use astroport::pair::MAX_ALLOWED_SLIPPAGE; use cosmwasm_std::{ - attr, entry_point, to_binary, Addr, Attribute, Binary, Decimal, Deps, DepsMut, Env, + attr, entry_point, to_json_binary, Addr, Attribute, Binary, Decimal, Deps, DepsMut, Env, MessageInfo, Order, Response, StdError, StdResult, SubMsg, Uint128, Uint64, }; use cw2::{get_contract_version, set_contract_version}; @@ -830,9 +830,9 @@ fn update_bridges( #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Config {} => to_binary(&query_get_config(deps)?), - QueryMsg::Balances { assets } => to_binary(&query_get_balances(deps, env, assets)?), - QueryMsg::Bridges {} => to_binary(&query_bridges(deps)?), + QueryMsg::Config {} => to_json_binary(&query_get_config(deps)?), + QueryMsg::Balances { assets } => to_json_binary(&query_get_balances(deps, env, assets)?), + QueryMsg::Bridges {} => to_json_binary(&query_bridges(deps)?), } } diff --git a/contracts/tokenomics/maker/src/testing.rs b/contracts/tokenomics/maker/src/testing.rs index cd5a018fb..b69a75b08 100644 --- a/contracts/tokenomics/maker/src/testing.rs +++ b/contracts/tokenomics/maker/src/testing.rs @@ -1,5 +1,5 @@ use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; -use cosmwasm_std::{from_binary, Addr, Decimal, Uint128, Uint64}; +use cosmwasm_std::{from_json, Addr, Decimal, Uint128, Uint64}; use crate::contract::{execute, instantiate, query}; use crate::state::CONFIG; @@ -139,6 +139,6 @@ fn update_owner() { // Let's query the state let config: ConfigResponse = - from_binary(&query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap()).unwrap(); + from_json(&query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap()).unwrap(); assert_eq!(new_owner, config.owner); } diff --git a/contracts/tokenomics/maker/src/utils.rs b/contracts/tokenomics/maker/src/utils.rs index 74160f883..fc6549b9e 100644 --- a/contracts/tokenomics/maker/src/utils.rs +++ b/contracts/tokenomics/maker/src/utils.rs @@ -8,7 +8,7 @@ use astroport::pair::Cw20HookMsg; use astroport::querier::query_pair_info; use cosmwasm_std::{ - coins, to_binary, wasm_execute, Addr, Binary, CosmosMsg, Decimal, Deps, Empty, Env, + coins, to_json_binary, wasm_execute, Addr, Binary, CosmosMsg, Decimal, Deps, Empty, Env, QuerierWrapper, StdError, StdResult, SubMsg, Uint128, WasmMsg, }; use cw20::Cw20ExecuteMsg; @@ -65,7 +65,7 @@ pub fn build_swap_msg( Ok(SubMsg::new(WasmMsg::Execute { contract_addr: pool.contract_addr.to_string(), - msg: to_binary(&astroport::pair::ExecuteMsg::Swap { + msg: to_json_binary(&astroport::pair::ExecuteMsg::Swap { offer_asset: offer_asset.clone(), ask_asset_info: to.cloned(), belief_price: None, @@ -77,10 +77,10 @@ pub fn build_swap_msg( } else { Ok(SubMsg::new(WasmMsg::Execute { contract_addr: from.to_string(), - msg: to_binary(&cw20::Cw20ExecuteMsg::Send { + msg: to_json_binary(&cw20::Cw20ExecuteMsg::Send { contract: pool.contract_addr.to_string(), amount: amount_in, - msg: to_binary(&Cw20HookMsg::Swap { + msg: to_json_binary(&Cw20HookMsg::Swap { ask_asset_info: to.cloned(), belief_price: None, max_spread: Some(max_spread), @@ -106,7 +106,7 @@ pub fn build_distribute_msg( // Swap bridge assets SubMsg::new(WasmMsg::Execute { contract_addr: env.contract.address.to_string(), - msg: to_binary(&ExecuteMsg::SwapBridgeAssets { + msg: to_json_binary(&ExecuteMsg::SwapBridgeAssets { assets: bridge_assets, depth, })?, @@ -116,7 +116,7 @@ pub fn build_distribute_msg( // Update balances and distribute rewards SubMsg::new(WasmMsg::Execute { contract_addr: env.contract.address.to_string(), - msg: to_binary(&ExecuteMsg::DistributeAstro {})?, + msg: to_json_binary(&ExecuteMsg::DistributeAstro {})?, funds: vec![], }) }; @@ -210,7 +210,7 @@ pub fn build_send_msg( match &asset.info { AssetInfo::Token { contract_addr } => Ok(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: contract_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Send { + msg: to_json_binary(&Cw20ExecuteMsg::Send { contract: recipient, amount: asset.amount, msg: msg.unwrap_or_default(), diff --git a/contracts/tokenomics/maker/tests/integration.rs b/contracts/tokenomics/maker/tests/integration.rs index 7613c8e86..a58b9212f 100644 --- a/contracts/tokenomics/maker/tests/integration.rs +++ b/contracts/tokenomics/maker/tests/integration.rs @@ -11,7 +11,7 @@ use astroport::maker::{ use astroport::token::InstantiateMsg as TokenInstantiateMsg; use astroport_governance::utils::EPOCH_START; use cosmwasm_std::{ - attr, coin, to_binary, Addr, Coin, Decimal, QueryRequest, Uint128, Uint64, WasmQuery, + attr, coin, to_json_binary, Addr, Coin, Decimal, QueryRequest, Uint128, Uint64, WasmQuery, }; use cw20::{BalanceResponse, Cw20QueryMsg, MinterResponse}; use cw_multi_test::{next_block, App, ContractWrapper, Executor}; @@ -337,7 +337,7 @@ fn check_balance(router: &mut App, user: Addr, token: Addr, expected_amount: Uin let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: token.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); let balance = res.unwrap(); @@ -392,7 +392,7 @@ fn create_pair( .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: factory_instance.clone().to_string(), - msg: to_binary(&astroport::factory::QueryMsg::Pair { + msg: to_json_binary(&astroport::factory::QueryMsg::Pair { asset_infos: asset_infos.clone(), }) .unwrap(), @@ -667,7 +667,7 @@ fn test_maker_collect( .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: maker_instance.to_string(), - msg: to_binary(&QueryMsg::Balances { + msg: to_json_binary(&QueryMsg::Balances { assets: expected_balances.iter().map(|a| a.info.clone()).collect(), }) .unwrap(), @@ -1248,7 +1248,7 @@ fn update_bridges() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: maker_instance.to_string(), - msg: to_binary(&QueryMsg::Bridges {}).unwrap(), + msg: to_json_binary(&QueryMsg::Bridges {}).unwrap(), })) .unwrap(); @@ -1288,7 +1288,7 @@ fn update_bridges() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: maker_instance.to_string(), - msg: to_binary(&QueryMsg::Bridges {}).unwrap(), + msg: to_json_binary(&QueryMsg::Bridges {}).unwrap(), })) .unwrap(); @@ -1481,7 +1481,7 @@ fn collect_with_asset_limit() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: maker_instance.to_string(), - msg: to_binary(&QueryMsg::Balances { + msg: to_json_binary(&QueryMsg::Balances { assets: expected_balances.iter().map(|a| a.info.clone()).collect(), }) .unwrap(), @@ -1784,7 +1784,7 @@ fn collect_with_second_receiver() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: maker_instance.to_string(), - msg: to_binary(&QueryMsg::Balances { + msg: to_json_binary(&QueryMsg::Balances { assets: expected_balances.iter().map(|a| a.info.clone()).collect(), }) .unwrap(), @@ -2495,7 +2495,7 @@ fn collect_3pools() { .wrap() .query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: maker_instance.to_string(), - msg: to_binary(&QueryMsg::Balances { + msg: to_json_binary(&QueryMsg::Balances { assets: expected_balances.iter().map(|a| a.info.clone()).collect(), }) .unwrap(), diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index b639630b1..12c45677a 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -1,5 +1,5 @@ use cosmwasm_std::{ - attr, entry_point, from_binary, to_binary, wasm_execute, Addr, Binary, CosmosMsg, Deps, + attr, entry_point, from_json, to_json_binary, wasm_execute, Addr, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Reply, ReplyOn, Response, StdError, StdResult, SubMsg, SubMsgResponse, SubMsgResult, Uint128, WasmMsg, }; @@ -55,7 +55,7 @@ pub fn instantiate( msg: WasmMsg::Instantiate { admin: Some(msg.owner), code_id: msg.token_code_id, - msg: to_binary(&TokenInstantiateMsg { + msg: to_json_binary(&TokenInstantiateMsg { name: TOKEN_NAME.to_string(), symbol: TOKEN_SYMBOL.to_string(), decimals: 6, @@ -146,7 +146,7 @@ fn receive_cw20( )?; let total_shares = query_supply(&deps.querier, &config.xastro_token_addr)?; - match from_binary(&cw20_msg.msg)? { + match from_json(&cw20_msg.msg)? { Cw20HookMsg::Enter {} => { let mut messages = vec![]; if info.sender != config.astro_token_addr { @@ -217,12 +217,12 @@ fn receive_cw20( let res = Response::new() .add_message(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: config.xastro_token_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Burn { amount })?, + msg: to_json_binary(&Cw20ExecuteMsg::Burn { amount })?, funds: vec![], })) .add_message(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: config.astro_token_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: recipient.clone(), amount: what, })?, @@ -251,14 +251,14 @@ fn receive_cw20( pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { let config = CONFIG.load(deps.storage)?; match msg { - QueryMsg::Config {} => Ok(to_binary(&ConfigResponse { + QueryMsg::Config {} => Ok(to_json_binary(&ConfigResponse { deposit_token_addr: config.astro_token_addr, share_token_addr: config.xastro_token_addr, })?), QueryMsg::TotalShares {} => { - to_binary(&query_supply(&deps.querier, &config.xastro_token_addr)?) + to_json_binary(&query_supply(&deps.querier, &config.xastro_token_addr)?) } - QueryMsg::TotalDeposit {} => to_binary(&query_token_balance( + QueryMsg::TotalDeposit {} => to_json_binary(&query_token_balance( &deps.querier, &config.astro_token_addr, env.contract.address, diff --git a/contracts/tokenomics/staking/tests/integration.rs b/contracts/tokenomics/staking/tests/integration.rs index 198b2e1ed..34f4c5f5d 100644 --- a/contracts/tokenomics/staking/tests/integration.rs +++ b/contracts/tokenomics/staking/tests/integration.rs @@ -2,7 +2,7 @@ use astroport::staking::{ConfigResponse, Cw20HookMsg, InstantiateMsg as xInstatiateMsg, QueryMsg}; use astroport::token::InstantiateMsg; -use cosmwasm_std::{attr, to_binary, Addr, QueryRequest, Uint128, WasmQuery}; +use cosmwasm_std::{attr, to_json_binary, Addr, QueryRequest, Uint128, WasmQuery}; use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; use cw_multi_test::{App, ContractWrapper, Executor}; @@ -40,7 +40,7 @@ fn check_deflate_liquidity() { let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(1000u128), }; @@ -59,7 +59,7 @@ fn check_deflate_liquidity() { let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(1001u128), }; @@ -88,7 +88,7 @@ fn check_deflate_liquidity() { let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(2u128), }; @@ -105,7 +105,7 @@ fn check_deflate_liquidity() { let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(10u128), }; @@ -196,7 +196,7 @@ fn instantiate_contracts(router: &mut App, owner: Addr) -> (Addr, Addr, Addr) { .wrap() .query::(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: staking_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })) .unwrap(); @@ -256,7 +256,7 @@ fn cw20receive_enter_and_leave() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -268,7 +268,7 @@ fn cw20receive_enter_and_leave() { // We can unstake ASTRO only by calling the xASTRO token. let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), amount: Uint128::from(10u128), }; @@ -285,7 +285,7 @@ fn cw20receive_enter_and_leave() { // Tru to stake Alice's 1100 ASTRO for 1100 xASTRO let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(1100u128), }; @@ -305,7 +305,7 @@ fn cw20receive_enter_and_leave() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -321,7 +321,7 @@ fn cw20receive_enter_and_leave() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -337,7 +337,7 @@ fn cw20receive_enter_and_leave() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -349,7 +349,7 @@ fn cw20receive_enter_and_leave() { // We can stake tokens only by calling the ASTRO token. let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(10u128), }; @@ -366,7 +366,7 @@ fn cw20receive_enter_and_leave() { // Try to unstake Alice's 10 xASTRO for 10 ASTRO let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), amount: Uint128::from(10u128), }; @@ -386,7 +386,7 @@ fn cw20receive_enter_and_leave() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -402,7 +402,7 @@ fn cw20receive_enter_and_leave() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -418,7 +418,7 @@ fn cw20receive_enter_and_leave() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -434,7 +434,7 @@ fn cw20receive_enter_and_leave() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -476,7 +476,7 @@ fn should_not_allow_withdraw_more_than_what_you_have() { // enter Alice's 2000 ASTRO for 1000 xASTRO let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(2000u128), }; @@ -496,7 +496,7 @@ fn should_not_allow_withdraw_more_than_what_you_have() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -508,7 +508,7 @@ fn should_not_allow_withdraw_more_than_what_you_have() { // Try to burn Alice's 2000 xASTRO and unstake let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), amount: Uint128::from(2000u128), }; @@ -566,7 +566,7 @@ fn should_work_with_more_than_one_participant() { // Stake Alice's 2000 ASTRO for 1000 xASTRO (subtract min liquid amount) let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(2000u128), }; @@ -582,7 +582,7 @@ fn should_work_with_more_than_one_participant() { // Stake Bob's 10 ASTRO for 10 xASTRO let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(10u128), }; @@ -597,7 +597,7 @@ fn should_work_with_more_than_one_participant() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -613,7 +613,7 @@ fn should_work_with_more_than_one_participant() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -629,7 +629,7 @@ fn should_work_with_more_than_one_participant() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -665,7 +665,7 @@ fn should_work_with_more_than_one_participant() { // Stake Alice's 10 ASTRO for 9 xASTRO: 10*2010/2030 = 9 let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(10u128), }; @@ -685,7 +685,7 @@ fn should_work_with_more_than_one_participant() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -701,7 +701,7 @@ fn should_work_with_more_than_one_participant() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -713,7 +713,7 @@ fn should_work_with_more_than_one_participant() { // Burn Bob's 5 xASTRO and unstake: gets 5*2040/2019 = 5 ASTRO let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), amount: Uint128::from(5u128), }; @@ -733,7 +733,7 @@ fn should_work_with_more_than_one_participant() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -749,7 +749,7 @@ fn should_work_with_more_than_one_participant() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -765,7 +765,7 @@ fn should_work_with_more_than_one_participant() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -781,7 +781,7 @@ fn should_work_with_more_than_one_participant() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -797,7 +797,7 @@ fn should_work_with_more_than_one_participant() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), @@ -828,7 +828,7 @@ fn should_not_allow_directly_burn_from_xastro() { // enter Alice's 2000 ASTRO for 1000 xASTRO let msg = Cw20ExecuteMsg::Send { contract: staking_instance.to_string(), - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), amount: Uint128::from(2000u128), }; @@ -848,7 +848,7 @@ fn should_not_allow_directly_burn_from_xastro() { let res: Result = router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr: x_astro_token_instance.to_string(), - msg: to_binary(&msg).unwrap(), + msg: to_json_binary(&msg).unwrap(), })); assert_eq!( res.unwrap(), diff --git a/contracts/tokenomics/vesting/src/contract.rs b/contracts/tokenomics/vesting/src/contract.rs index 81ae43467..0a2f36c2c 100644 --- a/contracts/tokenomics/vesting/src/contract.rs +++ b/contracts/tokenomics/vesting/src/contract.rs @@ -1,5 +1,5 @@ use cosmwasm_std::{ - attr, entry_point, from_binary, to_binary, Addr, Binary, Deps, DepsMut, Env, MessageInfo, + attr, entry_point, from_json, to_json_binary, Addr, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdError, StdResult, SubMsg, Uint128, }; @@ -142,7 +142,7 @@ fn receive_cw20( return Err(ContractError::Unauthorized {}); } - match from_binary(&cw20_msg.msg)? { + match from_json(&cw20_msg.msg)? { Cw20HookMsg::RegisterVestingAccounts { vesting_accounts } => { register_vesting_accounts(deps, env, vesting_accounts, cw20_msg.amount) } @@ -433,24 +433,24 @@ fn withdraw_from_active_schedule( #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Config {} => Ok(to_binary(&query_config(deps)?)?), + QueryMsg::Config {} => Ok(to_json_binary(&query_config(deps)?)?), QueryMsg::VestingAccount { address } => { - Ok(to_binary(&query_vesting_account(deps, address)?)?) + Ok(to_json_binary(&query_vesting_account(deps, address)?)?) } QueryMsg::VestingAccounts { start_after, limit, order_by, - } => Ok(to_binary(&query_vesting_accounts( + } => Ok(to_json_binary(&query_vesting_accounts( deps, start_after, limit, order_by, )?)?), - QueryMsg::AvailableAmount { address } => Ok(to_binary(&query_vesting_available_amount( - deps, env, address, - )?)?), - QueryMsg::Timestamp {} => Ok(to_binary(&query_timestamp(env)?)?), + QueryMsg::AvailableAmount { address } => Ok(to_json_binary( + &query_vesting_available_amount(deps, env, address)?, + )?), + QueryMsg::Timestamp {} => Ok(to_json_binary(&query_timestamp(env)?)?), } } diff --git a/contracts/tokenomics/vesting/src/testing.rs b/contracts/tokenomics/vesting/src/testing.rs index 520bb3c97..b8e570f89 100644 --- a/contracts/tokenomics/vesting/src/testing.rs +++ b/contracts/tokenomics/vesting/src/testing.rs @@ -3,7 +3,7 @@ use astroport::vesting::{ConfigResponse, ExecuteMsg, InstantiateMsg, QueryMsg}; use astroport::asset::{token_asset_info, AssetInfo}; use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; -use cosmwasm_std::{from_binary, Addr}; +use cosmwasm_std::{from_json, Addr}; #[test] fn proper_initialization() { @@ -19,7 +19,7 @@ fn proper_initialization() { let _res = instantiate(deps.as_mut(), env.clone(), info, msg).unwrap(); assert_eq!( - from_binary::(&query(deps.as_ref(), env, QueryMsg::Config {}).unwrap()) + from_json::(&query(deps.as_ref(), env, QueryMsg::Config {}).unwrap()) .unwrap(), ConfigResponse { owner: Addr::unchecked("owner"), @@ -129,6 +129,6 @@ fn update_owner() { // Let's query the state let config: ConfigResponse = - from_binary(&query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap()).unwrap(); + from_json(&query(deps.as_ref(), env.clone(), QueryMsg::Config {}).unwrap()).unwrap(); assert_eq!(new_owner, config.owner); } diff --git a/contracts/tokenomics/vesting/tests/integration.rs b/contracts/tokenomics/vesting/tests/integration.rs index 706396d58..157e2a1ac 100644 --- a/contracts/tokenomics/vesting/tests/integration.rs +++ b/contracts/tokenomics/vesting/tests/integration.rs @@ -12,7 +12,7 @@ use astroport::{ }; use astroport_vesting::error::ContractError; use astroport_vesting::state::Config; -use cosmwasm_std::{coin, coins, to_binary, Addr, StdResult, Timestamp, Uint128}; +use cosmwasm_std::{coin, coins, to_json_binary, Addr, StdResult, Timestamp, Uint128}; use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; use cw_multi_test::{App, ContractWrapper, Executor}; use cw_utils::PaymentError; @@ -41,7 +41,7 @@ fn claim() { let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user1.to_string(), schedules: vec![ @@ -92,7 +92,7 @@ fn claim() { let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user1.to_string(), schedules: vec![ @@ -237,7 +237,7 @@ fn claim_native() { let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user1.to_string(), schedules: vec![VestingSchedule { @@ -416,7 +416,7 @@ fn register_vesting_accounts() { let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user1.to_string(), schedules: vec![VestingSchedule { @@ -442,7 +442,7 @@ fn register_vesting_accounts() { let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user1.to_string(), schedules: vec![VestingSchedule { @@ -540,7 +540,7 @@ fn register_vesting_accounts() { // Let's check user1's final vesting amount after add schedule for a new one let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user2.to_string(), schedules: vec![VestingSchedule { @@ -599,7 +599,7 @@ fn register_vesting_accounts() { // Add one more vesting schedule; final amount to vest must increase let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user1.to_string(), schedules: vec![VestingSchedule { @@ -771,7 +771,7 @@ fn register_vesting_accounts_native() { let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user1.to_string(), schedules: vec![VestingSchedule { @@ -1015,7 +1015,7 @@ fn withdraw_from_active_schedule() { let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user1.to_string(), schedules: vec![VestingSchedule { @@ -1111,7 +1111,7 @@ fn withdraw_overlapping_schedules() { let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user1.to_string(), schedules: vec![ @@ -1208,7 +1208,7 @@ fn withdraw_overlapping_schedules2() { let msg = Cw20ExecuteMsg::Send { contract: vesting_instance.to_string(), - msg: to_binary(&Cw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&Cw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: user1.to_string(), schedules: vec![ diff --git a/contracts/tokenomics/xastro_outpost_token/src/contract.rs b/contracts/tokenomics/xastro_outpost_token/src/contract.rs index 6ef370baf..05989027d 100644 --- a/contracts/tokenomics/xastro_outpost_token/src/contract.rs +++ b/contracts/tokenomics/xastro_outpost_token/src/contract.rs @@ -1,5 +1,5 @@ use cosmwasm_std::{ - attr, entry_point, to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Order, Response, + attr, entry_point, to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Order, Response, StdError, StdResult, Uint128, Uint64, }; use cw20::{ @@ -619,28 +619,28 @@ pub fn execute_send_from( #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Balance { address } => to_binary(&query_balance(deps, address)?), + QueryMsg::Balance { address } => to_json_binary(&query_balance(deps, address)?), QueryMsg::BalanceAt { address, timestamp } => { - to_binary(&query_balance_at(deps, address, timestamp)?) + to_json_binary(&query_balance_at(deps, address, timestamp)?) } QueryMsg::TotalSupplyAt { timestamp } => { - to_binary(&get_total_supply_at(deps.storage, timestamp)?) + to_json_binary(&get_total_supply_at(deps.storage, timestamp)?) } - QueryMsg::TokenInfo {} => to_binary(&query_token_info(deps)?), - QueryMsg::Minter {} => to_binary(&query_minter(deps)?), + QueryMsg::TokenInfo {} => to_json_binary(&query_token_info(deps)?), + QueryMsg::Minter {} => to_json_binary(&query_minter(deps)?), QueryMsg::Allowance { owner, spender } => { - to_binary(&query_allowance(deps, owner, spender)?) + to_json_binary(&query_allowance(deps, owner, spender)?) } QueryMsg::AllAllowances { owner, start_after, limit, - } => to_binary(&query_owner_allowances(deps, owner, start_after, limit)?), + } => to_json_binary(&query_owner_allowances(deps, owner, start_after, limit)?), QueryMsg::AllAccounts { start_after, limit } => { - to_binary(&query_all_accounts(deps, start_after, limit)?) + to_json_binary(&query_all_accounts(deps, start_after, limit)?) } - QueryMsg::MarketingInfo {} => to_binary(&query_marketing_info(deps)?), - QueryMsg::DownloadLogo {} => to_binary(&query_download_logo(deps)?), + QueryMsg::MarketingInfo {} => to_json_binary(&query_marketing_info(deps)?), + QueryMsg::DownloadLogo {} => to_json_binary(&query_download_logo(deps)?), } } diff --git a/contracts/tokenomics/xastro_token/src/contract.rs b/contracts/tokenomics/xastro_token/src/contract.rs index 732d68d79..c49495e45 100644 --- a/contracts/tokenomics/xastro_token/src/contract.rs +++ b/contracts/tokenomics/xastro_token/src/contract.rs @@ -1,5 +1,5 @@ use cosmwasm_std::{ - attr, entry_point, to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Order, Response, + attr, entry_point, to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Order, Response, StdError, StdResult, Uint128, }; use cw20::{ @@ -612,26 +612,28 @@ pub fn execute_send_from( #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Balance { address } => to_binary(&query_balance(deps, address)?), + QueryMsg::Balance { address } => to_json_binary(&query_balance(deps, address)?), QueryMsg::BalanceAt { address, block } => { - to_binary(&query_balance_at(deps, address, block)?) + to_json_binary(&query_balance_at(deps, address, block)?) } - QueryMsg::TotalSupplyAt { block } => to_binary(&get_total_supply_at(deps.storage, block)?), - QueryMsg::TokenInfo {} => to_binary(&query_token_info(deps)?), - QueryMsg::Minter {} => to_binary(&query_minter(deps)?), + QueryMsg::TotalSupplyAt { block } => { + to_json_binary(&get_total_supply_at(deps.storage, block)?) + } + QueryMsg::TokenInfo {} => to_json_binary(&query_token_info(deps)?), + QueryMsg::Minter {} => to_json_binary(&query_minter(deps)?), QueryMsg::Allowance { owner, spender } => { - to_binary(&query_allowance(deps, owner, spender)?) + to_json_binary(&query_allowance(deps, owner, spender)?) } QueryMsg::AllAllowances { owner, start_after, limit, - } => to_binary(&query_owner_allowances(deps, owner, start_after, limit)?), + } => to_json_binary(&query_owner_allowances(deps, owner, start_after, limit)?), QueryMsg::AllAccounts { start_after, limit } => { - to_binary(&query_all_accounts(deps, start_after, limit)?) + to_json_binary(&query_all_accounts(deps, start_after, limit)?) } - QueryMsg::MarketingInfo {} => to_binary(&query_marketing_info(deps)?), - QueryMsg::DownloadLogo {} => to_binary(&query_download_logo(deps)?), + QueryMsg::MarketingInfo {} => to_json_binary(&query_marketing_info(deps)?), + QueryMsg::DownloadLogo {} => to_json_binary(&query_download_logo(deps)?), } } diff --git a/packages/astroport/src/asset.rs b/packages/astroport/src/asset.rs index 982514566..7844bb230 100644 --- a/packages/astroport/src/asset.rs +++ b/packages/astroport/src/asset.rs @@ -2,7 +2,7 @@ use std::fmt; use cosmwasm_schema::cw_serde; use cosmwasm_std::{ - coin, coins, ensure, to_binary, wasm_execute, Addr, Api, BankMsg, Coin, + coin, coins, ensure, to_json_binary, wasm_execute, Addr, Api, BankMsg, Coin, ConversionOverflowError, CosmosMsg, CustomMsg, CustomQuery, Decimal256, Fraction, MessageInfo, QuerierWrapper, ReplyOn, StdError, StdResult, SubMsg, Uint128, Uint256, WasmMsg, }; @@ -170,7 +170,7 @@ impl Asset { match &self.info { AssetInfo::Token { contract_addr } => Ok(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: contract_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient, amount: self.amount, })?, diff --git a/packages/astroport/src/generator.rs b/packages/astroport/src/generator.rs index 20ceb752f..1e99e30bf 100644 --- a/packages/astroport/src/generator.rs +++ b/packages/astroport/src/generator.rs @@ -2,7 +2,9 @@ use crate::asset::{Asset, AssetInfo}; use crate::factory::PairType; use crate::restricted_vector::RestrictedVector; use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{to_binary, Addr, Decimal, Env, StdResult, SubMsg, Uint128, Uint64, WasmMsg}; +use cosmwasm_std::{ + to_json_binary, Addr, Decimal, Env, StdResult, SubMsg, Uint128, Uint64, WasmMsg, +}; use cw20::Cw20ReceiveMsg; /// This structure describes the parameters used for creating a contract. @@ -192,7 +194,7 @@ impl ExecuteOnReply { pub fn into_submsg(self, env: &Env) -> StdResult { let msg = SubMsg::new(WasmMsg::Execute { contract_addr: env.contract.address.to_string(), - msg: to_binary(&ExecuteMsg::Callback { action: self })?, + msg: to_json_binary(&ExecuteMsg::Callback { action: self })?, funds: vec![], }); diff --git a/packages/astroport/src/mock_querier.rs b/packages/astroport/src/mock_querier.rs index dc09bee14..83ba6c7e6 100644 --- a/packages/astroport/src/mock_querier.rs +++ b/packages/astroport/src/mock_querier.rs @@ -1,14 +1,14 @@ +use std::collections::HashMap; + use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage, MOCK_CONTRACT_ADDR}; use cosmwasm_std::{ - from_binary, from_slice, to_binary, Coin, Empty, OwnedDeps, Querier, QuerierResult, - QueryRequest, SystemError, SystemResult, Uint128, WasmQuery, + from_json, to_json_binary, Coin, Empty, OwnedDeps, Querier, QuerierResult, QueryRequest, + SystemError, SystemResult, Uint128, WasmQuery, }; - -use std::collections::HashMap; +use cw20::{BalanceResponse, Cw20QueryMsg, TokenInfoResponse}; use crate::asset::PairInfo; use crate::factory::QueryMsg as FactoryQueryMsg; -use cw20::{BalanceResponse, Cw20QueryMsg, TokenInfoResponse}; /// mock_dependencies is a drop-in replacement for cosmwasm_std::testing::mock_dependencies /// This uses the Astroport CustomQuerier. @@ -89,7 +89,7 @@ pub(crate) fn pairs_to_map(pairs: &[(&String, &PairInfo)]) -> HashMap QuerierResult { // MockQuerier doesn't support Custom, so we ignore it completely here - let request: QueryRequest = match from_slice(bin_request) { + let request: QueryRequest = match from_json(bin_request) { Ok(v) => v, Err(e) => { return SystemResult::Err(SystemError::InvalidRequest { @@ -119,7 +119,7 @@ impl CW20QueryHandler { pub fn execute(&self, request: &QueryRequest) -> QuerierResult { match &request { QueryRequest::Wasm(WasmQuery::Smart { contract_addr, msg }) => { - match from_binary(msg).unwrap() { + match from_json(msg).unwrap() { Cw20QueryMsg::TokenInfo {} => { let balances: &HashMap = match self.token_querier.balances.get(contract_addr) { @@ -136,7 +136,7 @@ impl CW20QueryHandler { } SystemResult::Ok( - to_binary(&TokenInfoResponse { + to_json_binary(&TokenInfoResponse { name: "mAPPL".to_string(), symbol: "mAPPL".to_string(), decimals: 6, @@ -161,7 +161,9 @@ impl CW20QueryHandler { } }; - SystemResult::Ok(to_binary(&BalanceResponse { balance: *balance }).into()) + SystemResult::Ok( + to_json_binary(&BalanceResponse { balance: *balance }).into(), + ) } _ => panic!("DO NOT ENTER HERE"), } @@ -182,11 +184,11 @@ impl DefaultQueryHandler { QueryRequest::Wasm(WasmQuery::Smart { contract_addr: _, msg, - }) => match from_binary(msg).unwrap() { + }) => match from_json(msg).unwrap() { FactoryQueryMsg::Pair { asset_infos } => { let key = asset_infos[0].to_string() + asset_infos[1].to_string().as_str(); match self.astroport_factory_querier.pairs.get(&key) { - Some(v) => SystemResult::Ok(to_binary(&v).into()), + Some(v) => SystemResult::Ok(to_json_binary(&v).into()), None => SystemResult::Err(SystemError::InvalidRequest { error: "No pair info exists".to_string(), request: msg.as_slice().into(), diff --git a/packages/astroport/src/observation.rs b/packages/astroport/src/observation.rs index 18c64b313..3498551fc 100644 --- a/packages/astroport/src/observation.rs +++ b/packages/astroport/src/observation.rs @@ -236,7 +236,7 @@ pub fn safe_sma_buffer_not_full( #[cfg(test)] mod test { - use cosmwasm_std::to_binary; + use cosmwasm_std::to_json_binary; use crate::observation::Observation; @@ -250,7 +250,7 @@ mod test { price_sma: Default::default(), }; - let storage_bytes = to_binary(&obs).unwrap().len(); + let storage_bytes = to_json_binary(&obs).unwrap().len(); assert_eq!(storage_bytes, 36); // in storage // https://github.com/cosmos/cosmos-sdk/blob/47f46643affd7ec7978329c42bac47275ac7e1cc/store/types/gas.go#L199 diff --git a/packages/astroport/src/pair.rs b/packages/astroport/src/pair.rs index 53f861c38..a2cb064e9 100644 --- a/packages/astroport/src/pair.rs +++ b/packages/astroport/src/pair.rs @@ -1,11 +1,10 @@ -use crate::observation::OracleObservation; use cosmwasm_schema::{cw_serde, QueryResponses}; - -use crate::asset::{Asset, AssetInfo, PairInfo}; - use cosmwasm_std::{Addr, Binary, Decimal, Decimal256, Uint128, Uint64}; use cw20::Cw20ReceiveMsg; +use crate::asset::{Asset, AssetInfo, PairInfo}; +use crate::observation::OracleObservation; + /// The default swap slippage pub const DEFAULT_SLIPPAGE: &str = "0.005"; /// The maximum allowed swap slippage @@ -275,9 +274,11 @@ pub enum StablePoolUpdateParams { #[cfg(test)] mod tests { - use super::*; + use cosmwasm_std::{from_json, to_json_binary}; + use crate::asset::native_asset_info; - use cosmwasm_std::{from_binary, from_slice, to_binary}; + + use super::*; #[cw_serde] pub struct LegacyInstantiateMsg { @@ -307,17 +308,17 @@ mod tests { init_params: None, }; - let ser_msg = to_binary(&inst_msg).unwrap(); + let ser_msg = to_json_binary(&inst_msg).unwrap(); // This .unwrap() is enough to make sure that [AssetInfo; 2] and Vec are compatible. - let _: InstantiateMsg = from_binary(&ser_msg).unwrap(); + let _: InstantiateMsg = from_json(&ser_msg).unwrap(); } #[test] fn test_config_response_compatability() { - let ser_msg = to_binary(&LegacyConfigResponse { + let ser_msg = to_json_binary(&LegacyConfigResponse { block_time_last: 12, params: Some( - to_binary(&StablePoolConfig { + to_json_binary(&StablePoolConfig { amp: Decimal::one(), fee_share: None, }) @@ -328,12 +329,12 @@ mod tests { }) .unwrap(); - let _: ConfigResponse = from_binary(&ser_msg).unwrap(); + let _: ConfigResponse = from_json(&ser_msg).unwrap(); } #[test] fn check_empty_vec_deserialization() { - let variant: Cw20HookMsg = from_slice(br#"{"withdraw_liquidity": {} }"#).unwrap(); + let variant: Cw20HookMsg = from_json(br#"{"withdraw_liquidity": {} }"#).unwrap(); assert_eq!(variant, Cw20HookMsg::WithdrawLiquidity { assets: vec![] }); } } diff --git a/packages/astroport/src/querier.rs b/packages/astroport/src/querier.rs index 1fcede815..819980257 100644 --- a/packages/astroport/src/querier.rs +++ b/packages/astroport/src/querier.rs @@ -5,7 +5,7 @@ use crate::factory::{ use crate::pair::{QueryMsg as PairQueryMsg, ReverseSimulationResponse, SimulationResponse}; use cosmwasm_std::{ - from_slice, Addr, AllBalanceResponse, BankQuery, Coin, CustomQuery, Decimal, QuerierWrapper, + from_json, Addr, AllBalanceResponse, BankQuery, Coin, CustomQuery, Decimal, QuerierWrapper, QueryRequest, StdError, StdResult, Uint128, }; @@ -144,7 +144,7 @@ where C: CustomQuery, { if let Some(res) = querier.query_wasm_raw(factory_contract, b"config".as_slice())? { - let res = from_slice(&res)?; + let res = from_json(&res)?; Ok(res) } else { Err(StdError::generic_err("The factory config not found!")) diff --git a/packages/astroport/src/shared_multisig.rs b/packages/astroport/src/shared_multisig.rs index 1a78885a4..555b59842 100644 --- a/packages/astroport/src/shared_multisig.rs +++ b/packages/astroport/src/shared_multisig.rs @@ -1,6 +1,6 @@ use crate::asset::Asset; use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{from_slice, Addr, CosmosMsg, Decimal, Empty, StdResult, Uint128}; +use cosmwasm_std::{from_json, Addr, CosmosMsg, Decimal, Empty, StdResult, Uint128}; use cw3::Vote; use cw_storage_plus::{Key, KeyDeserialize, Prefixer, PrimaryKey}; use cw_utils::{Duration, Expiration, Threshold, ThresholdResponse}; @@ -132,7 +132,7 @@ impl KeyDeserialize for &MultisigRole { #[inline(always)] fn from_vec(value: Vec) -> StdResult { - from_slice(&value) + from_json(&value) } } diff --git a/packages/astroport/src/testing.rs b/packages/astroport/src/testing.rs index 61239d157..fae2577ec 100644 --- a/packages/astroport/src/testing.rs +++ b/packages/astroport/src/testing.rs @@ -7,7 +7,9 @@ use crate::querier::{ use crate::factory::PairType; use crate::DecimalCheckedOps; use cosmwasm_std::testing::MOCK_CONTRACT_ADDR; -use cosmwasm_std::{to_binary, Addr, BankMsg, Coin, CosmosMsg, Decimal, Empty, Uint128, WasmMsg}; +use cosmwasm_std::{ + to_json_binary, Addr, BankMsg, Coin, CosmosMsg, Decimal, Empty, Uint128, WasmMsg, +}; use cw20::Cw20ExecuteMsg; #[test] @@ -192,7 +194,7 @@ fn test_asset() { token_asset.into_msg(Addr::unchecked("addr0000")).unwrap(), CosmosMsg::::Wasm(WasmMsg::Execute { contract_addr: String::from("asset0000"), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: String::from("addr0000"), amount: Uint128::new(123123u128), }) diff --git a/packages/astroport_mocks/src/factory.rs b/packages/astroport_mocks/src/factory.rs index 0fd8a8583..cdc3e6fed 100644 --- a/packages/astroport_mocks/src/factory.rs +++ b/packages/astroport_mocks/src/factory.rs @@ -7,7 +7,7 @@ use astroport::{ pair::StablePoolParams, pair_concentrated::ConcentratedPoolParams, }; -use cosmwasm_std::{to_binary, Addr, Api, CustomQuery, Decimal, Storage}; +use cosmwasm_std::{to_json_binary, Addr, Api, CustomQuery, Decimal, Storage}; use cw_multi_test::{ AppResponse, Bank, ContractWrapper, Distribution, Executor, Gov, Ibc, Module, Staking, }; @@ -235,7 +235,9 @@ where &ExecuteMsg::CreatePair { pair_type: PairType::Stable {}, asset_infos: asset_infos.to_vec(), - init_params: Some(to_binary(init_params.unwrap_or(&default_params)).unwrap()), + init_params: Some( + to_json_binary(init_params.unwrap_or(&default_params)).unwrap(), + ), }, &[], ) @@ -303,7 +305,9 @@ where &ExecuteMsg::CreatePair { pair_type: PairType::Custom("concentrated".to_owned()), asset_infos: asset_infos.to_vec(), - init_params: Some(to_binary(init_params.unwrap_or(&default_params)).unwrap()), + init_params: Some( + to_json_binary(init_params.unwrap_or(&default_params)).unwrap(), + ), }, &[], ) diff --git a/packages/astroport_mocks/src/generator.rs b/packages/astroport_mocks/src/generator.rs index 54c6ba7b2..9fbc01697 100644 --- a/packages/astroport_mocks/src/generator.rs +++ b/packages/astroport_mocks/src/generator.rs @@ -9,7 +9,7 @@ use astroport::{ Cw20HookMsg as VestingCw20HookMsg, VestingAccount, VestingSchedule, VestingSchedulePoint, }, }; -use cosmwasm_std::{to_binary, Addr, Api, CustomQuery, Storage, Uint128}; +use cosmwasm_std::{to_json_binary, Addr, Api, CustomQuery, Storage, Uint128}; use cw_multi_test::{Bank, ContractWrapper, Distribution, Executor, Gov, Ibc, Module, Staking}; use schemars::JsonSchema; use serde::de::DeserializeOwned; @@ -131,7 +131,7 @@ where &Cw20ExecuteMsg::Send { contract: vesting.address.to_string(), amount: Uint128::new(1_000_000_000_000), - msg: to_binary(&VestingCw20HookMsg::RegisterVestingAccounts { + msg: to_json_binary(&VestingCw20HookMsg::RegisterVestingAccounts { vesting_accounts: vec![VestingAccount { address: address.to_string(), schedules: vec![VestingSchedule { diff --git a/packages/astroport_mocks/src/staking.rs b/packages/astroport_mocks/src/staking.rs index d06f7d8da..b0f03937c 100644 --- a/packages/astroport_mocks/src/staking.rs +++ b/packages/astroport_mocks/src/staking.rs @@ -4,7 +4,7 @@ use astroport::{ staking::{ConfigResponse, Cw20HookMsg, InstantiateMsg, QueryMsg}, token::ExecuteMsg, }; -use cosmwasm_std::{to_binary, Addr, Api, CustomQuery, Storage, Uint128}; +use cosmwasm_std::{to_json_binary, Addr, Api, CustomQuery, Storage, Uint128}; use cw_multi_test::{Bank, ContractWrapper, Distribution, Executor, Gov, Ibc, Module, Staking}; use schemars::JsonSchema; use serde::de::DeserializeOwned; @@ -148,7 +148,7 @@ where astro_token.address, &ExecuteMsg::Send { amount, - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), contract: self.address.to_string(), }, &[], @@ -179,7 +179,7 @@ where xastro_token.address, &ExecuteMsg::Send { amount, - msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), + msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), contract: self.address.to_string(), }, &[], diff --git a/packages/astroport_pcl_common/src/utils.rs b/packages/astroport_pcl_common/src/utils.rs index 73df84c7d..3f3a42c8c 100644 --- a/packages/astroport_pcl_common/src/utils.rs +++ b/packages/astroport_pcl_common/src/utils.rs @@ -1,6 +1,6 @@ use cosmwasm_std::{ - to_binary, wasm_execute, Addr, Api, CosmosMsg, CustomMsg, CustomQuery, Decimal, Decimal256, - Env, Fraction, QuerierWrapper, StdError, StdResult, Uint128, + to_json_binary, wasm_execute, Addr, Api, CosmosMsg, CustomMsg, CustomQuery, Decimal, + Decimal256, Env, Fraction, QuerierWrapper, StdError, StdResult, Uint128, }; use cw20::Cw20ExecuteMsg; use itertools::Itertools; @@ -101,7 +101,7 @@ where &Cw20ExecuteMsg::Send { contract: generator.to_string(), amount, - msg: to_binary(&astroport::generator::Cw20HookMsg::DepositFor( + msg: to_json_binary(&astroport::generator::Cw20HookMsg::DepositFor( recipient.to_string(), ))?, }, diff --git a/packages/pair_bonded/src/base.rs b/packages/pair_bonded/src/base.rs index fef98a61d..2eb88c8a1 100644 --- a/packages/pair_bonded/src/base.rs +++ b/packages/pair_bonded/src/base.rs @@ -9,7 +9,7 @@ use astroport::pair::{ use astroport::pair_bonded::{Config, ExecuteMsg, QueryMsg}; use astroport::querier::query_factory_config; use cosmwasm_std::{ - from_binary, to_binary, Addr, Binary, Decimal, Deps, DepsMut, Env, MessageInfo, Response, + from_json, to_json_binary, Addr, Binary, Decimal, Deps, DepsMut, Env, MessageInfo, Response, StdResult, Uint128, }; use cw2::set_contract_version; @@ -139,17 +139,19 @@ pub trait PairBonded<'a> { /// * **QueryMsg::Config {}** Returns the configuration for the pair contract using a [`ConfigResponse`] object. fn query(&self, deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::Pair {} => to_binary(&self.query_pair_info(deps)?), - QueryMsg::Pool {} => to_binary(&self.query_pool(deps)?), - QueryMsg::Share { .. } => to_binary(&Vec::::new()), + QueryMsg::Pair {} => to_json_binary(&self.query_pair_info(deps)?), + QueryMsg::Pool {} => to_json_binary(&self.query_pool(deps)?), + QueryMsg::Share { .. } => to_json_binary(&Vec::::new()), QueryMsg::Simulation { offer_asset } => { - to_binary(&self.query_simulation(deps, env, offer_asset)?) + to_json_binary(&self.query_simulation(deps, env, offer_asset)?) } QueryMsg::ReverseSimulation { ask_asset } => { - to_binary(&self.query_reverse_simulation(deps, env, ask_asset)?) + to_json_binary(&self.query_reverse_simulation(deps, env, ask_asset)?) } - QueryMsg::CumulativePrices {} => to_binary(&self.query_cumulative_prices(deps, env)?), - QueryMsg::Config {} => to_binary(&self.query_config(deps)?), + QueryMsg::CumulativePrices {} => { + to_json_binary(&self.query_cumulative_prices(deps, env)?) + } + QueryMsg::Config {} => to_json_binary(&self.query_config(deps)?), } } @@ -163,7 +165,7 @@ pub trait PairBonded<'a> { info: MessageInfo, cw20_msg: Cw20ReceiveMsg, ) -> Result { - match from_binary(&cw20_msg.msg)? { + match from_json(&cw20_msg.msg)? { Cw20HookMsg::Swap { belief_price, max_spread, diff --git a/templates/generator_proxy_template/src/contract.rs b/templates/generator_proxy_template/src/contract.rs index 451cd4f56..a01e4e2ab 100644 --- a/templates/generator_proxy_template/src/contract.rs +++ b/templates/generator_proxy_template/src/contract.rs @@ -2,8 +2,8 @@ #![allow(unused_variables, unreachable_code, clippy::diverging_sub_expression)] use cosmwasm_std::{ - entry_point, from_binary, to_binary, Addr, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, - Response, StdResult, SubMsg, Uint128, WasmMsg, + entry_point, from_json, to_json_binary, Addr, Binary, CosmosMsg, Deps, DepsMut, Env, + MessageInfo, Response, StdResult, SubMsg, Uint128, WasmMsg, }; use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, Cw20ReceiveMsg}; @@ -86,7 +86,7 @@ fn receive_cw20( let response = Response::new(); let cfg = CONFIG.load(deps.storage)?; - if let Ok(Cw20HookMsg::Deposit {}) = from_binary(&cw20_msg.msg) { + if let Ok(Cw20HookMsg::Deposit {}) = from_json(&cw20_msg.msg) { if cw20_msg.sender != cfg.generator_contract_addr || info.sender != cfg.lp_token_addr { return Err(ContractError::Unauthorized {}); } @@ -143,7 +143,7 @@ fn send_rewards( .messages .push(SubMsg::new(CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: cfg.reward_token_addr.to_string(), - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: account, amount, })?, @@ -190,7 +190,7 @@ fn withdraw( response.messages.push(SubMsg::new(WasmMsg::Execute { contract_addr: env.contract.address.to_string(), funds: vec![], - msg: to_binary(&ExecuteMsg::Callback( + msg: to_json_binary(&ExecuteMsg::Callback( CallbackMsg::TransferLpTokensAfterWithdraw { account, prev_lp_balance, @@ -239,7 +239,7 @@ fn emergency_withdraw( response.messages.push(SubMsg::new(WasmMsg::Execute { contract_addr: env.contract.address.to_string(), funds: vec![], - msg: to_binary(&ExecuteMsg::Callback( + msg: to_json_binary(&ExecuteMsg::Callback( CallbackMsg::TransferLpTokensAfterWithdraw { account, prev_lp_balance, @@ -299,7 +299,7 @@ pub fn transfer_lp_tokens_after_withdraw( Ok(Response::new().add_message(WasmMsg::Execute { contract_addr: cfg.lp_token_addr.to_string(), funds: vec![], - msg: to_binary(&Cw20ExecuteMsg::Transfer { + msg: to_json_binary(&Cw20ExecuteMsg::Transfer { recipient: account.to_string(), amount, })?, @@ -320,7 +320,7 @@ pub fn transfer_lp_tokens_after_withdraw( pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { let cfg = CONFIG.load(deps.storage)?; match msg { - QueryMsg::Config {} => to_binary(&ConfigResponse { + QueryMsg::Config {} => to_json_binary(&ConfigResponse { generator_contract_addr: cfg.generator_contract_addr.to_string(), pair_addr: cfg.pair_addr.to_string(), lp_token_addr: cfg.lp_token_addr.to_string(), @@ -343,7 +343,7 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { )?; let reward_amount = res.balance; - to_binary(&reward_amount) + to_json_binary(&reward_amount) } QueryMsg::PendingToken {} => { todo!( @@ -353,7 +353,7 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { } QueryMsg::RewardInfo {} => { let config = CONFIG.load(deps.storage)?; - to_binary(&config.reward_token_addr) + to_json_binary(&config.reward_token_addr) } } } diff --git a/templates/pair_bonded_template/src/lib.rs b/templates/pair_bonded_template/src/lib.rs index ceb033464..651076715 100644 --- a/templates/pair_bonded_template/src/lib.rs +++ b/templates/pair_bonded_template/src/lib.rs @@ -11,7 +11,7 @@ use astroport::pair_bonded::{ExecuteMsg, QueryMsg}; use astroport_pair_bonded::base::PairBonded; use astroport_pair_bonded::error::ContractError; use cosmwasm_std::{ - entry_point, from_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult, + entry_point, from_json, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult, }; /// Creates a new contract with the specified parameters in [`InstantiateMsg`]. @@ -27,10 +27,9 @@ pub fn instantiate( } let contract = Contract::new("params"); - contract.params.save( - deps.storage, - &from_binary(msg.init_params.as_ref().unwrap())?, - )?; + contract + .params + .save(deps.storage, &from_json(msg.init_params.as_ref().unwrap())?)?; contract.instantiate(deps, env, info, msg) } From 5951d23a2ea464ea1b20d50b4b54049d85bb9d4e Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 13 Dec 2023 14:09:07 +0400 Subject: [PATCH 12/84] exclude cw20_ics20 from workspace --- Cargo.lock | 113 ----------------------------------------------------- Cargo.toml | 2 +- 2 files changed, 1 insertion(+), 114 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f8b50fff1..31df556ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -92,25 +92,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-cw20-ics20" -version = "1.1.1" -dependencies = [ - "astroport", - "cosmwasm-schema", - "cosmwasm-std", - "cw-controllers 1.1.0", - "cw-storage-plus 1.2.0", - "cw-utils 1.0.1", - "cw2 1.1.0", - "cw20 1.1.0", - "cw20-ics20", - "schemars", - "semver", - "serde", - "thiserror", -] - [[package]] name = "astroport-escrow-fee-distributor" version = "1.0.2" @@ -980,35 +961,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "cw-controllers" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f0bc6019b4d3d81e11f5c384bcce7173e2210bd654d75c6c9668e12cca05dfa" -dependencies = [ - "cosmwasm-std", - "cw-storage-plus 0.13.4", - "cw-utils 0.13.4", - "schemars", - "serde", - "thiserror", -] - -[[package]] -name = "cw-controllers" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d8edce4b78785f36413f67387e4be7d0cb7d032b5d4164bcc024f9c3f3f2ea" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 1.2.0", - "cw-utils 1.0.1", - "schemars", - "serde", - "thiserror", -] - [[package]] name = "cw-multi-test" version = "0.15.1" @@ -1075,17 +1027,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cw-storage-plus" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "648b1507290bbc03a8d88463d7cd9b04b1fa0155e5eef366c4fa052b9caaac7a" -dependencies = [ - "cosmwasm-std", - "schemars", - "serde", -] - [[package]] name = "cw-storage-plus" version = "0.15.1" @@ -1120,18 +1061,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cw-utils" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dbaecb78c8e8abfd6b4258c7f4fbeb5c49a5e45ee4d910d3240ee8e1d714e1b" -dependencies = [ - "cosmwasm-std", - "schemars", - "serde", - "thiserror", -] - [[package]] name = "cw-utils" version = "0.15.1" @@ -1203,18 +1132,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cw2" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cf4639517490dd36b333bbd6c4fbd92e325fd0acf4683b41753bc5eb63bfc1" -dependencies = [ - "cosmwasm-std", - "cw-storage-plus 0.13.4", - "schemars", - "serde", -] - [[package]] name = "cw2" version = "0.15.1" @@ -1254,18 +1171,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cw20" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cb782b8f110819a4eb5dbbcfed25ffba49ec16bbe32b4ad8da50a5ce68fec05" -dependencies = [ - "cosmwasm-std", - "cw-utils 0.13.4", - "schemars", - "serde", -] - [[package]] name = "cw20" version = "0.15.1" @@ -1344,24 +1249,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cw20-ics20" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8cd854000f897836dc941da0cb691643678c690f485823477c62b8597d08ea1" -dependencies = [ - "cosmwasm-std", - "cw-controllers 0.13.4", - "cw-storage-plus 0.13.4", - "cw-utils 0.13.4", - "cw2 0.13.4", - "cw20 0.13.4", - "schemars", - "semver", - "serde", - "thiserror", -] - [[package]] name = "cw3" version = "1.1.0" diff --git a/Cargo.toml b/Cargo.toml index 6b908a24a..71ce9ce51 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ members = [ "contracts/router", "contracts/token", "contracts/whitelist", - "contracts/cw20_ics20", +# "contracts/cw20_ics20", # contract is being deprecated "templates/*", "contracts/tokenomics/*", "contracts/periphery/*", From 032dc2b2898a3afb971638506b2fc720528fc461 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 13 Dec 2023 14:11:58 +0400 Subject: [PATCH 13/84] address clippy issues --- contracts/factory/src/contract.rs | 2 +- contracts/pair_stable/src/contract.rs | 2 +- packages/astroport/src/querier.rs | 2 +- packages/astroport/src/shared_multisig.rs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/contracts/factory/src/contract.rs b/contracts/factory/src/contract.rs index 4f52be47f..81abe4046 100644 --- a/contracts/factory/src/contract.rs +++ b/contracts/factory/src/contract.rs @@ -509,7 +509,7 @@ pub fn migrate(mut deps: DepsMut, _env: Env, msg: MigrateMsg) -> Result match contract_version.version.as_ref() { "1.2.0" | "1.2.1" => { - let msg: migration::MigrationMsg = from_json(&msg.params)?; + let msg: migration::MigrationMsg = from_json(msg.params)?; migrate_configs(&mut deps, &msg)?; } "1.3.0" | "1.5.1" => {} diff --git a/contracts/pair_stable/src/contract.rs b/contracts/pair_stable/src/contract.rs index 86ee12956..7766f436f 100644 --- a/contracts/pair_stable/src/contract.rs +++ b/contracts/pair_stable/src/contract.rs @@ -78,7 +78,7 @@ pub fn instantiate( return Err(ContractError::InitParamsNotFound {}); } - let params: StablePoolParams = from_json(&msg.init_params.unwrap())?; + let params: StablePoolParams = from_json(msg.init_params.unwrap())?; if params.amp == 0 || params.amp > MAX_AMP { return Err(ContractError::IncorrectAmp {}); diff --git a/packages/astroport/src/querier.rs b/packages/astroport/src/querier.rs index 819980257..5b8bb8f7f 100644 --- a/packages/astroport/src/querier.rs +++ b/packages/astroport/src/querier.rs @@ -144,7 +144,7 @@ where C: CustomQuery, { if let Some(res) = querier.query_wasm_raw(factory_contract, b"config".as_slice())? { - let res = from_json(&res)?; + let res = from_json(res)?; Ok(res) } else { Err(StdError::generic_err("The factory config not found!")) diff --git a/packages/astroport/src/shared_multisig.rs b/packages/astroport/src/shared_multisig.rs index 555b59842..4b34e34b0 100644 --- a/packages/astroport/src/shared_multisig.rs +++ b/packages/astroport/src/shared_multisig.rs @@ -132,7 +132,7 @@ impl KeyDeserialize for &MultisigRole { #[inline(always)] fn from_vec(value: Vec) -> StdResult { - from_json(&value) + from_json(value) } } From d246b4777b6580144d99b2b2cc778a80e46bece9 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 13 Dec 2023 14:14:17 +0400 Subject: [PATCH 14/84] bump astroport version --- Cargo.lock | 2 +- packages/astroport/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 31df556ba..e02d31e7f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "astroport" -version = "3.8.0" +version = "3.9.0" dependencies = [ "astroport-circular-buffer", "cosmwasm-schema", diff --git a/packages/astroport/Cargo.toml b/packages/astroport/Cargo.toml index 4762df836..424b156e8 100644 --- a/packages/astroport/Cargo.toml +++ b/packages/astroport/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "astroport" -version = "3.8.0" +version = "3.9.0" authors = ["Astroport"] edition = "2021" description = "Common Astroport types, queriers and other utils" From f158abe7bf6a12085bb036740600ab2ebcaf6f39 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:56:23 +0400 Subject: [PATCH 15/84] add neutron capability in cosmwasm-check --- .github/workflows/check_artifacts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_artifacts.yml b/.github/workflows/check_artifacts.yml index 9b90e55b8..b2696331a 100644 --- a/.github/workflows/check_artifacts.yml +++ b/.github/workflows/check_artifacts.yml @@ -115,4 +115,4 @@ jobs: run: cargo install --debug --version 1.4.0 cosmwasm-check - name: Cosmwasm check run: | - cosmwasm-check $GITHUB_WORKSPACE/artifacts/*.wasm --available-capabilities staking,cosmwasm_1_1,injective,iterator,stargate + cosmwasm-check $GITHUB_WORKSPACE/artifacts/*.wasm --available-capabilities staking,cosmwasm_1_1,injective,iterator,stargate,neutron From ba06802d3591784a98076cef0540b2bad6517f1c Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 13 Dec 2023 17:18:05 +0400 Subject: [PATCH 16/84] add astro converter schema --- .../astro_converter/examples/astro_converter_schema.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 contracts/periphery/astro_converter/examples/astro_converter_schema.rs diff --git a/contracts/periphery/astro_converter/examples/astro_converter_schema.rs b/contracts/periphery/astro_converter/examples/astro_converter_schema.rs new file mode 100644 index 000000000..33daebe77 --- /dev/null +++ b/contracts/periphery/astro_converter/examples/astro_converter_schema.rs @@ -0,0 +1,10 @@ +use cosmwasm_schema::write_api; + +use astroport::astro_converter::{ExecuteMsg, InstantiateMsg}; + +fn main() { + write_api! { + instantiate: InstantiateMsg, + execute: ExecuteMsg, + } +} From 0b337da15c8d54af78a09fbbe70e3a1a7028256f Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 4 Jan 2024 13:05:54 +0400 Subject: [PATCH 17/84] fix neutron converter instantiate endpoint --- contracts/periphery/astro_converter/src/contract.rs | 12 ++++++++++-- .../astro_converter_neutron/src/contract.rs | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/contracts/periphery/astro_converter/src/contract.rs b/contracts/periphery/astro_converter/src/contract.rs index 0a61aabcc..f915056d8 100644 --- a/contracts/periphery/astro_converter/src/contract.rs +++ b/contracts/periphery/astro_converter/src/contract.rs @@ -19,6 +19,16 @@ const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + init(deps, env, info, msg) +} + +pub fn init( deps: DepsMut, _env: Env, _info: MessageInfo, @@ -54,8 +64,6 @@ pub fn instantiate( }, )?; - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - Ok(Response::default().add_attributes(attrs)) } diff --git a/contracts/periphery/astro_converter_neutron/src/contract.rs b/contracts/periphery/astro_converter_neutron/src/contract.rs index bff5cb603..3b01b9e1c 100644 --- a/contracts/periphery/astro_converter_neutron/src/contract.rs +++ b/contracts/periphery/astro_converter_neutron/src/contract.rs @@ -29,7 +29,7 @@ pub fn instantiate( msg: InstantiateMsg, ) -> Result { set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - astro_token_converter::contract::instantiate(deps, env, info, msg) + astro_token_converter::contract::init(deps, env, info, msg) } #[cfg_attr(not(feature = "library"), entry_point)] From e9f8ad8c1b4f942153436f031c9ef2d72e73e0e6 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 4 Jan 2024 13:19:25 +0400 Subject: [PATCH 18/84] update neutron-sdk dep --- Cargo.lock | 52 ++++++++++++++++++- .../astro_converter_neutron/Cargo.toml | 2 +- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e02d31e7f..8660c4a6d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1666,6 +1666,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "hex" version = "0.4.3" @@ -1845,18 +1851,22 @@ dependencies = [ [[package]] name = "neutron-sdk" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583150155911cb93ef38108259bcfdf19b85b75ef9e98dcd88927fcf24a809b3" +checksum = "46f60e477bd71007d9ff78ae020ec1c6b3b47798578af6151429434d86472efc" dependencies = [ "bech32", "cosmos-sdk-proto 0.20.0", "cosmwasm-schema", "cosmwasm-std", + "prost 0.12.3", + "prost-types 0.12.3", "protobuf 3.3.0", "schemars", "serde", "serde-json-wasm 1.0.0", + "speedate", + "tendermint-proto 0.34.0", "thiserror", ] @@ -2396,6 +2406,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + [[package]] name = "rusty-fork" version = "0.3.0" @@ -2637,6 +2653,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "speedate" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "242f76c50fd18cbf098607090ade73a08d39cfd84ea835f3796a2c855223b19b" +dependencies = [ + "strum", + "strum_macros", +] + [[package]] name = "spki" version = "0.6.0" @@ -2669,6 +2695,28 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.28", +] + [[package]] name = "subtle" version = "2.5.0" diff --git a/contracts/periphery/astro_converter_neutron/Cargo.toml b/contracts/periphery/astro_converter_neutron/Cargo.toml index 5cf94d30a..1e63c2fdb 100644 --- a/contracts/periphery/astro_converter_neutron/Cargo.toml +++ b/contracts/periphery/astro_converter_neutron/Cargo.toml @@ -10,7 +10,7 @@ crate-type = ["cdylib", "rlib"] library = [] [dependencies] -neutron-sdk = "0.7.0" +neutron-sdk = "0.8.0" astroport = { path = "../../../packages/astroport", version = "3" } astro-token-converter = { path = "../astro_converter", version = "0.1", features = ["library"] } cosmwasm-std = "1.5" From 704191ced391862e302ef432d9a78b0646d3a67d Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 4 Jan 2024 13:34:00 +0400 Subject: [PATCH 19/84] add documentation for converter messages --- packages/astroport/src/astro_converter.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/astroport/src/astro_converter.rs b/packages/astroport/src/astro_converter.rs index a50aa0169..05b4e7d83 100644 --- a/packages/astroport/src/astro_converter.rs +++ b/packages/astroport/src/astro_converter.rs @@ -6,12 +6,17 @@ use crate::asset::AssetInfo; /// Default timeout for IBC transfer (5 minutes) pub const DEFAULT_TIMEOUT: u64 = 300; +/// Defines parameters for sending old IBCed ASTRO to the Hub for burning. #[cw_serde] pub struct OutpostBurnParams { pub terra_burn_addr: String, pub old_astro_transfer_channel: String, } +/// Main contract config. +/// `old_astro_asset_info` can be either cw20 contract or IBC denom depending on the chain. +/// `new_astro_denom` is always native coin either token factory or IBC denom. +/// `outpost_burn_params` must be None for old Hub and Some for all other outposts. #[cw_serde] pub struct Config { pub old_astro_asset_info: AssetInfo, @@ -19,6 +24,7 @@ pub struct Config { pub outpost_burn_params: Option, } +/// Instantiate message. Fields meaning is the same as in Config. #[cw_serde] pub struct InstantiateMsg { pub old_astro_asset_info: AssetInfo, @@ -26,6 +32,12 @@ pub struct InstantiateMsg { pub outpost_burn_params: Option, } +/// Available contract execute messages. +/// - `Convert` is used to convert old ASTRO to new ASTRO on outposts. +/// - `Receive` is used to process cw20 send hook from old cw20 ASTRO and release new ASTRO token on the old Hub. +/// cw20 hook message is ignored thus can be any format (for example '{}'). +/// - `TransferForBurning` is used to send old ASTRO to the old Hub for burning. Is meant to be used by outposts. +/// - `Burn` is used to burn old cw20 ASTRO on the old Hub. #[cw_serde] pub enum ExecuteMsg { Convert {}, From 48a214f5ceb60ab1a6a31493914115d33daa6699 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 4 Jan 2024 14:46:30 +0400 Subject: [PATCH 20/84] add e2e testing environment and e2e converter tests --- .gitignore | 2 +- e2e/config.json | 13 + e2e/contracts/astro_token_converter.wasm | Bin 0 -> 197244 bytes .../astro_token_converter_neutron.wasm | Bin 0 -> 266406 bytes e2e/contracts/cw20_astro.wasm | Bin 0 -> 305013 bytes e2e/contracts/cw20_ics20.wasm | Bin 0 -> 358651 bytes e2e/contracts/new_cw20_ics20.wasm | Bin 0 -> 313684 bytes e2e/docker/docker-compose.yml | 38 + e2e/docker/hermes/.hermes/config.toml | 114 + e2e/docker/hermes/.hermes/entrypoint.sh | 11 + .../keyring-test/neutron_relayer.json | 28 + .../keyring-test/terra_relayer.json | 28 + e2e/docker/hermes/Dockerfile | 6 + .../neutron/.neutrond/config/addrbook.json | 4 + e2e/docker/neutron/.neutrond/config/app.toml | 263 ++ .../neutron/.neutrond/config/client.toml | 17 + .../neutron/.neutrond/config/config.toml | 471 +++ .../neutron/.neutrond/config/genesis.json | 860 ++++ .../neutron/.neutrond/config/node_key.json | 1 + .../.neutrond/config/priv_validator_key.json | 11 + .../.neutrond/data/priv_validator_state.json | 1 + ...44344111b5e695268e7a015fe80b1f8263.address | 1 + ...8aa8bd00d420d47b12dca01280abf94903.address | 1 + ...59116823746692817e57c525109798ca7b.address | 1 + .../.neutrond/keyring-test/hermes.info | 1 + .../neutron/.neutrond/keyring-test/user.info | 1 + .../neutron/.neutrond/keyring-test/val0.info | 1 + e2e/docker/neutron/Dockerfile | 47 + e2e/docker/terra/.terra/config/app.toml | 278 ++ e2e/docker/terra/.terra/config/client.toml | 17 + e2e/docker/terra/.terra/config/config.toml | 471 +++ e2e/docker/terra/.terra/config/genesis.json | 444 ++ ...2bbdad47ecebf55ee6edc03cbe6a9d7b81145.json | 1 + e2e/docker/terra/.terra/config/node_key.json | 1 + .../.terra/config/priv_validator_key.json | 11 + .../.terra/data/priv_validator_state.json | 5 + ...c3407f974a49c0d16013d6bec33d9e85fa.address | 1 + .../terra/.terra/keyring-test/val0.info | 1 + e2e/docker/terra/Dockerfile | 20 + e2e/keys.json | 20 + e2e/package-lock.json | 3623 +++++++++++++++++ e2e/package.json | 20 + e2e/run.sh | 16 + e2e/src/init.ts | 161 + e2e/src/lib.ts | 276 ++ e2e/tests/tf_astro_flow.test.ts | 206 + e2e/tsconfig.json | 16 + 47 files changed, 7508 insertions(+), 1 deletion(-) create mode 100644 e2e/config.json create mode 100644 e2e/contracts/astro_token_converter.wasm create mode 100644 e2e/contracts/astro_token_converter_neutron.wasm create mode 100644 e2e/contracts/cw20_astro.wasm create mode 100644 e2e/contracts/cw20_ics20.wasm create mode 100644 e2e/contracts/new_cw20_ics20.wasm create mode 100644 e2e/docker/docker-compose.yml create mode 100644 e2e/docker/hermes/.hermes/config.toml create mode 100755 e2e/docker/hermes/.hermes/entrypoint.sh create mode 100644 e2e/docker/hermes/.hermes/keys/localneutron-1/keyring-test/neutron_relayer.json create mode 100644 e2e/docker/hermes/.hermes/keys/localterra-1/keyring-test/terra_relayer.json create mode 100644 e2e/docker/hermes/Dockerfile create mode 100644 e2e/docker/neutron/.neutrond/config/addrbook.json create mode 100644 e2e/docker/neutron/.neutrond/config/app.toml create mode 100644 e2e/docker/neutron/.neutrond/config/client.toml create mode 100644 e2e/docker/neutron/.neutrond/config/config.toml create mode 100644 e2e/docker/neutron/.neutrond/config/genesis.json create mode 100644 e2e/docker/neutron/.neutrond/config/node_key.json create mode 100644 e2e/docker/neutron/.neutrond/config/priv_validator_key.json create mode 100644 e2e/docker/neutron/.neutrond/data/priv_validator_state.json create mode 100644 e2e/docker/neutron/.neutrond/keyring-test/0eb77f44344111b5e695268e7a015fe80b1f8263.address create mode 100644 e2e/docker/neutron/.neutrond/keyring-test/c32e4c8aa8bd00d420d47b12dca01280abf94903.address create mode 100644 e2e/docker/neutron/.neutrond/keyring-test/c33c2459116823746692817e57c525109798ca7b.address create mode 100644 e2e/docker/neutron/.neutrond/keyring-test/hermes.info create mode 100644 e2e/docker/neutron/.neutrond/keyring-test/user.info create mode 100644 e2e/docker/neutron/.neutrond/keyring-test/val0.info create mode 100644 e2e/docker/neutron/Dockerfile create mode 100644 e2e/docker/terra/.terra/config/app.toml create mode 100644 e2e/docker/terra/.terra/config/client.toml create mode 100644 e2e/docker/terra/.terra/config/config.toml create mode 100644 e2e/docker/terra/.terra/config/genesis.json create mode 100644 e2e/docker/terra/.terra/config/gentx/gentx-df42bbdad47ecebf55ee6edc03cbe6a9d7b81145.json create mode 100644 e2e/docker/terra/.terra/config/node_key.json create mode 100644 e2e/docker/terra/.terra/config/priv_validator_key.json create mode 100644 e2e/docker/terra/.terra/data/priv_validator_state.json create mode 100644 e2e/docker/terra/.terra/keyring-test/b92b8fc3407f974a49c0d16013d6bec33d9e85fa.address create mode 100644 e2e/docker/terra/.terra/keyring-test/val0.info create mode 100644 e2e/docker/terra/Dockerfile create mode 100644 e2e/keys.json create mode 100644 e2e/package-lock.json create mode 100644 e2e/package.json create mode 100755 e2e/run.sh create mode 100644 e2e/src/init.ts create mode 100644 e2e/src/lib.ts create mode 100644 e2e/tests/tf_astro_flow.test.ts create mode 100644 e2e/tsconfig.json diff --git a/.gitignore b/.gitignore index 8d8fcac72..8225278a0 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ target/ # Auto-gen .cargo-ok /scripts/.env -/scripts/node_modules/ +*/node_modules/* #/scripts/package-lock.json /artifacts/ /contracts/**/schema/ diff --git a/e2e/config.json b/e2e/config.json new file mode 100644 index 000000000..348197a99 --- /dev/null +++ b/e2e/config.json @@ -0,0 +1,13 @@ +{ + "astro_token": "terra14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9ssrc8au", + "cw20_ics20": "terra1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrquka9l6", + "terra_channel": "channel-0", + "neutron_channel": "channel-0", + "astro_ibc_denom": "ibc/6D3429933F47206818AA820561427CC415EC5A36C6B197A236EE95F871BAFDBE", + "new_terra_channel": "channel-1", + "new_neutron_channel": "channel-1", + "astro_tf_denom": "factory/neutron1cv7zgkg3dq3hge5js9l903f9zzte3jnm5wvnhy/uastro", + "astro_tf_ibc_denom": "ibc/30FF601E790C8A18B8FC3351953E673E3823D824543EC08DC43E3FADEF608537", + "terra_converter": "terra17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgsydrqk7", + "neutron_converter": "neutron1nxshmmwrvxa2cp80nwvf03t8u5kvl2ttr8m8f43vamudsqrdvs8qqvfwpj" +} \ No newline at end of file diff --git a/e2e/contracts/astro_token_converter.wasm b/e2e/contracts/astro_token_converter.wasm new file mode 100644 index 0000000000000000000000000000000000000000..721e3200e2d22187a060243c41c01593a64a502c GIT binary patch literal 197244 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 literal 0 HcmV?d00001 diff --git a/e2e/contracts/astro_token_converter_neutron.wasm b/e2e/contracts/astro_token_converter_neutron.wasm new file mode 100644 index 0000000000000000000000000000000000000000..bf18b1745a4f80ce13476df83051d01e72fdd6b7 GIT binary patch literal 266406 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 D#R@d{ literal 0 HcmV?d00001 diff --git a/e2e/contracts/cw20_astro.wasm b/e2e/contracts/cw20_astro.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b801272ba03eeb1e13906cdf2d111e6c2a02085f GIT binary patch literal 305013 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 XhYRsfjzDD51~ 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 literal 0 HcmV?d00001 diff --git a/e2e/contracts/cw20_ics20.wasm b/e2e/contracts/cw20_ics20.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1c5c6282069d42bcae94762f4c8f402500a7cc6e GIT binary patch literal 358651 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 Po=%33(UB2R&Vn;;zvX+^HMHI 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 E1MKc43jhEB literal 0 HcmV?d00001 diff --git a/e2e/contracts/new_cw20_ics20.wasm b/e2e/contracts/new_cw20_ics20.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ea94c42acdfd0de4f4235fa121e95121d36c3d34 GIT binary patch literal 313684 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 WvJ*vm3%>RXNDm-ghSYUt`2PXZU={%Y literal 0 HcmV?d00001 diff --git a/e2e/docker/docker-compose.yml b/e2e/docker/docker-compose.yml new file mode 100644 index 000000000..c3207fef4 --- /dev/null +++ b/e2e/docker/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3" + +services: + terra: + container_name: terra + build: terra + entrypoint: [ "terrad", "start" ] + restart: on-failure + ports: + - "26657:26657" + - "9090:9090" + - "1317:1317" + networks: + - shared + neutron: + container_name: neutron + build: neutron + entrypoint: [ "neutrond", "start" ] + restart: on-failure + ports: + - "36657:26657" + - "39090:9090" + - "31317:1317" + networks: + - shared + hermes: + depends_on: + - neutron + - terra + entrypoint: "/root/.hermes/entrypoint.sh" + restart: on-failure + container_name: hermes + build: hermes + networks: + - shared + +networks: + shared: diff --git a/e2e/docker/hermes/.hermes/config.toml b/e2e/docker/hermes/.hermes/config.toml new file mode 100644 index 000000000..c08426a39 --- /dev/null +++ b/e2e/docker/hermes/.hermes/config.toml @@ -0,0 +1,114 @@ +[global] +log_level = "info" + +[mode.clients] +enabled = true +refresh = true +misbehaviour = false + +[mode.connections] +enabled = false + +[mode.channels] +enabled = false + +[mode.packets] +enabled = true +clear_interval = 100 +clear_on_start = true +tx_confirmation = false +auto_register_counterparty_payee = false + +[rest] +enabled = false +host = "127.0.0.1" +port = 3000 + +[telemetry] +enabled = false +host = "127.0.0.1" +port = 3001 + +[[chains]] +id = "localneutron-1" +type = "CosmosSdk" +rpc_addr = "http://neutron:26657" +event_source = { mode = 'pull', interval = '1s' } +grpc_addr = "http://neutron:9090" +rpc_timeout = "10s" +trusted_node = false +account_prefix = "neutron" +key_name = "neutron_relayer" +key_store_type = "Test" +store_prefix = "ibc" +default_gas = 100000 +max_gas = 5000000 +gas_multiplier = 1.3 +max_msg_num = 30 +max_tx_size = 180000 +max_grpc_decoding_size = 33554432 +clock_drift = "15s" +max_block_time = "30s" +ccv_consumer_chain = true +memo_prefix = "" +sequential_batch_tx = false +trusting_period = "288000s" + +[chains.trust_threshold] +numerator = "1" +denominator = "3" + +[chains.gas_price] +price = 0.01 +denom = "untrn" + +[chains.packet_filter] +policy = "allow" +list = [ + ["*", "*"] +] + +[chains.address_type] +derivation = "cosmos" + +[[chains]] +id = "localterra-1" +type = "CosmosSdk" +rpc_addr = "http://terra:26657" +event_source = { mode = 'pull', interval = '1s' } +grpc_addr = "http://terra:9090" +rpc_timeout = "10s" +trusted_node = false +account_prefix = "terra" +key_name = "terra_relayer" +key_store_type = "Test" +store_prefix = "ibc" +default_gas = 100000 +max_gas = 5000000 +gas_multiplier = 1.3 +max_msg_num = 30 +max_tx_size = 180000 +max_grpc_decoding_size = 33554432 +clock_drift = "5s" +max_block_time = "30s" +ccv_consumer_chain = false +memo_prefix = "" +sequential_batch_tx = false +trusting_period = "345600s" + +[chains.trust_threshold] +numerator = "1" +denominator = "3" + +[chains.gas_price] +price = 0.015 +denom = "uluna" + +[chains.packet_filter] +policy = "allow" +list = [ + ["*", "*"] +] + +[chains.address_type] +derivation = "cosmos" \ No newline at end of file diff --git a/e2e/docker/hermes/.hermes/entrypoint.sh b/e2e/docker/hermes/.hermes/entrypoint.sh new file mode 100755 index 000000000..0601f9c84 --- /dev/null +++ b/e2e/docker/hermes/.hermes/entrypoint.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + +while :; do + echo "Waiting for nodes to start..." + if curl -s neutron:26657 >/dev/null && curl -s terra:26657 >/dev/null; then + break + fi + sleep 1 +done + +hermes start \ No newline at end of file diff --git a/e2e/docker/hermes/.hermes/keys/localneutron-1/keyring-test/neutron_relayer.json b/e2e/docker/hermes/.hermes/keys/localneutron-1/keyring-test/neutron_relayer.json new file mode 100644 index 000000000..1d8a1e9fe --- /dev/null +++ b/e2e/docker/hermes/.hermes/keys/localneutron-1/keyring-test/neutron_relayer.json @@ -0,0 +1,28 @@ +{ + "private_key": "8482bce4e5f250bb775f788ce89abc4717980e97c618a1f26278b195b3b6b05f", + "public_key": "0229fc5e5a420a15020e62cde603b5285f4908918f27632daf85435f3ab9d293d5", + "address": [ + 14, + 183, + 127, + 68, + 52, + 65, + 17, + 181, + 230, + 149, + 38, + 142, + 122, + 1, + 95, + 232, + 11, + 31, + 130, + 99 + ], + "address_type": "Cosmos", + "account": "neutron1p6mh73p5gygmte54y6885q2laq93lqnreltjl8" +} \ No newline at end of file diff --git a/e2e/docker/hermes/.hermes/keys/localterra-1/keyring-test/terra_relayer.json b/e2e/docker/hermes/.hermes/keys/localterra-1/keyring-test/terra_relayer.json new file mode 100644 index 000000000..e43dfc9eb --- /dev/null +++ b/e2e/docker/hermes/.hermes/keys/localterra-1/keyring-test/terra_relayer.json @@ -0,0 +1,28 @@ +{ + "private_key": "f5cbe80991c82afe42d51e2dc9946332c4322aff69cbc23fc25a4f05a73eb419", + "public_key": "0316b8bfc0d651848fdab2dd4befdd86bbf89bf37251ee2f68789586284e53c993", + "address": [ + 176, + 38, + 16, + 211, + 8, + 248, + 39, + 201, + 118, + 208, + 144, + 133, + 133, + 123, + 87, + 213, + 158, + 241, + 140, + 89 + ], + "address_type": "Cosmos", + "account": "terra1kqnpp5cglqnujaksjzzc276h6k00rrzecgml0t" +} \ No newline at end of file diff --git a/e2e/docker/hermes/Dockerfile b/e2e/docker/hermes/Dockerfile new file mode 100644 index 000000000..62ba484d8 --- /dev/null +++ b/e2e/docker/hermes/Dockerfile @@ -0,0 +1,6 @@ +FROM informalsystems/hermes:v1.7.3 + +USER root +RUN apt update && apt install -y bash jq vim curl + +ADD .hermes /root/.hermes \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/config/addrbook.json b/e2e/docker/neutron/.neutrond/config/addrbook.json new file mode 100644 index 000000000..20de01ae9 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/config/addrbook.json @@ -0,0 +1,4 @@ +{ + "key": "d88127d8cef73be051a9acd4", + "addrs": [] +} \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/config/app.toml b/e2e/docker/neutron/.neutrond/config/app.toml new file mode 100644 index 000000000..981594a12 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/config/app.toml @@ -0,0 +1,263 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +############################################################################### +### Base Configuration ### +############################################################################### + +# The minimum gas prices a validator is willing to accept for processing a +# transaction. A transaction's fees must meet the minimum of any denomination +# specified in this config (e.g. 0.25token1;0.0001token2). +minimum-gas-prices = "0untrn" + +# default: the last 362880 states are kept, pruning at 10 block intervals +# nothing: all historic states will be saved, nothing will be deleted (i.e. archiving node) +# everything: 2 latest states will be kept; pruning at 10 block intervals. +# custom: allow pruning options to be manually specified through 'pruning-keep-recent', and 'pruning-interval' +pruning = "default" + +# These are applied if and only if the pruning strategy is custom. +pruning-keep-recent = "0" +pruning-interval = "0" + +# HaltHeight contains a non-zero block height at which a node will gracefully +# halt and shutdown that can be used to assist upgrades and testing. +# +# Note: Commitment of state will be attempted on the corresponding block. +halt-height = 0 + +# HaltTime contains a non-zero minimum block time (in Unix seconds) at which +# a node will gracefully halt and shutdown that can be used to assist upgrades +# and testing. +# +# Note: Commitment of state will be attempted on the corresponding block. +halt-time = 0 + +# MinRetainBlocks defines the minimum block height offset from the current +# block being committed, such that all blocks past this offset are pruned +# from Tendermint. It is used as part of the process of determining the +# ResponseCommit.RetainHeight value during ABCI Commit. A value of 0 indicates +# that no blocks should be pruned. +# +# This configuration value is only responsible for pruning Tendermint blocks. +# It has no bearing on application state pruning which is determined by the +# "pruning-*" configurations. +# +# Note: Tendermint block pruning is dependant on this parameter in conunction +# with the unbonding (safety threshold) period, state pruning and state sync +# snapshot parameters to determine the correct minimum value of +# ResponseCommit.RetainHeight. +min-retain-blocks = 0 + +# InterBlockCache enables inter-block caching. +inter-block-cache = true + +# IndexEvents defines the set of events in the form {eventType}.{attributeKey}, +# which informs Tendermint what to index. If empty, all events will be indexed. +# +# Example: +# ["message.sender", "message.recipient"] +index-events = [] + +# IavlCacheSize set the size of the iavl tree cache (in number of nodes). +iavl-cache-size = 781250 + +# IAVLDisableFastNode enables or disables the fast node feature of IAVL. +# Default is false. +iavl-disable-fastnode = false + +# IAVLLazyLoading enable/disable the lazy loading of iavl store. +# Default is false. +iavl-lazy-loading = false + +# AppDBBackend defines the database backend type to use for the application and snapshots DBs. +# An empty string indicates that a fallback will be used. +# The fallback is the db_backend value set in Tendermint's config.toml. +app-db-backend = "" + +############################################################################### +### Telemetry Configuration ### +############################################################################### + +[telemetry] + +# Prefixed with keys to separate services. +service-name = "" + +# Enabled enables the application telemetry functionality. When enabled, +# an in-memory sink is also enabled by default. Operators may also enabled +# other sinks such as Prometheus. +enabled = false + +# Enable prefixing gauge values with hostname. +enable-hostname = false + +# Enable adding hostname to labels. +enable-hostname-label = false + +# Enable adding service to labels. +enable-service-label = false + +# PrometheusRetentionTime, when positive, enables a Prometheus metrics sink. +prometheus-retention-time = 0 + +# GlobalLabels defines a global set of name/value label tuples applied to all +# metrics emitted using the wrapper functions defined in telemetry package. +# +# Example: +# [["chain_id", "cosmoshub-1"]] +global-labels = [ +] + +############################################################################### +### API Configuration ### +############################################################################### + +[api] + +# Enable defines if the API server should be enabled. +enable = true + +# Swagger defines if swagger documentation should automatically be registered. +swagger = false + +# Address defines the API server to listen on. +address = "tcp://0.0.0.0:1317" + +# MaxOpenConnections defines the number of maximum open connections. +max-open-connections = 1000 + +# RPCReadTimeout defines the Tendermint RPC read timeout (in seconds). +rpc-read-timeout = 10 + +# RPCWriteTimeout defines the Tendermint RPC write timeout (in seconds). +rpc-write-timeout = 0 + +# RPCMaxBodyBytes defines the Tendermint maximum request body (in bytes). +rpc-max-body-bytes = 1000000 + +# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk). +enabled-unsafe-cors = false + +############################################################################### +### Rosetta Configuration ### +############################################################################### + +[rosetta] + +# Enable defines if the Rosetta API server should be enabled. +enable = false + +# Address defines the Rosetta API server to listen on. +address = ":8080" + +# Network defines the name of the blockchain that will be returned by Rosetta. +blockchain = "app" + +# Network defines the name of the network that will be returned by Rosetta. +network = "network" + +# Retries defines the number of retries when connecting to the node before failing. +retries = 3 + +# Offline defines if Rosetta server should run in offline mode. +offline = false + +# EnableDefaultSuggestedFee defines if the server should suggest fee by default. +# If 'construction/medata' is called without gas limit and gas price, +# suggested fee based on gas-to-suggest and denom-to-suggest will be given. +enable-fee-suggestion = false + +# GasToSuggest defines gas limit when calculating the fee +gas-to-suggest = 200000 + +# DenomToSuggest defines the defult denom for fee suggestion. +# Price must be in minimum-gas-prices. +denom-to-suggest = "uatom" + +############################################################################### +### gRPC Configuration ### +############################################################################### + +[grpc] + +# Enable defines if the gRPC server should be enabled. +enable = true + +# Address defines the gRPC server address to bind to. +address = "0.0.0.0:9090" + +# MaxRecvMsgSize defines the max message size in bytes the server can receive. +# The default value is 10MB. +max-recv-msg-size = "10485760" + +# MaxSendMsgSize defines the max message size in bytes the server can send. +# The default value is math.MaxInt32. +max-send-msg-size = "2147483647" + +############################################################################### +### gRPC Web Configuration ### +############################################################################### + +[grpc-web] + +# GRPCWebEnable defines if the gRPC-web should be enabled. +# NOTE: gRPC must also be enabled, otherwise, this configuration is a no-op. +enable = true + +# Address defines the gRPC-web server address to bind to. +address = "localhost:9091" + +# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk). +enable-unsafe-cors = true + +############################################################################### +### State Sync Configuration ### +############################################################################### + +# State sync snapshots allow other nodes to rapidly join the network without replaying historical +# blocks, instead downloading and applying a snapshot of the application state at a given height. +[state-sync] + +# snapshot-interval specifies the block interval at which local state sync snapshots are +# taken (0 to disable). +snapshot-interval = 0 + +# snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all). +snapshot-keep-recent = 2 + +############################################################################### +### Store / State Streaming ### +############################################################################### + +[store] +streamers = [] + +[streamers] +[streamers.file] +keys = ["*", ] +write_dir = "" +prefix = "" + +# output-metadata specifies if output the metadata file which includes the abci request/responses +# during processing the block. +output-metadata = "true" + +# stop-node-on-error specifies if propagate the file streamer errors to consensus state machine. +stop-node-on-error = "true" + +# fsync specifies if call fsync after writing the files. +fsync = "false" + +############################################################################### +### Mempool ### +############################################################################### + +[mempool] +# Setting max-txs to 0 will allow for a unbounded amount of transactions in the mempool. +# Setting max_txs to negative 1 (-1) will disable transactions from being inserted into the mempool. +# Setting max_txs to a positive number (> 0) will limit the number of transactions in the mempool, by the specified amount. +# +# Note, this configuration only applies to SDK built-in app-side mempool +# implementations. +max-txs = 5000 diff --git a/e2e/docker/neutron/.neutrond/config/client.toml b/e2e/docker/neutron/.neutrond/config/client.toml new file mode 100644 index 000000000..1bdabae34 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/config/client.toml @@ -0,0 +1,17 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +############################################################################### +### Client Configuration ### +############################################################################### + +# The network chain ID +chain-id = "localneutron-1" +# The keyring's backend, where the keys are stored (os|file|kwallet|pass|test|memory) +keyring-backend = "test" +# CLI output format (text|json) +output = "text" +# : to Tendermint RPC interface for this chain +node = "tcp://localhost:26657" +# Transaction broadcasting mode (sync|async) +broadcast-mode = "sync" diff --git a/e2e/docker/neutron/.neutrond/config/config.toml b/e2e/docker/neutron/.neutrond/config/config.toml new file mode 100644 index 000000000..27afae9e6 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/config/config.toml @@ -0,0 +1,471 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +# NOTE: Any path below can be absolute (e.g. "/var/myawesomeapp/data") or +# relative to the home directory (e.g. "data"). The home directory is +# "$HOME/.cometbft" by default, but could be changed via $CMTHOME env variable +# or --home cmd flag. + +####################################################################### +### Main Base Config Options ### +####################################################################### + +# TCP or UNIX socket address of the ABCI application, +# or the name of an ABCI application compiled in with the CometBFT binary +proxy_app = "tcp://127.0.0.1:26658" + +# A custom human readable name for this node +moniker = "tester" + +# If this node is many blocks behind the tip of the chain, BlockSync +# allows them to catchup quickly by downloading blocks in parallel +# and verifying their commits +# +# Deprecated: this key will be removed and BlockSync will be enabled +# unconditionally in the next major release. +block_sync = true + +# Database backend: goleveldb | cleveldb | boltdb | rocksdb | badgerdb +# * goleveldb (github.com/syndtr/goleveldb - most popular implementation) +# - pure go +# - stable +# * cleveldb (uses levigo wrapper) +# - fast +# - requires gcc +# - use cleveldb build tag (go build -tags cleveldb) +# * boltdb (uses etcd's fork of bolt - github.com/etcd-io/bbolt) +# - EXPERIMENTAL +# - may be faster is some use-cases (random reads - indexer) +# - use boltdb build tag (go build -tags boltdb) +# * rocksdb (uses github.com/tecbot/gorocksdb) +# - EXPERIMENTAL +# - requires gcc +# - use rocksdb build tag (go build -tags rocksdb) +# * badgerdb (uses github.com/dgraph-io/badger) +# - EXPERIMENTAL +# - use badgerdb build tag (go build -tags badgerdb) +db_backend = "goleveldb" + +# Database directory +db_dir = "data" + +# Output level for logging, including package level options +log_level = "info" + +# Output format: 'plain' (colored text) or 'json' +log_format = "plain" + +##### additional base config options ##### + +# Path to the JSON file containing the initial validator set and other meta data +genesis_file = "config/genesis.json" + +# Path to the JSON file containing the private key to use as a validator in the consensus protocol +priv_validator_key_file = "config/priv_validator_key.json" + +# Path to the JSON file containing the last sign state of a validator +priv_validator_state_file = "data/priv_validator_state.json" + +# TCP or UNIX socket address for CometBFT to listen on for +# connections from an external PrivValidator process +priv_validator_laddr = "" + +# Path to the JSON file containing the private key to use for node authentication in the p2p protocol +node_key_file = "config/node_key.json" + +# Mechanism to connect to the ABCI application: socket | grpc +abci = "socket" + +# If true, query the ABCI app on connecting to a new peer +# so the app can decide if we should keep the connection or not +filter_peers = false + + +####################################################################### +### Advanced Configuration Options ### +####################################################################### + +####################################################### +### RPC Server Configuration Options ### +####################################################### +[rpc] + +# TCP or UNIX socket address for the RPC server to listen on +laddr = "tcp://0.0.0.0:26657" + +# A list of origins a cross-domain request can be executed from +# Default value '[]' disables cors support +# Use '["*"]' to allow any origin +cors_allowed_origins = [] + +# A list of methods the client is allowed to use with cross-domain requests +cors_allowed_methods = ["HEAD", "GET", "POST", ] + +# A list of non simple headers the client is allowed to use with cross-domain requests +cors_allowed_headers = ["Origin", "Accept", "Content-Type", "X-Requested-With", "X-Server-Time", ] + +# TCP or UNIX socket address for the gRPC server to listen on +# NOTE: This server only supports /broadcast_tx_commit +grpc_laddr = "" + +# Maximum number of simultaneous connections. +# Does not include RPC (HTTP&WebSocket) connections. See max_open_connections +# If you want to accept a larger number than the default, make sure +# you increase your OS limits. +# 0 - unlimited. +# Should be < {ulimit -Sn} - {MaxNumInboundPeers} - {MaxNumOutboundPeers} - {N of wal, db and other open files} +# 1024 - 40 - 10 - 50 = 924 = ~900 +grpc_max_open_connections = 900 + +# Activate unsafe RPC commands like /dial_seeds and /unsafe_flush_mempool +unsafe = false + +# Maximum number of simultaneous connections (including WebSocket). +# Does not include gRPC connections. See grpc_max_open_connections +# If you want to accept a larger number than the default, make sure +# you increase your OS limits. +# 0 - unlimited. +# Should be < {ulimit -Sn} - {MaxNumInboundPeers} - {MaxNumOutboundPeers} - {N of wal, db and other open files} +# 1024 - 40 - 10 - 50 = 924 = ~900 +max_open_connections = 900 + +# Maximum number of unique clientIDs that can /subscribe +# If you're using /broadcast_tx_commit, set to the estimated maximum number +# of broadcast_tx_commit calls per block. +max_subscription_clients = 100 + +# Maximum number of unique queries a given client can /subscribe to +# If you're using GRPC (or Local RPC client) and /broadcast_tx_commit, set to +# the estimated # maximum number of broadcast_tx_commit calls per block. +max_subscriptions_per_client = 5 + +# Experimental parameter to specify the maximum number of events a node will +# buffer, per subscription, before returning an error and closing the +# subscription. Must be set to at least 100, but higher values will accommodate +# higher event throughput rates (and will use more memory). +experimental_subscription_buffer_size = 200 + +# Experimental parameter to specify the maximum number of RPC responses that +# can be buffered per WebSocket client. If clients cannot read from the +# WebSocket endpoint fast enough, they will be disconnected, so increasing this +# parameter may reduce the chances of them being disconnected (but will cause +# the node to use more memory). +# +# Must be at least the same as "experimental_subscription_buffer_size", +# otherwise connections could be dropped unnecessarily. This value should +# ideally be somewhat higher than "experimental_subscription_buffer_size" to +# accommodate non-subscription-related RPC responses. +experimental_websocket_write_buffer_size = 200 + +# If a WebSocket client cannot read fast enough, at present we may +# silently drop events instead of generating an error or disconnecting the +# client. +# +# Enabling this experimental parameter will cause the WebSocket connection to +# be closed instead if it cannot read fast enough, allowing for greater +# predictability in subscription behavior. +experimental_close_on_slow_client = false + +# How long to wait for a tx to be committed during /broadcast_tx_commit. +# WARNING: Using a value larger than 10s will result in increasing the +# global HTTP write timeout, which applies to all connections and endpoints. +# See https://github.com/tendermint/tendermint/issues/3435 +timeout_broadcast_tx_commit = "10s" + +# Maximum size of request body, in bytes +max_body_bytes = 1000000 + +# Maximum size of request header, in bytes +max_header_bytes = 1048576 + +# The path to a file containing certificate that is used to create the HTTPS server. +# Might be either absolute path or path related to CometBFT's config directory. +# If the certificate is signed by a certificate authority, +# the certFile should be the concatenation of the server's certificate, any intermediates, +# and the CA's certificate. +# NOTE: both tls_cert_file and tls_key_file must be present for CometBFT to create HTTPS server. +# Otherwise, HTTP server is run. +tls_cert_file = "" + +# The path to a file containing matching private key that is used to create the HTTPS server. +# Might be either absolute path or path related to CometBFT's config directory. +# NOTE: both tls-cert-file and tls-key-file must be present for CometBFT to create HTTPS server. +# Otherwise, HTTP server is run. +tls_key_file = "" + +# pprof listen address (https://golang.org/pkg/net/http/pprof) +pprof_laddr = "localhost:6060" + +####################################################### +### P2P Configuration Options ### +####################################################### +[p2p] + +# Address to listen for incoming connections +laddr = "tcp://0.0.0.0:26656" + +# Address to advertise to peers for them to dial +# If empty, will use the same port as the laddr, +# and will introspect on the listener or use UPnP +# to figure out the address. ip and port are required +# example: 159.89.10.97:26656 +external_address = "" + +# Comma separated list of seed nodes to connect to +seeds = "" + +# Comma separated list of nodes to keep persistent connections to +persistent_peers = "" + +# UPNP port forwarding +upnp = false + +# Path to address book +addr_book_file = "config/addrbook.json" + +# Set true for strict address routability rules +# Set false for private or local networks +addr_book_strict = true + +# Maximum number of inbound peers +max_num_inbound_peers = 40 + +# Maximum number of outbound peers to connect to, excluding persistent peers +max_num_outbound_peers = 10 + +# List of node IDs, to which a connection will be (re)established ignoring any existing limits +unconditional_peer_ids = "" + +# Maximum pause when redialing a persistent peer (if zero, exponential backoff is used) +persistent_peers_max_dial_period = "0s" + +# Time to wait before flushing messages out on the connection +flush_throttle_timeout = "100ms" + +# Maximum size of a message packet payload, in bytes +max_packet_msg_payload_size = 1024 + +# Rate at which packets can be sent, in bytes/second +send_rate = 5120000 + +# Rate at which packets can be received, in bytes/second +recv_rate = 5120000 + +# Set true to enable the peer-exchange reactor +pex = true + +# Seed mode, in which node constantly crawls the network and looks for +# peers. If another node asks it for addresses, it responds and disconnects. +# +# Does not work if the peer-exchange reactor is disabled. +seed_mode = false + +# Comma separated list of peer IDs to keep private (will not be gossiped to other peers) +private_peer_ids = "" + +# Toggle to disable guard against peers connecting from the same ip. +allow_duplicate_ip = false + +# Peer connection configuration. +handshake_timeout = "20s" +dial_timeout = "3s" + +####################################################### +### Mempool Configuration Option ### +####################################################### +[mempool] + +# Mempool version to use: +# 1) "v0" - (default) FIFO mempool. +# 2) "v1" - prioritized mempool (deprecated; will be removed in the next release). +version = "v0" + +recheck = true +broadcast = true +wal_dir = "" + +# Maximum number of transactions in the mempool +size = 5000 + +# Limit the total size of all txs in the mempool. +# This only accounts for raw transactions (e.g. given 1MB transactions and +# max_txs_bytes=5MB, mempool will only accept 5 transactions). +max_txs_bytes = 1073741824 + +# Size of the cache (used to filter transactions we saw earlier) in transactions +cache_size = 10000 + +# Do not remove invalid transactions from the cache (default: false) +# Set to true if it's not possible for any invalid transaction to become valid +# again in the future. +keep-invalid-txs-in-cache = false + +# Maximum size of a single transaction. +# NOTE: the max size of a tx transmitted over the network is {max_tx_bytes}. +max_tx_bytes = 1048576 + +# Maximum size of a batch of transactions to send to a peer +# Including space needed by encoding (one varint per transaction). +# XXX: Unused due to https://github.com/tendermint/tendermint/issues/5796 +max_batch_bytes = 0 + +# ttl-duration, if non-zero, defines the maximum amount of time a transaction +# can exist for in the mempool. +# +# Note, if ttl-num-blocks is also defined, a transaction will be removed if it +# has existed in the mempool at least ttl-num-blocks number of blocks or if it's +# insertion time into the mempool is beyond ttl-duration. +ttl-duration = "0s" + +# ttl-num-blocks, if non-zero, defines the maximum number of blocks a transaction +# can exist for in the mempool. +# +# Note, if ttl-duration is also defined, a transaction will be removed if it +# has existed in the mempool at least ttl-num-blocks number of blocks or if +# it's insertion time into the mempool is beyond ttl-duration. +ttl-num-blocks = 0 + +####################################################### +### State Sync Configuration Options ### +####################################################### +[statesync] +# State sync rapidly bootstraps a new node by discovering, fetching, and restoring a state machine +# snapshot from peers instead of fetching and replaying historical blocks. Requires some peers in +# the network to take and serve state machine snapshots. State sync is not attempted if the node +# has any local state (LastBlockHeight > 0). The node will have a truncated block history, +# starting from the height of the snapshot. +enable = false + +# RPC servers (comma-separated) for light client verification of the synced state machine and +# retrieval of state data for node bootstrapping. Also needs a trusted height and corresponding +# header hash obtained from a trusted source, and a period during which validators can be trusted. +# +# For Cosmos SDK-based chains, trust_period should usually be about 2/3 of the unbonding time (~2 +# weeks) during which they can be financially punished (slashed) for misbehavior. +rpc_servers = "" +trust_height = 0 +trust_hash = "" +trust_period = "168h0m0s" + +# Time to spend discovering snapshots before initiating a restore. +discovery_time = "15s" + +# Temporary directory for state sync snapshot chunks, defaults to the OS tempdir (typically /tmp). +# Will create a new, randomly named directory within, and remove it when done. +temp_dir = "" + +# The timeout duration before re-requesting a chunk, possibly from a different +# peer (default: 1 minute). +chunk_request_timeout = "10s" + +# The number of concurrent chunk fetchers to run (default: 1). +chunk_fetchers = "4" + +####################################################### +### Block Sync Configuration Options ### +####################################################### +[blocksync] + +# Block Sync version to use: +# +# In v0.37, v1 and v2 of the block sync protocols were deprecated. +# Please use v0 instead. +# +# 1) "v0" - the default block sync implementation +version = "v0" + +####################################################### +### Consensus Configuration Options ### +####################################################### +[consensus] + +wal_file = "data/cs.wal/wal" + +# How long we wait for a proposal block before prevoting nil +timeout_propose = "3s" +# How much timeout_propose increases with each round +timeout_propose_delta = "500ms" +# How long we wait after receiving +2/3 prevotes for “anything” (ie. not a single block or nil) +timeout_prevote = "1s" +# How much the timeout_prevote increases with each round +timeout_prevote_delta = "500ms" +# How long we wait after receiving +2/3 precommits for “anything” (ie. not a single block or nil) +timeout_precommit = "1s" +# How much the timeout_precommit increases with each round +timeout_precommit_delta = "500ms" +# How long we wait after committing a block, before starting on the new +# height (this gives us a chance to receive some more precommits, even +# though we already have +2/3). +timeout_commit = "1s" + +# How many blocks to look back to check existence of the node's consensus votes before joining consensus +# When non-zero, the node will panic upon restart +# if the same consensus key was used to sign {double_sign_check_height} last blocks. +# So, validators should stop the state machine, wait for some blocks, and then restart the state machine to avoid panic. +double_sign_check_height = 0 + +# Make progress as soon as we have all the precommits (as if TimeoutCommit = 0) +skip_timeout_commit = false + +# EmptyBlocks mode and possible interval between empty blocks +create_empty_blocks = true +create_empty_blocks_interval = "0s" + +# Reactor sleep duration parameters +peer_gossip_sleep_duration = "100ms" +peer_query_maj23_sleep_duration = "2s" + +####################################################### +### Storage Configuration Options ### +####################################################### +[storage] + +# Set to true to discard ABCI responses from the state store, which can save a +# considerable amount of disk space. Set to false to ensure ABCI responses are +# persisted. ABCI responses are required for /block_results RPC queries, and to +# reindex events in the command-line tool. +discard_abci_responses = false + +####################################################### +### Transaction Indexer Configuration Options ### +####################################################### +[tx_index] + +# What indexer to use for transactions +# +# The application will set which txs to index. In some cases a node operator will be able +# to decide which txs to index based on configuration set in the application. +# +# Options: +# 1) "null" +# 2) "kv" (default) - the simplest possible indexer, backed by key-value storage (defaults to levelDB; see DBBackend). +# - When "kv" is chosen "tx.height" and "tx.hash" will always be indexed. +# 3) "psql" - the indexer services backed by PostgreSQL. +# When "kv" or "psql" is chosen "tx.height" and "tx.hash" will always be indexed. +indexer = "kv" + +# The PostgreSQL connection configuration, the connection format: +# postgresql://:@:/? +psql-conn = "" + +####################################################### +### Instrumentation Configuration Options ### +####################################################### +[instrumentation] + +# When true, Prometheus metrics are served under /metrics on +# PrometheusListenAddr. +# Check out the documentation for the list of available metrics. +prometheus = false + +# Address to listen for Prometheus collector(s) connections +prometheus_listen_addr = ":26660" + +# Maximum number of simultaneous connections. +# If you want to accept a larger number than the default, make sure +# you increase your OS limits. +# 0 - unlimited. +max_open_connections = 3 + +# Instrumentation namespace +namespace = "cometbft" diff --git a/e2e/docker/neutron/.neutrond/config/genesis.json b/e2e/docker/neutron/.neutrond/config/genesis.json new file mode 100644 index 000000000..25f6a06de --- /dev/null +++ b/e2e/docker/neutron/.neutrond/config/genesis.json @@ -0,0 +1,860 @@ +{ + "genesis_time": "2023-12-14T17:10:07.854458426Z", + "chain_id": "localneutron-1", + "initial_height": "1", + "consensus_params": { + "block": { + "max_bytes": "22020096", + "max_gas": "1000000000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": { + "app": "0" + } + }, + "app_hash": "", + "app_state": { + "07-tendermint": null, + "adminmodule": { + "admins": [ + "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq" + ] + }, + "auth": { + "params": { + "max_memo_characters": "256", + "tx_sig_limit": "7", + "tx_size_cost_per_byte": "10", + "sig_verify_cost_ed25519": "590", + "sig_verify_cost_secp256k1": "1000" + }, + "accounts": [ + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "pub_key": null, + "account_number": "0", + "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "neutron1cv7zgkg3dq3hge5js9l903f9zzte3jnm5wvnhy", + "pub_key": null, + "account_number": "1", + "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "neutron1p6mh73p5gygmte54y6885q2laq93lqnreltjl8", + "pub_key": null, + "account_number": "2", + "sequence": "0" + } + ] + }, + "authz": { + "authorization": [] + }, + "bank": { + "params": { + "send_enabled": [], + "default_send_enabled": true + }, + "balances": [ + { + "address": "neutron1p6mh73p5gygmte54y6885q2laq93lqnreltjl8", + "coins": [ + { + "denom": "untrn", + "amount": "100000000000000000" + } + ] + }, + { + "address": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "coins": [ + { + "denom": "untrn", + "amount": "100000000000000000" + } + ] + }, + { + "address": "neutron1cv7zgkg3dq3hge5js9l903f9zzte3jnm5wvnhy", + "coins": [ + { + "denom": "untrn", + "amount": "100000000000000000" + } + ] + } + ], + "supply": [ + { + "denom": "untrn", + "amount": "300000000000000000" + } + ], + "denom_metadata": [], + "send_enabled": [] + }, + "capability": { + "index": "1", + "owners": [] + }, + "ccvconsumer": { + "params": { + "enabled": true, + "blocks_per_distribution_transmission": "1000", + "distribution_transmission_channel": "", + "provider_fee_pool_addr_str": "", + "ccv_timeout_period": "2419200s", + "transfer_timeout_period": "3600s", + "consumer_redistribution_fraction": "0.75", + "historical_entries": "10000", + "unbonding_period": "1728000s", + "soft_opt_out_threshold": "0.05", + "reward_denoms": [], + "provider_reward_denoms": [] + }, + "provider_client_id": "", + "provider_channel_id": "", + "new_chain": true, + "provider_client_state": { + "chain_id": "neutrond", + "trust_level": { + "numerator": "1", + "denominator": "3" + }, + "trusting_period": "1140480s", + "unbonding_period": "1728000s", + "max_clock_drift": "10s", + "frozen_height": { + "revision_number": "0", + "revision_height": "0" + }, + "latest_height": { + "revision_number": "0", + "revision_height": "1" + }, + "proof_specs": [ + { + "leaf_spec": { + "hash": "SHA256", + "prehash_key": "NO_HASH", + "prehash_value": "SHA256", + "length": "VAR_PROTO", + "prefix": "AA==" + }, + "inner_spec": { + "child_order": [ + 0, + 1 + ], + "child_size": 33, + "min_prefix_length": 4, + "max_prefix_length": 12, + "empty_child": null, + "hash": "SHA256" + }, + "max_depth": 0, + "min_depth": 0, + "prehash_key_before_comparison": false + }, + { + "leaf_spec": { + "hash": "SHA256", + "prehash_key": "NO_HASH", + "prehash_value": "SHA256", + "length": "VAR_PROTO", + "prefix": "AA==" + }, + "inner_spec": { + "child_order": [ + 0, + 1 + ], + "child_size": 32, + "min_prefix_length": 1, + "max_prefix_length": 1, + "empty_child": null, + "hash": "SHA256" + }, + "max_depth": 0, + "min_depth": 0, + "prehash_key_before_comparison": false + } + ], + "upgrade_path": [ + "upgrade", + "upgradedIBCState" + ], + "allow_update_after_expiry": false, + "allow_update_after_misbehaviour": false + }, + "provider_consensus_state": { + "timestamp": "2023-12-14T17:10:13.487862929Z", + "root": { + "hash": "ZHVtbXk=" + }, + "next_validators_hash": "05698ED92E5C3A6779C8B1A9672560FDD5E47370908DC8A11ACC4A7F8C114875" + }, + "maturing_packets": [], + "initial_val_set": [ + { + "pub_key": { + "ed25519": "Rleln41aiOIm+8WpEbNLgBvSP3T2Mk4CX2ucIoACEMA=" + }, + "power": "100" + } + ], + "height_to_valset_update_id": [], + "outstanding_downtime_slashing": [], + "pending_consumer_packets": { + "list": [] + }, + "last_transmission_block_height": { + "height": "0" + }, + "preCCV": false + }, + "contractmanager": { + "params": { + "sudo_call_gas_limit": "1000000" + }, + "failures_list": [] + }, + "crisis": { + "constant_fee": { + "denom": "stake", + "amount": "1000" + } + }, + "cron": { + "scheduleList": [], + "params": { + "security_address": "neutron1wdnc37yzmjvxksq89wdxwug0knuxau73ume3h6afngsmzsztsvwqmrmfz0", + "limit": 5 + } + }, + "dex": { + "params": { + "fee_tiers": [ + "0", + "1", + "2", + "3", + "4", + "5", + "10", + "20", + "50", + "100", + "150", + "200" + ], + "max_true_taker_spread": "0.00500000000000000000000000" + }, + "tick_liquidity_list": [], + "inactive_limit_order_tranche_list": [], + "limit_order_tranche_user_list": [], + "pool_metadata_list": [], + "pool_count": "0" + }, + "evidence": { + "evidence": [] + }, + "feeburner": { + "params": { + "neutron_denom": "untrn", + "reserve_address": "", + "treasury_address": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq" + }, + "total_burned_neutrons_amount": { + "coin": { + "denom": "", + "amount": "0" + } + } + }, + "feegrant": { + "allowances": [] + }, + "feerefunder": { + "params": { + "min_fee": { + "recv_fee": [], + "ack_fee": [ + { + "denom": "untrn", + "amount": "1000" + } + ], + "timeout_fee": [ + { + "denom": "untrn", + "amount": "1000" + } + ] + } + }, + "fee_infos": [] + }, + "genutil": { + "gen_txs": [] + }, + "globalfee": { + "params": { + "minimum_gas_prices": [ + { + "denom": "ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2", + "amount": "0" + }, + { + "denom": "untrn", + "amount": "0" + } + ], + "bypass_min_fee_msg_types": [ + "/ibc.core.channel.v1.Msg/RecvPacket", + "/ibc.core.channel.v1.Msg/Acknowledgement", + "/ibc.core.client.v1.Msg/UpdateClient" + ], + "max_total_bypass_min_fee_msg_gas_usage": "1000000" + } + }, + "ibc": { + "client_genesis": { + "clients": [], + "clients_consensus": [], + "clients_metadata": [], + "params": { + "allowed_clients": [ + "06-solomachine", + "07-tendermint", + "09-localhost" + ] + }, + "create_localhost": false, + "next_client_sequence": "0" + }, + "connection_genesis": { + "connections": [], + "client_connection_paths": [], + "next_connection_sequence": "0", + "params": { + "max_expected_time_per_block": "30000000000" + } + }, + "channel_genesis": { + "channels": [], + "acknowledgements": [], + "commitments": [], + "receipts": [], + "send_sequences": [], + "recv_sequences": [], + "ack_sequences": [], + "next_channel_sequence": "0" + } + }, + "ibchooks": {}, + "interchainaccounts": { + "controller_genesis_state": { + "active_channels": [], + "interchain_accounts": [], + "ports": [], + "params": { + "controller_enabled": true + } + }, + "host_genesis_state": { + "active_channels": [], + "interchain_accounts": [], + "port": "icahost", + "params": { + "host_enabled": true, + "allow_messages": [ + "*" + ] + } + } + }, + "interchainqueries": { + "params": { + "query_submit_timeout": "1036800", + "query_deposit": [ + { + "denom": "untrn", + "amount": "1000000" + } + ], + "tx_query_removal_limit": "10000" + }, + "registered_queries": [] + }, + "interchaintxs": { + "params": { + "msg_submit_tx_max_messages": "16", + "register_fee": [ + { + "denom": "untrn", + "amount": "1000000" + } + ] + } + }, + "packetfowardmiddleware": { + "params": { + "fee_percentage": "0.000000000000000000" + }, + "in_flight_packets": {} + }, + "params": null, + "slashing": { + "params": { + "signed_blocks_window": "140000", + "min_signed_per_window": "0.050000000000000000", + "downtime_jail_duration": "600s", + "slash_fraction_double_sign": "0.010000000000000000", + "slash_fraction_downtime": "0.000100000000000000" + }, + "signing_infos": [], + "missed_blocks": [] + }, + "swap-middleware": null, + "tokenfactory": { + "params": { + "denom_creation_fee": [], + "denom_creation_gas_consume": "0", + "fee_collector_address": null + }, + "factory_denoms": [] + }, + "transfer": { + "port_id": "transfer", + "denom_traces": [], + "params": { + "send_enabled": true, + "receive_enabled": true + }, + "total_escrowed": [] + }, + "upgrade": {}, + "vesting": {}, + "wasm": { + "params": { + "code_upload_access": { + "permission": "Everybody", + "addresses": [] + }, + "instantiate_default_permission": "Everybody" + }, + "codes": [], + "contracts": [], + "sequences": [], + "gen_msgs": [ + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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la9/+4kffWDL++7ounX1Pzz+rRO797z+DdFYq3Xu+l/+c7nSf+HFW4due9e+ifoj33js77/7P3/++xNMjmZu+JF+wyWxNj2y5MhnWuY+bayOH2nTzohxfb3eq0c1Ho1ElyT2tp4WvTKq6asScS2mRTXYGUnd0MwIbznd2B1ti742KiLLk3v1bVqHxvUlkdbkoH7m2aNySi+cPfeIccOD2srIDb/Tro4ui6+IL00uTRYiicjKyNXR843hxDo9qXOt21ynr4yY2txnIonI+u5d2tzdsQu0Vu2C6EDsfOOGE0tWxNYv6dDSrenWuVv0G953hnn6Tbcb643NUdGyIj735UwtOfePK5PG3Alj7kfJf/2w1h8/cs3SuS/E5r5pJFZs1hKRgdhwLBmpmWdpr9evjs/duGJVYln8Mn3u7ZFP351crnffpR/53jnRpGHMfcI68usol+dFLtPn3qHPfVlr01pTLMK5xnVhRKMiFouLhGGKFt3iS8RpxquWLOWni+XijNQq48zYar6GF/SieED7nHhIfFv8vXg8+Z34P4onxPf4U8aPxc/1p8Uv5bP6b8W/a//Bk+duvmj3nls/8pGPvuXm97z3Y3/+pT/7XCQa77vwoqt+9djf60tX9PVf9drDn/rsA3+98anT3vq2d34kAEaAxd17cu41f/nf2lZFYwlz6fK+TYP3ffK7/zPef9u77osmNl80nr/13Usqo1/55T+/fuy550/su+IDH+xcf277lR++866P333vffd/6aGHI2by9DMHLx56zSfuffTv7oyesTJz9kUX//yZfz7x1a/p8tVnn9O+YWBwx6WX7d135VUAe/uz7nixevC6w2+/+1MPPHjssc8+UK58+T1vyrzF0PQObVzj6zvnbjhT625dpa+Jn2Wcb1yit5w396nIGn2N3h7rNXdvO9IfX5aIrdg8tEnLxuJdy4y01mbwLQP6TmO9nojGo1vkuXoy3qcNGiujejK6d6R/Q2pDtDOWOHLO5TvPj523bOU5q5Yuj+/W18QvSZ0RTUR2xM6N182tF50X2WwkIq+JcMPSjLmbx87aEUvMfeJNmSEzEUm9ajCS6FunL5/74gW5fckd8cTwUNuO2L7USDQx92/DiTO17SP9WkssEdkUTRzpOyO6WVt1FW/tSd34wfG6Offw2y/Lpo52Wctu/dQN2+/64g2boufp10TOSQwn2o1X3fDgG9yd+qboki0AEu/7bezoP54X/9jPj2xo5WdGWvTYkVvepheNlBaPWu/evz1eu2Du3xLV2PTpw2+GrfDa+Blzbz2yXfsvW1tPP7p3dSQy953zjYvSfLpDW6mLI1tWLxk0+JHHzrvhf839Zu1lekIXNy655LIL5/7mggjXrzTaesWRlnV6LnlVYu6zA2em1unxqGiJzH3gxu/qS7SUdkAfjSR13prUB2KJSHsss/vIFckztXi0L9aix6Px6Nw3z04cjZwSh6vf0ZxTczq9asNHlfxYT/quYblgBy8nd8Be5UJyTf0twbsxFaRjX2XKBbY+zOJ8yneDCGQFstPWp0drFfL0KLnlZrbo0yByXW6hKnOvUmn66WuUKgn44ht1yd5l7GdvfNWd7LTlcnVS7l/9z+vuPP+8Lrmu8omn1on79nec9R/7O9nvZd9HTuzv+x3/cR9PpPvXpH7c/+kWZ9P6FXdt6lrl7PjVWXddtqXX2fts4a7X7KmkL//wQ3ddzr7t7HP//q597HvpK9hTP77ysz9xXvvM8fTVjz1919WS/fLqZ/nh17NpFmUdnHPBBec7zK7TLe5GRUQIrr+an9X2BnMwHucrdB7nGjfO1y6InbeCy37OuR7TuRZNiDP5IHyux3icJ8RKLsQmrgsd+BV+ltC4CWmDC50vFcsiHEoLrsd4VEuIs/hmznmSx3k713g/55qhcT0qTKwVuqRxQ0B6ldgkGq2cyXdwnQuN8xh/DRfRZGyMi7gZHRFtyFD1t3CDC8Pka+J8XOcRLoQ4Q+iapae4EBHeypnGtDPFWeIssUXwaIwLM847NM7rIsNnNV3EeUT7vhDQ2yjUKGKRhOBdq7v1rijnBm+PJ4XUheDaAMeOaIMxIe7QeIpHoUFNfG0L4/89zbR38P2SRfKC6TwhxV7BAGvzM4TB3ydWnpbi58TOMDu1Lg5Tdi7fFgFWL8ljfD3fwLkmhCE4P0/E+C9h2jjjzMIYIvwn/L8aTOPC0Ns1nd8jmM7EXm3Y7Nbfwvta13IhElq3LkSUX6itMXjsIp4UvfGELvioBlMZ4YJ/mGux03FmOV/GW6Ka8d9jMJjlMKsRWChYhP+bCz0iuGgTV8bgTYHj59zVhM4NFufi1zwhONf5bboQOpeJ9giuVERonSkuWJRHOL98mYhCbW+OaFBrlPMd0BRnwhS9hgFPPNLKjM1Rxi/WX8OZYJ1iOeNc041YTETP0m/XWL/eE+MtfJnBW1mUL8EajRy/M8r4hTrTWXQqyvbPPUuBH85UASD8f1u3W+zs7RY7MWyx/zlssb8Ytv7fAAAA//++TTqPNGgGAA==", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "H4sIAAAAAAAA/+z9D3hdx1Uois+//eecfba0ZcuObCvJ7B21HN1r/aLeGyTXSflp9EV28jUB0y88crl9xG7j22TLTRxVCel9JVJaU0xJqUNTmqYpuCXcBNpSc0khfTeAWlKeoSkYcIhD0+KWtpgSwHAD5JFA37fWmpm9z9GRLcuG+76P50J0ztl71systWb9mVmzFtvztrdyxhg/wYd3i4UFvgD/ZbvlAn6GP2y3WsA/HP+fL+wOFuiHcMF+iBbcJ77A79nN2O54wf9Eb7tm91hwfGE34wu+pe2L3wNP77nHwb4Hmt9zD/wg8Zu8B0AmC9U/vrC7b6HjH8zhHvivgqZMPCT65d7b7gr2vOn2uXkWwOfo5jfdNLd3z80shG/xzW+66Yfmbp3fyzh8beDDt95+197q5be9ec9tTLhvt+29e56apntuvnnuprv27Lv15j3ze+m3AfztzXtuu/22W9+8Z9+t/3UvY9W7t9z51j23+d+yt+198/7/8J0Ts6+56a69c7f+l7dTJ0PVz3N733z7XXvnbtp/55tm976drYPHfXtv/g/f+Z2veW1Hm0H345v2zL/5lo5Hwc1733TnW2g2yR137p17+01vvmXPrbexUD4rnhERl+vjPillHHPOI6645FJyJfEbC4Kg0ZBcccU5V4zB73Ff/yBXUkrGGLwA/xiTEnhJCMWjSHIO/ycEY6yfMYAI7zIhuVCcB0xGMecNzpb/45xxyRk8klxGDCDBWDhnGyQPAxXJRqKUbDVaLalYyHEMjMuA239SSRlshAGrJoBrNrOAMR7wLAgZT+CViIX0D99n9hv0nkiOS0JKKXDQImVSpiySNP7wIvjDmGRpJFgYDgxt4kIwGN7AZprjFiFVxPfzj/GP8UByNhBukgvcLC4usWSBmff+5Gfx7yH4G/0B7wvfuvett8+9XbDk1tveNr/ntvlbgZtmo713733znfN72b4AqcbeGr311rfMwbPbsrm9d9x569zet91029475+duv439Jo/37Nt3+5vh8a/x5s17/bdf59Xbb5vfM3vrbW9hv8kH6r/NvQVerP946/zeuT3zt8+x3+Trb71tfu/cf9nz5r3AVm+79fbbbtrGfpM3b7rp5j3ze27ae9vNkic33XTL3j37b3rTnrftlaLxbsGZ4clH+es+IcY+w7/Ir7/uqunT/Hu3DP9vN27+/v90+TG+6zf45/hr/sMS/yx/in+e/xb/v/hR/tv8d/gX+NP8DTe98bu/LHb94H/+318/97ofesPCf7171653vP3/eP27+Dv58AH+I3zug/wn+If5636RP8jHHuIf4j/FH+ZvuOnn+U/zXbt+8Of4o/wD/A0/K36GH+aP8Y/xR/hH+c/y+/ghfj9/gO/6CP9J/n7+Pr7r9/l7+ev+gH9SfFq87i/563b9Nf8r/gL/Z77rB/+O/z1/w9/yF/iLfFHcK94p3iV2/Q3f9Y4Pi4fF63c9JN7wMfGI+B/iCfEZ8X+KXxLH8emT4rPic+JPxG+Kp8TnxS+Kr4jm8X9InhH/txBqgd9zGTPjs0U0wjRvC5YHYkrzMabUlA7aIs7DFk/wUxHDH7UDHug4y+hxnMA3w8sinBD4BtNxabZuZyzR3LDtTGEzHVLD0DUME3o5LE2xnTF45KFI22T29dRGy2ygu5UWWmYnxWYdaKnDqntoZvj11NCI5Q3Nx15kV9oORQmtIqNLrbJf4TrSgY7aQhcc/rSzr+HfETWlefYyTzSDr0wt6MgMlToyrbItWMEnBNORjkaFKhqTMtPMtEqNvzLdmBTK8MCwBN8y4+UIS36Hc7lwGTN6thAjTEwBzmH2fCZlJtbMKASsDJ8vpOaaa3ntloJrbuLrtxTSLLzNXHpXzsWUBjoJrSbEkBaGT4hBLTRrCzYhMiCcMGxCDCZaAAgtTFZmu7VoC5Vz+MNm1JRmdqhGlVpOCNYSQLl7FxcX796Rcg1j0lwLE8OYso8IlmQ/LRjA1jCXpzkXdi7SzQXeLwv++o7ZCJiNwoeqNhtVm41QUzBMmI2k2cj6bKSdDaBEaUmzkTQb2WM2asXZyGWzkTSbfxJc2dmEbkmoakko4KUAxgKfigj+4JJQOsoyehwl8A3IGQB3KWC7qGtJQDMdUMPANQwSejmwS0LpoA5F6WDWBNdTGxNmA92tCm7+cXGJtRmbYExzo0rzz4tL7HKG/I6NuqBxB00sh+bWCT6GdQL02aWmdKhV9mcccBACFbJv4sIIaWGEsDDC+sIIdQgLQ3QvDNGxMEJC/wteJunZInYECCsChIhh7BwI0IA/SIBQN7KMHjdgZA1AXQSThZHpRhcBoJmOqGHkGkYJvRxZAoRExohkEjVBmRTqCGVSVysvk0ItdVR1D80I1wBRLG/ocI2PLa4VcHOsQ4vrGLEdZF9DbMeE7RiwHdexHesYsN3sxnazA9sxYfuPKmb/Ny3/daBV9k2+CvGuuvGqusQ74vWDLaEWBHDxIY5S8WxyJKzJkdCJgxDkSNgpR8ILJUdCt/KjnnLkE3U5Ikvzqeo7NjofOaKlOcVA4X6Lg7YQUyC7bwFul22xLwfBfpqVY4xVeBIWT7yGJ+6mC0gk9VnhiROeSGm0Si3Ni6y0EwDZ7/sA/Egt2+yOCdbAT2LfhFCWMmvDrXLYCHri9pkuGf3c4hKzI8FG5yujRyUDMS3NUcQyiQ9Q/aOS5REqcvh0JjpYNOAnj6irbQNppmbN3y4ugW6Ps0FslfL6Q9BCBuSqfSjsYGQbQI6xq7Ov8pYC0hxn3bQ5xnoT53v9qK4DdpDmpG/q1iiBo49ajop9RTQpbwRRPCmuI1Y4x0YJmSHXJND1NTOWIYugxoa9OGNrb85YAyvFjviNnqz0x4tLbJSxSWSluDRf62SlxvmxEjHT0HJmQjtst5bTHFEFhC+AAU6w0hz8qSWW/ZZA61Dz7IRI0TZ7I5hoBAS+3lgI+LMbLGw0yQTa14Bl7G1bSYSpkalVp9J1QKVxopJqycSwHPSAMiz7KtmCqYCfD//UEjOTxJUn4PPjH1xi2a+QwddeTSfadgINhkp8pXof3lLwVqdSiFApAHKZDgjwIb7MvAmcXpCVXpBAFJQ+kvSCtIwmUS9Iqxck6QWF0rSXXoBm2jZUrqFK6GVlGQ7wVYOitLL2JTwA+7KrVcHN57tk129X9iU26oLGHTSxHJpjOHyMeiFAnX4RII3UcAAYD+oYD3RwBow7NRyQGn5KCE7YnipRC4PHoIWXdyTxMi/xBsn2ADrjImpRA9AX5sC9S8wEmpusRP1ihtB/GEIIKP3cm58n4cezi+mZ0AynDoKvZQUf/MI2gcZhpJ2GvQBsi8Gca0Y6ashJQfRqFAm+tm3QwYWDYJroZaYJrdZtK7YYX9Yi0QxEHi6QqdkRlvzx/2eSE3tWFvgFM8B/IXC4nSr/bePWjJc6zP7cWSJxW4yj/2O2wRLIBfxyBWImQHVhvs3vmLEIKqIaWjpmhxPySPFOOPYGlvZF2FEqDPQQGL4jZVoZXeYSDLF5o2dzLtfUCfUhqz4k7jDkUnNYRzxlCSitCLkKZ2PYzuxPOTIW6i5kKx2bq0rcALGcdYVd1DGIAfvQMp5nNnoRWFDrGBkvOWdGhZkxHRFglAMftXtWU2UhRhiakciuqAjagrVFa4AzsBnQUse9GLAT0AgXbdHKpRYgioQZAgN0UjItwMDIQAwJ0y4LpUU1XXgmrkAFXNt/E6NST+L+Tlyi6TJBW1E4xFnOq121s4xw2fiGFD4YrDqKfUeCxP5EbdvrIhTKHdCzAc6SX5duSZ9k/8bdasBuW0dgJWrc+Sw4esjeRgQnbkkAJaK2GMlr+6/C779yIMuF2nw9ycoR1u/Nwggt1k678HBT8Mp3Jz7aVmbf8DbDSv8zXPNRyQo5LX64UI9qNR3+wBbDZ/sCJQVnQUIMCdDMR39yiRmZ/QX3rCjQNoZlgsw2xlj2dd5KoBH4J8IMOgtBoItkXwISCy3abAA8JIEAwENK6r09Ar01fG+pWiPQZh3oJwGoqoBGawTaqAP9JQC6wQFFtKwVpv1yI3xyb7/RdXUCXD7yg9GkG5UsW2cnEmhhDnLbqWMwUXmJKJdahZyUixxWC/iWcX0SvwWT2Hi+k6Dt/Gta0SrmYv4GrNOoh3XqR3CKrWZGu+2E6p1XGJMOZx5XINFfWhXk/V2QwzrGngeM9VW8xNdIdwTaax2plR7I2oMbtRhjb4RfRc9f+QpAUHtcM5PicxRywnqVHgXXTco2vHUV6ZhtKM9oSrz2nmxPymsQL+a+dy8xM0wdZpciXky6I+VOM0nQTEMlaiOrTBl6N5Vy9ZqLvtOsBktUlvVOt02KFmk80ZoUSjOT0glKyxPWKj5yYj8kvSGg6MCHtgpm1BQ4vfbY6buLcCbl5ud/4rNsjLHNWugwu70IZlIBqo1rkZ0UeQgeO+5QgJIA2ysri0ArpyHobJKPMLHgD3i4GSyn2SSyOZ8QLc3NK88sIRRulp6GTxn0YOIy+4KA0XAtJ4SihryjIb0ODf+STYgRzcE6KwEAfNpaTgiNn1Q5IbZWQJMcPo6XI0wH6N8pQLHIiCSKzpYqHE54M4K0UjiBWG5MCEYuKCsYGLWSDAn4yJBDFJo1/faEKtQCz6uc9lKwdDqV13NXiC0LISov6ZTXQVEWTWSzYhgnAJLhWWDSRVHqZvYnnMg3xhaFQaPaqDxGKo6xe4V5me1UU6bP/kTgshPQ/iUO7f+Iw4uv8LxfC3Oa4/J4iReRBey4Y4yd5ha8yJVhedOwvN928zc8j3W/4Xfkm2FZiNKoufwigEcfB2G0Ej8OGZFn0JwAy97aeAF8CLCqC2m27sQtpX+CeejNqTCNXLXWJbrfLN5zRy4NutWb1ZTJctUaSHREszvFSw2TgPH9OYxPjLFTOAVgYQIem2InNdQxdJBmZn2uWhkg6mSt/UnuMatw2hlO+6uc2vdRG9vxMQENv4LC8HkBVnNbnBAwgLY4DmtGtMUxUSizASYUIjQxpcMZVaFbmmC2L2IYLMLRl3hmcYmZIPuaQG9HttAnWHrPEjMJ/MgNzyV6HaOMTf/pVz7zs4/+4olfepG9IWVG5LIlEiNz2eIJoHaFTsLOTlr4U0cXgOmwRwctnhiZ5FLHwPwhML9h+WYiUaLlXNEP+O4L0JZy6M/7AZ+tNNGJmtLNtGV55wvQZZzlFlGB2bAzBYo8L4D38/WgzujjgMVps9VKbGM7hVwL87OiBCo9K1DfmEfg66g8ISZRyR2mp8eF1UaXs2fEleyjgvTRMTEhHhZk3RBBv8zJ8zgmiphIJ8x9svTj8sriuJgUBySttkUJTQtotyih3Y4UdTJ2PioOSPSizGPwFaB5ODF230p0k7T0g7iQHGou0wNpCxCXGbED1a19bql1Gdh6CQ7RPrBouYyMwGpG1QJ3M9uBzU6yivt3W+ZneR+KlhCZf09NsoSe+U9gO5IpbwSeJ73fFjcWYfYn3Ig8hUe7PEhgFFzBYox9L3AQSJE+eDDN8nya5UVPEbHgeRjWcUBCIrBCog9+REGRgkBQKCgCo2DR4DNc8yms2ZCGDWZBaKd7LSzZMXYNigrcfyM5VOxIuVlvMpRFO7bkaavPPsyVUXnaSsmR9YCmvNBIcZIpTtI4mYENbP/AJ6GVGffJPIC/B2XeB38PSJIhi7JoEePJXOkWtgcM1OVGYNRsX8Alk0LCXOkkx0mNABHQZsy8+Aef/ni4E6VGAOu8Dxf1sR/5wjf/8tnHv26lRkBSI+iUGp1dyM4uAJbs7AA3PXuAtzIj0H2oO63M6CNqJYXUwVyhSGqgA8Zhsvmj5GyBMrEd57CoD8r8EoujFMQFvCymdLHLv/2H70F/x719cefbOkGrVW+aEKdAAlw8KU/A30sm5TGB7gHSIag9CibEcfibTohjgmgP/TxbE173SeB2pGTDQkhsvxJEQUDNnwcwjQmBYBMLViLYvnrPl/TsOUk8/zgRRfBJRL2yTLSQ3BEvChJRpwU0RRF1WtC4okRfBK+9iKLyIrJDX6lJORpcE9GmrOB91ommxkyatJrdBMDh1QaHUmtbteq2GViW8Om1boGgkuuxQBwEYXHcsjiWNPsDsgiIS2BqUreykWqmAXzVElguICt+VL4k8ouned6BAtTWL4o8IheDbWf/AM4bu5L9nTCKFiQ+Fk7xWAYjCVvx2AGZowvo2CbqoG9MaMofNXxnL0y1HKbGCVOG5esAR+NetLRwXcvEpPSxstdeU0gzNtunAsY4Hge8Zhb3KRvXptz05S2H3WmOcvYS8BYR29KMz35y+tv8Xfmlcgp39nSYncT3AG6b+taX5pfgyhhjo0Vgxq+tfgrMa19ffbMUHCr1pdNsupl9Fb0WvYvkP8okMSqHilwHruN3FJfq/AdShueCFYrtir8M1TIRGsXvOh2QiHeiIKmtlhYgGlaNXjcHuCePPO210IGdYxzNKQFztXryS7ymHWGhg6lAloXJ5udASoNZAfQGeyJPYQnEOsle5rSzUK1Ovz4TWp+DbjUyPUjLzK/U+up8lWXNBAbA7Y7CK8KKDrtSj1vxcYymCC/km9CaFyR+XhR5QpEEftUNkK7LDL8jZaApUZth12ebJNINZBGOoc+Kr9RiW21nOB5lhu7azp6lj/FdV7JnBEgN3ZiZQ7FLa/CsCEX854hMMOMurky4lMy3PjLd0ObrM9ld9CtZUUFPk2ehssPJ5HmsZvA/1mnwR60woUX189z8FYP3O4z953nNqE9hlWZaP5pvIGvrsAWMP4sxdrgbeISr6KPcW1T+Z9vLg7yyqh7muSJfHvp8kBeOloe4N6oa4KMhgcbY/TzHg+I7UD7EciUbSpENpawN1fI2lAIt1LDOlgCoLW9DqZoNc5BXfPVjnBjrIO9tRWGU0D+xHWmCQBJnSDXQI0CsLdbALdan5t4YY/fW/K+mH8cxUamK50W+wfpfgfUVWp3+VytvoLLSLdr/kHqDCUDmBuZb77HekGE70Xdyj3cgfjofJ3Sw1bJ2TIswhr5PA8WugN4asNA4uEnCescWymV2gWZ2pQNXguGP2kkDgmJscqxqktsJZTVGToVdOroy9MO666LOyXUJvetC40nOKLDilXqk9fVSzca+u2MFrANDM80VcSQ8f3sRoO5SpLsCr7u+x5LbWQagMpBzAlRVpxnpKgdnP7Ifg4/g7Y9fmzIdm+3XAkcGJr4LfVyE88np5j3FpY/mUl86rQ/uwqACE9+Vr9My3wIiRGpwTqi3sgiuT1niWoOWMixBPfRtfodeZ+L5uTwzPI91kG9BEwJIVWwhiJZEid5Sf73CX03lOHph8wxYCsaSfTK/1PA805dqPb24uLi4/10HChQ4KOBP1TB9Ky3EW6yEb9hlBvLBD4vg8o6vSR55VoIX9YYJ8Yq1Pl9Cg3U7exH/ooT/B/oIEv7vhLOqtGNqcFRBfqDvC86untYHv0s4r1x/lxfnkc5ghHPEkgrld9zbZe1wXFHwApATNSl+wkof+PxcTboCRCe/a5L1OM8HwBckyXqMO491nWF5E144Wokh3GsRY+y3QRoPgHRtSCdRF8QUadLuzauGk6nQmEwWZUA/mcw+45udFFuqib/PosgfY0t++0pV0lRYj3Rnyjab9ciEuQSPnJS5NCpfRyrwiRrIJyodtA6nE+B0PuMlKrbpLVFbVqI2rACSnbxK/VnP1MDQWyYCidqw5xxWZCqSqPgYI526HidgRlWeYYMwlngTV4GHGFhECPL/Ubo2K+lqIV6mB2bSJpiNzbRppah9lNtJrbeT8ltKdcZKzixNh/RFowK3tIdAJl7kN5BXlKQCJOmQbYSCdKjadUa+Py3oOMT1WR+O8L+/ajWjx02sIzXi/5LlpyOcpAJa2L3hwCCayEhNVLzAJmBSv2J9VhQF62C44NNYkSArkSC9SGjO6AEy+ppk9KGBut4aqANWVDQr/beTTmSWC8Qd5PnVhut0e0MPqCkLP8gHdCNvOomzfsKLm4EJL26adTnTSPQl0+2Dj+Z9+pJpffDRPNWXPJpv0o18oz3tcoKlQdvJsRWq/XY3k4SqYXlCXiNu68FAqw5JyWLoRACd6o0zaUCuAqK270r2c0DeRzvs2PUT4qj1Vh5DK3s7ewQ1/VGRXwIwHxH5pbTZR1v8Fl8PVnuVY+xnwLgGVF3OPoKLd1Qetjb2wyLv1xvVlLXHA92YyyNYMyEikzixAv7chQbOTFLqTSa+qwjsnJkOrmQNzcAxG9cMaLZVM6BXWzOdY6yc3jghhjUDn2dIM30x6pRBzfSlk6Klmd60ncWageJSmunMwP+LnVtgXeKEwFfoR1Z11OkndMsJgWiOJ8QjwrGHFrofmfmjPZg5mdEbZ+ZSVjk0zhsZYwx9moiYb1QwwAr0NsZY3g+IfJg8G6DuYexmO3vYdv8gbhlcyT6CfxE3PyPwMMp87ceWmBkiumSv1swIPOWz0SxqSg/bU8pDshxhyR6KrRmn+wx4SaulpeYU0D9sT9YkQBnU0rzyQTqIw/jprRhV2S7xXhdGSRIZ8AbXHi3pUtw/pqJBkTPHmO3FbCs17zhI6vU/Ld32j/v22kKZL7HZvssUD/mZ/gU8RLe1mO1LhL/rG+B2Rwx9n+QAL6bNJQkrV0nQzlt3aGW+zHbMocOzYy6NNMe9D98GZKQE6uEaBx7Fy3X98IldyQLNjKKTwag0bDtjtB2c0YyhaYbaGqEMmGJnGtguzNSs5qBOZVtMFRwkHQYKX+2irjZARwjtKJ5D58r+qNVMmmIsFfhdkkK0qTONnYXwMTdfYjv9hMwQvPRH1G8eQEdDeQTvDYPZoogp6KxxyDqqPA+dBT1UWdCbnPdoT89Csm5CwGMqtMpDA0MNU26iPAQT3RpZWSU5M292hNY/HQDmR4AAR02Z9XlI4lP7sxNdhFbSXM5eBY2+A9cUGiBbYWm1RZtE8oi1a520hql0S2zeEgnYXxushg50A+gZ6GiCtXSg4wkW60ArDNLSIUUkR6VukGyiMIERRuRDRRU7ov5xRdQdFSlTjBgeFVfT8TxGDD/tIwzoxmOrleBC8gTFLb4Uw45fA6Zr2nAEbTuCwqyRkluBkoj9eoCfpSZ6+FOzRcM7/JasJLk3gevkHwX2XBQpG1u7NcR9gACMINydR+8L/f8AlOZyKg+AJnALAF0te9rqjlBiOkIJWpF9iEcogQ8rcYBizy4BHqHQ0VPDGalB7eRpvDp13UaHrVfQWes4nSAqHc7oeGYOo06tTRnSfAyfS+isgSzH8crVqACgD7u17BHiKOz+cp1fA7dTBwza7GTQTi7GOfkJc8Kclzp2R86exugGMRR5blflTR2CnaxMfFdShMDEDd0EJm4QEzeIiRt0i6EBTBxWTDw128HETcfEX+rJxK3VMDHKyQQ+NRPXsLGyxIzhUR+8FCUIO6fYenHdBGrwBPsi0OHKYAIPRp1lkMpibyVIwkPiq4CU0H2nc9euLz54ztr1x5UIKa7xJOvRy2XMZHTlGZoVSixgQI9WMC9ueItOxOh6N/DXv5/tk1ww3FvnO1J7GMRnCwEOMze8zO0hmjAD36Om5JQWsDpC3XC7+AhnfLYITOP1sLxGZTzN3pBKkKQ6MM1rt+SxhYSgc6GDPIL3WNHU8SffUTR08wdo31nQKFUipzrhSgch+KRuTDfveQdIfRwnrQ/dmJSxQcp5KBh6w/FzgoHxJitHGJkWGV0yl6NyaFLGjkc57u+MsYHt7Du0NE+xcloQxZ5nJVpWRLyrtDRPfgiIt42IdwOS7Bgr3W277ygnxI2ejruQsni5altZiAzsO6PmNM8+Cr7RIMJpi610daht42QlBnUxd4tkahbDk5i9ADfCkt+t3+moYqVrlpYTniTjQWACVb2gBvOj2j/J3FIXdMskp/MavNsEzwcLBXTA42I6qx8Vg3moGTwcpqUa1pZqhDHO310EM6mqIsi4DrLbCzWTBkA2NLRELuvxvjgJWl6SYqyQOHgPS1U/dDeRbuWvsKilX9TChmKBJfaRWjD4orhgIXH8LCFxWuoge4avIeyMEwbiKuzMDF6bMpcLAfdK2kKtMfKsISLiqEXujPep2YKm9Szxrw5csJk12GkrjBuVo/gAw91vstEvAMNaLePOahljV+D2fxsvlI4XdahtH2ImUN8T1NFc0AlGaGQe2bAxb8z0tFj86QUewVEEiKDTi9CfXnA0P2h4mqaH9nMuKosaSQ89NNzRhYCWuoHHFyHtrDkDBs+a0OJ2sIa8AcNxQgontMkZMBjaakdwmkEzcgvekaNHcHeOd/HmKT/G/kKQHcJxIwYkOTGo0KGRsMBj85cfwMh02kITtMOGj3dg6GXn44TitXinNZTk3G5ici1sDAbur+G2Jp39RkbuwFtzx1jpgF4GY9yFYwRbYozdQAh2M8N9s/o0pHkBr/O+4tUqXmybnxQ3V7d9g6zAm6bQaEeK6H0eW73Q2ermSXEDmBpVb74v2lzMKqJUTogwIDmI9wbsyV4HOZ6vYT7lRuBRoH/ahnbzYIO7rtIApPfdeVPLy9md8PiH0MhTSUskQA6hI8TeFqK9e9mCqbdJgOq6aW8zb2egaviV7PswjhuMuO8nbouriTWIc+PO41xYTXT18LS94Z19qYMWKET8s+d4xxMXTqz5dob7fx2DhDHWpoDOFwfOkuA4vVFLHZM+VDQBOg/+fvwU33Ul+z6E933Q+vsreDfmloEAQ4CCuwnCPBk9+wkTd3pM/JBm5pUDS8z8kZ1J9mqY7iLGO98b8GDZtSKSOQvL1SV9bhQSl6iW5mWGYdum6Y+4UH/e4hXnzlTQcfIYG6S4k6zM/pDXnxvm7vB3PggMT/C26IYaimMbzD3oLU+rlmt2NmjYSpkXMrulW5OPsUE8J85KLe32MT0kidYHSkmMsYt89OOGK3mLmqHOH4LWbTFMav5y3iLVGpU68HdaQ1L9eGWYaQmuRjU+5VBxvD5jZexuYueDHak6+6TP4gHQJNwo/dxoRhh2PzS5bKBqFciWq3hHJIYtI6W3L360EJsXJMZ1C8eFh3hZhBTXvaUzrtsdpFesebA6rclsyPWPVedZNlMUArTRUgiBTrUO4A4IXfNoi0VetJZFdt/tta600N+e4xX1OzAo/BTHyO11FDIOH9fTMRl83KSFOc7LfOMKsdwLKwUY9HsVLVv9iU5tgIEESdXvVbRs9SW6RbMCCdWyfvIddKy53x2IuS5sPLekbtLUrM8lBeedqrW+xaNTGmYjN8fYrVXgWeo7PcqhGe0rHOd00nCM0+J4mtNGw1Hu4u1iF5UZW3zaTZVgtk9wJkEk/8l7bLykYTsNn6fYbGHAbvyGiyjYQuEGtn0NAoZOL4fACULcASHRCrR7bLV7P6E4AdtLq7kixdhKZQOyKfwiBYyA657l/WJKDxTubhsvXa+5nbBykWnHOToKg3SYCh/7HW4AEVEF4Ru1uIU6BNusaZtFFVDcGmlOiCOcIuc+AX8HJ8Rj8Ld/QjyCoRT97tAWloA9+TjKi8yGWCLQwNJPWfqluh/IhcZyiAZNVuZSTrlLHOSQ0TUOe/E3BK8zRK8zMPFdudTNmTTTUfYyb2WJHpjBC7JH6PT4uL1K9RjHM5+nOZ35KBxz/0yaYt/EmatoQoqHeNGdP1ZcJ8wBPJshrPmdqaf5pHjF3nt6CZvi5tRLnEIcUQzbzl6hzmgoAK0e6vkI11HaALaIKBj9MC59R8/LYHADdOvLPrG8cpmO0qgaOtHnuRp9XGhDnS5EL9mLPoHE8GNLn8DRJwD6BHX6NGfSFhGmlZB3FZK+GLRHfnjXKvK+1qD3tfpJescT/iIVXS3wqF+oUL/DcbZu0UHscQ7LAMc/YEMIVI1SKd+sQYDbuItlLyeosIEEg8QJn+CUA8/SaaBGEXvzzTNEr7CIoxy3IX08f6sWz08mwh7zJeZ2UhMv8k7guy6GH2dwYx4bSj7EJsQS12I6npRPcBveH9NGe2DivOGj+9PYhfSj6xaBg2HifIPsEXL2ZQYrNbLmKnSk8BABt5zjKkQ/tjO4xjufEW4bUzjYtbm0gsyeJMDj9bRHjYH5MQXhNTuD8wMbxWq8QsVfbLfboFfCxVVIn3FcrNuKhIJDZD0cl+HNBWWDKV6TBzT3BjyYZvlwR4hI0EsrdoSINO3FBdkVIpLQ0NqlTixCRmnbuO3UoYNt40NULT5E6iZFwFT77pIuiuoKnu5QkMpGKOaVgowSNwqQLIlVkAdEfhFaGTY45BW7sF/ibgs9wLY2PZ4RFMyhL0L1xrhMdMOmaqnUW+AUZMPmZkH1FpCCdMEgDgJuAy6HwJ2KrUOwASbKB5g0rYLseUiJ4SZNwmufvZGgN+cN3Vco0nFgHNmuc4uNoRWwgeIgSPTwo6nUfaA51ruh5XojHbN/p2Df5e54LopJ8TS3cb98QhzlMPZ+HDtYT44MTjdUCF+n19swk3Ug39Z3xaacwmaoF06RuEjjRG/S62yjTdBoXT02JYDe8bZZH45f+c7/HfVMyDgoMEvZJTR6DLAfBq5Z1eQQfJroPrpecLRC7GX4qGWPy49Cq6EJcZLbEG4ONk8LgJ7k+bCVkHFlE9CxDCnHYhiDPJp6I5gasR5+NI8Aq32E1b6EYIOXohsT4hgnZYwjlTBKDLZriyc5ZXHAAKu8rzOVKmVvmEmZUbrPJlINDJ8vEh3qUCfXbilCHRp1/ZYiMcF8HurELC4u6muNnM83gJSgQETKpRqYYJ6OCfp6ZVXdoMOOrKqhv3TbRwoQRqATm1U1rLKqhnhtb8WsqjDLJzhF0i5xsMo26NAE82UhAeuxlkAMpqUenpQwugYNV02IzKDt5bNYLNmrAE6SbyIBOmT4HSlFPTt169YDUTzu5PE1cfmr6lzuouhf5JbEYlS8wC0jIo/bWwYvclrFp3m+Gf6+wPM+uwuQLD/uBPMDRDfpMtJODafvQ2vkeEvX3ix60v70BKftJaEv6uI75DcKq8cB0jbK73EfVv9FXDOJ3jyj+2a0nJmbS5nuczdcjjpmj8jcHpWsuBh/QLYP9MWP5s0WSkHQ0zSqJ3jeQNur0WUbF+rM1jGmFcFpQWNrorlwLjJZ/rh7QXYYgbHFT2MNpnkTY/PhWZw3NayBBoWdYgBcZVc1K7sq8oLtEYrCAhZq+VAvWQ/1Sq2fRK6yYfmAjlKbceDjvNSpjycCyPZyQmA9GGU9GLKphU6RdD/Pwa5eix+C8ehNsLzR1qUA9URnM3rA88CAjQJ6jFvZg54LooMiSxAd8BFN70d4nlnTAMTB/FyOwb/K8mNa8SPyYYZ8ycxhMPg1kTd7dT0KaYuLQhLlCEt+RQjZdXCFu2lf5nXDNausa7tX52MBKJgXz7NE13lWbZdJnuEky57/aZ7dbE+W4KOWoGpQ8ONJUlzaHR+fl6Ha8TG1Myp/mNzQbBrk6ZLN3ZDUTpTxwUlwsVAcjYrBPLBg8fzM+h7BZP2ch9ezFT2iRUB4O80p82CA+amyX+U6wA3Psye4ISumLZjhs31xFNK1SjQED/KSwNTSwgRtcRB1eYAx1UFb3Ad9HeIu98YAtPw6tnyAuzwfAd6bd69RBqOgze7nE+yrHD+L+/iEeB5A8QlxAl3n+gD+GQbQ8gPA/i9MJ+7nRXzFNz7Aff+LvDTvef8SM2BEIgNrRWmKsvUWH2mfDlCU0HgEKyTFB8EYpU9xeB8vmpPyMeipOVkfSH/nbB/C3ip0p60LMt2+zl5+7v2dRE2bF6SXtLOXKimS7SW+IL20Onv5+fe7XDMXkj9aq+YPm6qnmz+GasM5D/aoTXYRnH/K/gLq3ubtsagNz6+bpBOnVdqmC4BTEKqrwyUeeY/aM/KO6ck1TQ/PUmvTqhI5XUhWaf6/hFWaq2QVfn7dNDpx+qvvR6P8AuMUO+mtZeLaI0D3GDvA4fdohd/DxEMNVnhFrdybXPmRWPkRBlxgoqU8QkKQQ4ndUs5L6NqlA5WrTQcql6cDxeycklpI10LaxJzS5wGV9eZKS5vTHB4ELp1n1apQ5gPvr/LDG1WaD73fJ6LGRl3QuIMmlkOrkoNKn9M8JjuCDrYwBzXFq8UjTMcmJlNJx9NoO8V4Qt68rZCmuW/WjM9tZw3TFAumAT9fm7LNOtbSNPfjo9jEOjJ/yq6n3yPzdXabexYZgHQqutY9OxX5Z6EJdWQO/S7zDw/9btUyMIGOzOH3hv7p4feG/qkySkdm6cDr/NOlA6/zT6WROjKLn/ya8o/hi38ujICfPvfs5dXzzz17uX/ODYefHviL52X1Any7DR8zw5JCzdp8psRI0qZ5lTpaThCtNEbUYlZIoAFmzbRJXyl5awY2ZrfFFxrH3OcjQCiGMGiLEyQsTrGykNTa2tPY/Hk+KXfDa/O0s7/fuo2HOEYJ+Rfl7kl5EIA/wUvzvoOYZA0nlV0KzZ7ghXR51gLweymjJKahJr8XOCzAzeTAPMW7MlM/iZOYWpZPlYx9zGt9xUwq4O84uAooE55C3LzE6vOR+yfFkzgB6HpUjlO3Gt7c5l80IyX1OonfttoxFX7C0wGMHyerA5OV2VZvyONkiVgPdOEIAd5nKXeyx0N5wioq87EDS8z8FiOKEwoPcpPuTB3yi4i8RFq8nIQfEpCYATyY1oBiNKKD3FBCU3irrnoerFMb4CIlgFtgwtMWAXxCPAk/PfbjS2xCPAEf5YSYxzanWYm7R/D5MV5OiP1OHAN2ssPC3oAhwp/g/qweUeA6b4tPkHnRFo/hNQoU+McQzOE6f7hR+1+WeKkj9w26OMjxBAQ5uTYB5PyDOAHEsuqYwEmawBO8BK7bT3Ox2O+awmP1KRzxU+DZ/4/Y7qyIBY8SwGef5tRDgeRDvdTKnrWLSPPsVRVDuXAptzZyTlPHw1h45Um802wZ8gQd5/mWO4n0T/Ecf1zieWTbNHQI6ya2i6YrgDNcfugmkpUgYazlhHiK44UNYokGMY4WyDXM/D4Ihg2WNV6dOLrziu78XOheIXYVtH+6on1wLrTn2eVE9rxJGfSPcAqvIQGEnIGWhr8USyJhHP6exkinh9pud+UYr4KdVrk10GOzgNvNgoCLQCqW0A4L7tK1/PaMyjABQZYrfB5rVZqXQZ/j7hQGbmJGRorfwOSYn74X/dGv4ZbNfjqjzwrZCVc6uNLClaXZbu/nEcjOsZLZVUg1Ve/qJbrl+xe2K3vKMO+Ssb7Eqmys1KYjHauy6VhbVTrW/XS32L9rCwvIzqSt+1OXLLuegRQDgvzQvnGv2+nABur8h0YnLz17pfP3V1g9zetTHWle54tgUi7h7vekuIr2QZ9irpXL4jo1WxuazeL69glm/OCvogyx22hL9LHVdXvYdesac3dffRWNj3Q1RnbZlrr9wE6u4o6ruOUqXpp/slPhxFZ4HX7LWqef2HQt2Lo28JH6uK+CcR+y4x7GA45NCR2M4IqdwBPtC7PYHrOX6is2O+/FRqJBgWjAPcROvn7ynbV01bi6LW6u6eDr63ybo3W+ji1fZyvw9TXA19cBXw+via+HO8b6+XfWMhfvp+iWtVCd+MWD/UMA23RgcfTns5Q2J6vC4ZcR8Svg0Kc4Wsty3Jx0dPSk7agtBjWnjXFHqXRo7QuX1oBH4jehl/7zRuIFwd5MutGv67PO65Bnts4J/d076wJ/Jh1c64yGEr8c5v3LsCQ2rlVqYcsLI28+dC9dMbhAyt1LGop+rHX02U7VLlalP9+/CCsTc0kTlevci0nwq3ePWpmEasKyw/ozKNr1axFIjvfXdczt96Dr9Px5f32yKqwc7S197WTTbA2io2tCRzuINZP2rXVGA+drl/RfME7/wIU1Y1fm9IPvrHNDjdNv6aDpPt/mFCvNB7DRKjTqLcDA+4CB+9akUfs6xvqxd9ZKY5y/6kuT85/seam+NOno6Odweig/sn7Ly+dhq1K0S2WrvRODnC4U8loXCnkHVze7xTPMDjr6ZA/kNdagVx34ZM3qLulA+8P3YuraOtpHuoHqsifQ3AMdplEN+Yof8xTtVGv2FPe9LvHSPILyYwVfDkeBM3llZT8C0bLNuhH1/mu9PLZoe8kqpAdrhY0x4724YXlTxwzDpBdPstU0utG1WXc+i6q5llFmiS9ScrZG17g2/c5payOpx9hT3BUUGXL3TrqFLO/xo3VZ2Xm5rM0KzWdzPW+se56NlazJ2ki9kXNBRhqu1UkOVhqqSHo4iLzHjxdk/Lzir7ONf7E+fpcUz5cnU7aEmbtVlnVELY6XCLKCD1CHAWq744QimPQBQzifGZpe7KrU4N7gAMNK/PCfWPPsD0VyP2cdLj087gu4kEoxCoHCW+VYwV9lL/N+/6Oacr8leKcC3xMUCrXyC3bn119Wd28A3LbI4OPPCXaG7UgcYKvZ5KIpVRBGcYPR7Q4E2HA9ZS9zyjlie4o7vkWUdMR+C0Fa+m8BXTG03xTlFVl5QvJsLwgXS7YiSjAKjMbcfwbkOPRbNH1Fcr7QGz0BD4VUzCfsx9Z9ggtGu+6EEezJbcTbwdnYXxqfxWmEQ8VcKGd+McQXk9pMaDeWVw16IqAL4+4NvJNdDV+FXIT1CQTYJrdZH1q+Nf0ozzpciSPIWY0jexPQobw/qSFT8orvsIfBWg8xzRvbupHVl0bBieyt+qKwzfsTuos/R9lkMqo/GKFoAn9BYz6q7HO1HBRRW7RyrLYX59LERmW3YxYxo0xMKS44HV1yLeh45TieT7gLsBhwOsL+Zbs83bPLb3MuFzxYExie3Y6hxRiB8ORDVSls88RDtbLFVKoMr36XRdAWjFIbtMDXugI3pcDX4ta9GoRebWw4b4uWlmZoX1nI6R9ZXFw8xkB0SrpkJUG8MkwdiNM3cWnb4QEyN0PVd11ipSn/vQ3f2+67pDJdtXweGR70wsP+xHATIJ6e5VxVF9PtKQYvgUPAYmMu2trweZguTOnaLQXWs7p+SwHzwKLcf/QLz/y7a42YxxqVdOtawbwxSnzfhBjSyMbuuoCw1wUE5Syh6wKiLVSO2pCRfrKHc8pmVxGJ5tV1Aaz4zd0Ma9cFbLTqr4sOynK6UWNCpHCI6TlUaf7bQ772dGg+VlFY4o0HSh8jKraTLn2MTLSyZS6xjhfxA1m4hajzg3L8oIAfVG9+UMgPCuY5qPFPBkw/AY+m3724uHgSmUS5K4TnxxoU9VtjhbCGvkBL/PZJ6c7xKJcbZsnlGOiBmwQ4QdxZ4DbUw3F7TCVNpd27ICOCm0/dS7eeOqKssUDvOULdXgHNvsUJCl78bNnEaM5dsqUB697SaydYgzyjK2wtbHvgcVWXiXNFEXQXAg2oTLxt7kBnX7UsS1cL2iUOpBOYAmB6OTCenOvc0RI0LFc2HRFzZWtfiF02pkU+W6izl4yNaiVjI1f5NQL6R50lY6PzLRnrKr82XOXX5vLKrwU3n71/iY0yNonyNS7Nb9/vlyY2Oq86sgq9qsAXh6Yo9F2UnewEmvA5h59u8Lf5sD4LdzWiAyqlX+GsY+o4W48xX0jf9fotBL0r5VppNcZu3M6ug09tccOEuMa+pfAAwG7tCIxqsaJtiBqLjhcffB8e+VpeczUW3bsK0yvB52ugw+uASRX4HIFhKK+xSrUgPYQXcobKPJR2mrI2TemmKVE01KcpbZXq7lmK1c4SY8PCzlnKXrMM7SzDzlkGK80y1KEZKotQRzttjewQ43yx+mJVJlu1RUzWn0KXXpnn/WaLMlOzdhYMZ8H+0wQzfj5XtTCPwinfyq13VW0OKK1GxQ1FPCl3a6XjSXEVJYgbrNpUr02KFj19aXUg91uQ0GS8pHdqLQbrDa6CBm1q0EqwOLmLFS2qt1rw1lCHkIqpjDeYx6R5lE1n8+nQSZvTzBoOKG9Iba+odrrVUrfaykqqpOu+d6g5n9+SV+VKhQfhvjsQrjY4x0KnMVkcU1pMc9xQAu4qKDyiR53QzkvsJi4LRfeWWrOG6cCksya4douNSpEqQOE4Ui8MOqy5OfgRsDiHNDeYo4ZrtIg4TskVBR0sqag2zCH7AqbuOiOkyELCaqJnA6YsMNYBbNEDW1yET7rWQvZs8cLDK7cQPVscPUML3rPFAyu3SLDg/bjNnkinBuO+BG2lZuW2Iuzelgir/Q1ncsQFIzoyS8c+wbiiG3fZ5S2ZuBdb/oH3tYX/hk6Ty2UHar8rl53bSLH7H6cxZeJ/D3myUM91jLfGfow7vs7K7MfRmmgXkRncRxcyR6jWgc5jjUmGMWHDkA23FZiSgux3mzUQi4REZRG+Hi14m6uikGDBN/DCb6N24bcB/YS6Yf7s6Q/9R7TgcYOIPCBrjZpBtOBR9TsLXlkLXulEhxhvnu0G2ahA1FoL3uctVqVurHjhVy2z4JW/8DtkT6yyooHDKHWsmxhE3PKZOXCyyhbep/pj3mAnRW/kfKHQRQzRrN+3TwN6Z/PILOSx2Yd3HemgzAyCWGiU2UGqI52j61kWTZgD8ESBVeCbZHsF4OtTjf08xoGYfaBxtDAXo/djfuQhTLLqws/tFn5WGmVA7CbZj3J7ffoaHZtvPv2h//j6uVTouCJHpKVaqHsgUXZ7oKMEvRAaXGDi2byJRRHzRFOaYqnDPLKpSnRkJWpAMe6BGYRhgzLPpW6ip11EduB2gJgdswlKFzdUfpRTmj67N4HF07yMBva3yizMXuZIG7pyW13B5NVaGKf6+UqrGs0j63aYIw8sMZObxz+wxLJfECx5QfJmx5qJ3ZoBtgiJ7nGedNI8BJpLpHmMvt6+fbk0C3lk9mHydYEKsFA6caTG2FIdl0XDkloVeD234ZgYSQ22MZBEq4rU6ybEVi3M/8SUrO0q3dAQYQZJHeqmJbUCUkcVqaOK1FKrOqmVlkBqmRQhkTq2pG4QqZs6pIzUOkYORlLLnqQGtzNXuoG36wtpB24HCGtQN4DUTUvqyFfQ9TnLPKm1IzWsPlwSvqrCmakt61f6Le2XUftxRdsRR6wTo+j4ejteKdJkshX4Bw+5yS6k0G8FUlEo/DCMBp/V8fCDzp4FrYn5BbM2vb3f3vCFb2NsHtF02pme2XPcv9ORgTDYzhTmbgejid1Jxp0yr7CyCNB2fAtBi3QAVuNb0JjU0XY2T479fmwod0+yOzUzf/uuJWbGqePs1QnIRK6FDQ7G96/SCpTZNq3w5QkUaOMT4mqtzAusxFSsZDBS3LYCjXqzJg9gQtyCn6ZmJ8RurcwneGkk2eyP8dK0qcFhXk4fXlxczChX7IO8xHpOmr6KCXGdVub4B6Dza+iHQ4BMuZ3dZzPNHuRaTWs8acDnd9MfnCsFHt8IIPwYtTInGaYmVsCAhHGMPad8SIChtg89BwvXFZBXxHDcZpg9gubobi7sxiGICAZaCE8MWI4mYPb7AjQaLnsGBpRAzjHPg7L+NeiVlzkDeThbSLzAL7JfFzkpaABYP7hQdHCxqLr9bWX5NLN8ygqJ7NrBpZXvmeEWG6GnENBkVAwW8bQ++Cjx6tSsFsCqYgFen3JR8WqMXY2sikb8ac+p2gW/I1++yvHl1rJiyhH0MICDgXnSCTFFP6hRNuPef5rVGlydYE9byxonB9vZiFZagInmOPlVONyKmTXycvxojVBtmKQyX2Ql+PjIWOOUk/iZ2k+T4LR1uGF2cJrmzQkVkUldhIpbl0bQuqylCjX8DvgNhZgCfcUCmxNRM5d3a7jUoe2KmQ14TQZ3IJhJsVA3fEGmw3QTdi7kA92fkmI6xuuFRuzlRC1q5K45ExKzNlFChavyFlXXKLhOMNs9JTnurr9ASWJbceLLMNjkxnHi2nfVZBhjW1G/a7x20y5EvT6HL56Pyfwx1bDCqlVYPcwnTLSmU0eNja70UFQ0saohpmxpN1uVsQnryFX/cEPYRBVNhlxeY9eDr8oQUlUGRSmTsaoeFn2KbGETsSx/Ls0lSlyNE1tfLfLdY5lKm9T4YZ434O+DnDLTPMApr/Eh7gppcQRWJTZWukHFGEPz9w/Vqi360mENKsbIux4nZODyrtJhWtmCYR3lwqKZVFCyWAflMjC4GlglLm3QJNyj3A6Yu7TCD7vkhdLexaGUzQ/wPAIqSJr4hLiPU57iB/ikOMApa/8iJz4iJLn8yBU6pHkRk/I+7C/5eBD7yHQ9xaAlZki+xVcWk+Y+XlLjerN9tmOFHQcrdUzToievsmRrWrL5qdVep9IBK7yH6Xvt5GPUVRKWf20coU1hLHwKY1VPYRxYNhQ2GbihrMK41DGxsHk1qFxpPn4QfthNkyfNjJmlXfJ+bnuV5gRov4P0GTXhIjDq0049S0w+1KZWS3X1LM0TdfWMBQH2aWnV8y30wxEAJrezT3BKzPQY1xLU82FOzx+0fw/RAA7xElQ2EssOlXgRsxzjPUWkcoeGlqPymlpZimOOzshN4O4hvkM7S0UzBO2BGAgwRc2P0sf4rivZj/BER1gbBaQCJc+RmCqWsl4TTh2XH6xx+QEiMd3SREPiS25FuxzfyBeh5Qtl+SKgCqiRvQ5WB/DcWgAgIpr+fCYmNEWd98lkW9xnIR20kA7wPLCpqh+2qHoQ8TIhHuCUa/oQ1wyZy7yaxgnqFUMsEpuUh+Ir/p7zaGFZXhvylYbwHBwjSwJ3zDdbhFaEgizzjkfNeVJUiGNwnxmczSOtcq6DmrsMvhO3cSS0bZ9z7w6D6yHB054tIrKqcKN8cB+6XKDbY7vR3RYqezeOchBzn7uEm8r6ELrTh3Bew+EHrNfwq4LLhRXujUkuJB6VqxIdlGzK7gf1d//I6UfrxeRKTLlwuMLluKfNK/bdhew4FuTgqRUCjwUF5vI5KXKxQlUJex7NunrDHPm+P9Qn1A8/v35oVs7tsiUn3Iff8Pu4JxnufaLDaJ1hm0MATwNalEpA4RiHMP8AKxQdFwTZL4tOxA+h4hsVw0UTRdXpS99FIut78cy2OYmbmAEebNE4OW2ocIMClU/zSbkLewLTGBP8d+zSqhEmFhBbRUCnW2DCBHTUF6Fvb/7K7q4HeJhq/posf5uIKUBjl66e476R0GpaTIoRclyGwUH5B9qRVOiEgrkL/At+aPYpQZ78XyFMRTOpQHuAnAByAviJMwFMsLwElvQSsOTa4kbAdVvcQMeuu/IADwnrzjWj4js++XlAFA/9YfkxVhaRjnUIhiXXEboTBKAIScvyMabyCLePj5Hk809BEHPNR1kwKafwjVZZRGgt76R2DR1p3mY7MSZCN8Cy5rRdAu3kFFjcQETnGfDs1cgeRYjXuwHIMAhvX1kl9ZEKEWZ3x4vHEx01SGQqKWE6H2UXo0kPpjo3ryrt4SHa8dyMVd+H4fsVzqVg2C15AZSLDWScssnL7I4uB3+ma0dXosEa260OKoJzIuIpSNxDPiPWCQY+jMw+KujOrQ5BAAdtcTddXt6fRzowF4NTHdjtwWt0ALY7ZQSIdIhb4AZ3YmwyAtKHQVu8kY4ib3Tf23k/JgLIW8BKk/JuHcAS2u/TC7zEyuzHOV2t3lVE1PyaPDEqj8WUjkAJNNVUJWOaIPxD2jnDrG5W+Kc6zkOd2E1FrLN2kOsQPKZs0p7j5ZQ0BPgChH+kUxD+qUtXXepEN538R0wZNadj3ahdCX83zvk6v6fU9Pu8OLEb3TXx/X2Cc8oXcTdIG0CUfQ1PI4E+9dvSN05KQDNuSmDMie7XLY8lcKPfUxO0ODgScnj8qYq+tmgNcJti4MYimkEvwx2n35LjGfRuIENbvBGN/dME4eaiCX/2Zd9hUssBRWpSPF0dY/N5TGmrm+5CuA5G2b18Ug7hRe2DnNj4Unh5kZMUfgd1c3eOfc/nYa3ibMNzS5hHOskbOs3DRGeYrHMgYC4BqJrSfbTxvllnjpu2qindD1+8MA/R08aUthVkKpQod1KS35fQPPRxRgFtQcr9GsNzLHK/i9ZsMCqHJtmAzYYxyi6lBRqVOrI5CzHu6y6soKDj7SzTTLcmGAi5xgRWUo1qK9fmJ5xJpUtQSEFudgcghlf9O8K/I8CUCHubEnTPfoQlvyZpJ/I0czuR63Bfze7z7qadHtzHsuu1tmwVmFl4EDKEIRhg5hg8UUf1Mk7q4xSKZ2FPOCUoK4zKkbv9IfhJVmYG4OzGmDdG25s3242IbSVFL1hGx+2YXZNyPHG1maoup6ousSBy1aU8Q5diWZdHWe8+pxLaqwWih6jW8FR6arZjXSmwJGhbLA+MRikjcLOc4eUF0JiDWoAJk/nNOtNA9UqKQFBVLkWmYmhHhcdrWoCNaDQS9pE+0STLZolTTToMCYhIMoemXRaxjvCzxjsGIWawirPX6tAcxjQjIbofffD3IK/t4pk0j6kGFDw6zAvM4Bwi+ho6HBWP8CLDfbzv0NmjuNtDpyEh5l3o1yGQweIv1CHmkznCdTjGbsgbtOxAWKe09gSs6jzChE2Xs++D16hKTRNee2Pegj835gD+QV7q/jrgIxyj1xsgivMYs/FgDihMympS6g1rqaJAimhh76CI0BAYPKwlokCQh/ikjOlN3cTknJGO8wYOD7AaIaIJyYARrJqQfVfNQMTJNahHmrMOgVvC6mwBexqalO2KOlOzCB/ogwoM/kzlKdGtiLJvcB1iPpIo+xbS7ghmpgnb4nEQm4j7MQbcHGOkE0gK+FQ04Q8ulFg3s4weNxP4ZgAyZifC0xGKdyHUPIzJiZ70+cYI+a4XylkVttln+AT7EMfP4nEOHl0Ns8u5IO4mKdh/USvAoSod0SgjN8oooZFFNuoqptgtN2Slo1kjrqc2RmYD3a2KJtbNslFWTSNK89cf8CGv2KgLGnfQxHJoLuoKH1PSLUvxhivzSBSKsz+zaMBv5ps/jZGBpzgxEf34lZ/G+1CnKE/ZEcxchhfoCOuCFbgRQZSIHNOIx7m9QQeMA+hGkIcQJMbqheDYU6pbUF3Ir9XeFsJ4gIP6cmsFxUC1flEMex7dTysXPRRX/AlnkF1a8TnuHZ4bxRE7z4P1aPc6fI+LfFLcAE9PUFlmsN1TTQ2LFrWyTvXwQATCqkHneS2aQ1tcDfZGau2NsC2GUXy1xRBpfu2WJmK7ptlDqyoAuZgxB+Rkth2aZnlkM37Z2X+Du91jXIR4yggPumntf6/I7WREGxs+yMtC6RDM9xqFtqJYwzVFFDriKDSO8WAVukBctS2BrBeCYsSSR7lEXUQNm6erg1Cj4oYcrBGgE7lbdNeF6rjWCPVEJ6GOdBEKfCOpIyIUX0YojJrmNoA/xbOuEO/RcDx3oGOMEHda/CgpzgltnZYtVkueIO06YdBFZQCxKotzaJbQyHnqJjFYFXRtjDDdsJl6XDhXA0SkgD8oIhtaZBn+mINJiOOv7igPaKyLil51A0jRML90/xIzIvsah5fHU746gBji2wkLk9qf9pWrTopSN7Jv1QqInsRasxic+3VBqQLtbVJynRlWjDolrBaQGN1h9+TiArfkcEQSQzulDe2UFMiKHrasBXcCPfq0aLM/FxOsofso+PgF4aOPYRQ5RyPbdwuz6sPcyjYIfjtrYb/a9qxczyqh3pSV7FjApBqG0mrWRNdTGxNnA92tpv/yd7744Q++8Nx//5/oA+NbXc25ay6WN3eiHB/TJgliXNoA2hq+7dQovN7dXkQSZDpQCzow0Xw+qNUMpvk+KbBgV6CF+XNR5k1oQD+FWpjnRJkDXj4jSqz0dYQetSQVfVRTOgNaKfiDGMsQY5kdfGbD62P4Baex1VaZhrFnGCw+xk4JyvH+daxsVecchZvTaGEuctsK65iZg8jFul+vL4sYrM1RybLBWlvMsqmo1BkZzHEuMUYUBpziCSLa4jrNMnqcJvDNJ8kEqaXTysQQdPyBLFVd7nul4+bp10WxEVMRCr1xUszTrdtXWBcnUkipD4EHhn07zXKebkFS1ljl03oqjPpVNupX1dN6qlpaT2UTcaKFAQ/AwuhqVUR44dpaGGAXmE+9s7pUA426oHEHTSyH5tgSH1O7s+UPW83/TIDpJ4toVLJi47T64eKiR/VF0/EPYIhnxIWMVBDac+CeKPKB0arr5gOwkOrMNXZSpDGxhayxxZnBgTzs2t+O7a3MlEorYT+//T6XY5v4XFo+j2y/yNzb2Su2ktlLFZO/xEvzPygtSUz7mDomc5yugp8UmHKsepkKY+hUx2YrvrbJviZpSWssjQHjeAXz3QaJH+XnzzLK4IyjtB13j3JTXSSt1P9RUeI+VC1sNBgVDBbRkiCjhpP+3jhJtR4T3bTLKDGy1E0j/bKCMZ4QNMbjgpbsg7UOZGcHh2wHstYBFUVYuc3h5W0Sul9+TGBc5DGg6TnyEl4haelzmFtC5XJcqL5DXWhHuSh0y6OuRTO7NCHxrVU20epb+8rpSByGvLHmleNYpp7dhDr5hUO1TFknRYo3hIA1t7MDwlkUE2KxWgGLojSPH8KMFTFl73Hr0S+XZsfLn3Uvt+3L4x0vJ/WXdWy2ldnGHgy9iOM6IIChL+lmaNmboev8trma8+92zllNnZEdLDZO1LBxXNikVmdFlM3UtQKiqH7dGufh8NWu8JVuOXd4myq8nDhUS8OxRrxs+l+Fl01nwsumc4c3tPaF+5H3YZ6xr3WZi+eh99z6nakpvNM/scTMYLVyZYX4F3iF+FOVCjlV5cRfaeVa45x6eBZ62FT1EKyqhzOTlm4K2jV9CpXUC6CkrEQ/ZxlHEj1fg4ZTZ9YCvdlbdmst3ltr1TvyOmSFNr10yCVrGJxTwiuoqkM9uhleO5N3pJk7X7tOb5wWP1xsfNTw0jD4csOW5arq3Ys2C1eXz3tWYfP+Mxt3vLeS2bxm/jhHSVOb4kcWXTmatUtgsToJ7JGCN4l0bI6y8xXBokMEu8RHsXma2cxHFwIskjHb4CT7xnOHV5Nwv7x4/hqPnyO+aUtMx+bkeSOcdyLcOzFfd128cIG76DDPLgC4qCLk4DkD8+5Aa8PaxdgHLrR7Wje1q+S81Nnx99nlfa4SzGaIW1Gn9pZgQ2uRYMucxVVQtTbFP3lfLcfqGleUWt2KOjNS1sKdqnM9/QXdwF7BcVkLy5J+sPbb+2oZOdeIKfm/ClOyE1P/gIyN0qG2O3gBANuMhWjN9zu8rzsvHfvOQ/9qOtYzUCfe118wFfveQ9aaP8bOF/HirIi/AFCpYr2O6UhLx5R6xG1gXYAOHjhkO+ht1VAq3bXbCx86dP5rdpX2woVfs/xfhML8XChMeYfXquYHErTdxxjLN6CaHZUs37hm1f/e91kP5jyddA/wU6vbgn7Bbu52+c2/TDJ0Y9fZyilOBXBf4O7gLmr12YO7tHZwl7rjszSBbz4WQtbPVtI1uK/pGtzXs/hOnbvHSbW+fCJYRxIsLe0ArVtphT1RW0aPd66w47VHx6oVdkyU5hAgPF7JLaS9R15NW3VO+yinaavatGtrATp40In/kZrywuPElcGeWA7WLoAjgopwP7gyKXq5+BdhCga+YptTfHmbjWsxHLM1GI79a2jTtwYkrFtDmwG3jY87UzDp48IlMD0CkgxGL31oksTQJGnDgmQ9NEnWQpOkDSaSdAIdGeVOoGut/v4rv//xcMK2VF0tuWsperT0Z9ddYUhiSm+o3QixJ9rm24dQBJ7ild0lzT8dwrCFU7xSrtL8PWm+U7xicmm+dQiN/VOElB76YxXbcH4/UGK5O7sPyNa2D5iuYQ8sTXp7T3KF38UKv/Pev9uzqjXoFppS7ET2ClM63GNK8b/uEIM1DDGo1Pq/MkL5GkaLgd+xtTdi+HORjXuIfNwD5eOE2USkmyM7rAh1c2R1c1SLe4jquhnHdZiX2HvvsIeWHeKDPuohxN6s+RPh/CM7/6geuxDVYhciG20QX09tTCMb6G5VKPOeKiedMnFpfvJ+H7uAjbqgcQdNLIfmxFJUK0l60S5/lhFRSVL3TW/MvukkCuaDoTTTuSTEqhpilZuvsn3ZuBd45GOGIh9k1LtB0buBDTKKbJBRV6vpv/2dz/7pT/31s7/6V4ihqBZkFNWDjCIbZNTdqceIWiao5TJBHZmP3+9CB2X143+7H69E1wV1ZH7m/mWCOjIPuTfrgnpplTE2T9S5jTLbR8blftyfBngRfFD3YzBy/86UJYYFWiW1bHOCEvM54whzm1FaO5s+NJusDay9bFzVYDSFm+HPfTAqBaPiZLvlsasCR7Z3nAewPFsuA6SyZQ3Pls2Q6Bh0hbwJjM5dDcYe8xgTPtQt8FwYIBcGliGCOhcGNS4MLBsFlOxRmdAle6xaFaF5/n6fuBWzup6sp45UJuyCxh00sRxalTqyM/KtSh3ZI/YttE6Oqm+B0qUAGwGrCOGVlA6dlA5BSod1KR12xq0pm+TUOk/W8HykZngermz6w6I0v3Y/njmgOSR9dkV7tll/U0vLgLKTAdOwUjqHscdHhGX1YyKNMJ1iTCkkwXce2kfXfYdKvBmMU+2vTbXfTbUfptpfn2q/FVXLZirOe6bBqmYanWmmNKlC6ngn3V+miBaiarWqjwCYgMRytaJ68ffW3vx9DguCm5GSypEiJ0vHyaoHJ3/9c7//42hB4wvntQY4ZrzzS+HPrLR9XnSHGp6AX4hutXDD53psrwPWefYrHijhnKohnBD2MOK48Ck0qmXXpwMUvVRs4ig7g6ScWi4p0S48sbwRTqa7/S6SYS6860lRNau9OQkON77w0irh7ndwne+Hr9UaPdnR6LiwngO2etwXmoDXOqf9OL45vnzaqDKfZyuM/waS7ad6VB55vqvWycZJuZvGcYPPIVbPVoqv3QCvZctGkeg+vI+OKlSUIwyDwmdcmDmvRYVzFxXObVS4L4PRsGUwYsPyAZhXA8nZqKdwbuCdX/ykG6PiCqJlAwYxCJRqmKxEQJ1Vb3ZCV1k+ANhoIGedFeqUhZqIKT1AacsbGJTfWVaj4a9REOx2idAq0ABwkJR7PX/lxlpZDUAOLIeGi+Jv2EvIx4VL1T2Ot5ANz0NKLK1qiaWVSyxdS0RuE0u7MmOYH9daVDZyJ7ARN+cIbruFhjnSv4YCi9G19nOB4rJdh1RtGiuo13JrYylxVUTdibojm1vb3qru2UIva+GT3AZ4DT/5dZ/h6xizGZ6yb3AtzdSsltXNA9kWUzO0LXl1riiBCN0woFuOmGLr7Nq/CLr1P6WaGQbd9bTPh4W5lFwftK8i2+zaCbaJsvxcPSEG8aYniPmAOgtcZ4ENpA58MHdQ71npYNao610yBRd+XbUqKANS3dL6x1qFBMzA0AmNO2hiObQqmDuwWgZRq4BpgGUAsZgGaJtDgaOi9OsQcwpdDfQc1xKoOEhYw5u5aJ7LtshSm69m2aqUHasSE2jJ+qpE8IO92cWtSmlXpb9bg7lwRljye0Jwn0CfEoRh+qpv8Xo2sAx5Bz4NUvJeoDBitEUNYIzmC+/BbVretllWyNDBufHaa9/+gC2h2OlX2DeFxlHGWo6xFuhPZHnZZpsmWMMhZNhzWlsM5pwSL/gxMarKQNdmVkKX6kaXsuvRkrJni/FlLRKL4QT5YoQlP6nqSaflCOtI+YmB/Lmr31G7cmx0aU5+uFbIY6g0Jz5c8+uz0hz7cKeff7T+fcl/sfVBMEkjsv83Krih+eqHq/IRZqh0xT0ko+Q+g1pOf3RxcfGQmhQtyvMTE7MUAQmWk/YmvQ6yawH/uykp2FF4Q0sbyOLRdjMoH9kWN5Dw2WWZ75RNXODek1OgsCVg4dSBJWYGqaPsUmiki8CkO1JJ62PcX4CTdIiNYx8VI3lErLOVLpkR++N97JZKDDc53aV3NUW0NFtLSnJVH8iuSTFCbGPvZNmakgB5pODYqn4hLlh2IU5lL3NKMSttRuXfEFwuuFSPPHsaDUSefVHYCiLZp0V/YpM0whoEauUMM0HK0nyblWbcTGpm+u8olGleu0WrkvwRPpsLzQpl1F05MEH/6ylnKvj3zNzLvweL7ixy89jfLLHsUaw4Y574G7wmhLAXMYxPzGZHBOaWxKSBmp11NM+yf83hJH8uOLcItLl1WGcGdC1cIA/Hok6a+fzkjFLlMPP4Ycpsw8zlxCHC5ienxC0TQuMnyk/OkcVsfvIewA6uDZi0wGzqeE7ATv6MA/bKT1Na8aqF6NniiTO04D1bHF65RYISFLP68KRlk4jy7Is8+c9U68hl6tJYm8ims89ccgabzt4naxCUWx/T2avSPPXBJUqInH2KspVqoulvJSJaEPfYclyYI9kVfoowDSreyROo/V25i9pdKIH1OEZlVsTT6oeLxqO6MR3/wJa+iIWY7R73mobKXNAt0RFMvm2LGNN5LbM5crbSeRbmoMjKXGDeMNX9How7F/X0q5xkRMrxRpu9PEvbW2uChkObSUOSIK0gqRjcbZbZ8mS2FzJ4h+vTwDnisOyvZJHMpOCUH2Ul5c7v0fqqaiorP8fBcbPNlS+j3P26tNlN7OvUx7AfzlBtOO3SZjkBklCWE7cTNS1+uIhtXHE8LW7Y4ic77DvwsKgP8uiwE5LitpdTrJrAzV2IEIQIn2RFc1uUAsFgMIptccy2QIfgOrrdXM8gZkniJI5HhPKIUOdCqra4AhnoqjUz0DaHJ0UYIs4fLmh7wg2PYebmf+lh+Lx4Dr2EeYdfQvxKqKF0fm5QlM5u5XdZxwQCW07FFQXz+VdsITmUdYN+cnzlmWXuJ+t3069DXfNl/j1er5yXh1hJxEozw/JATukQ3MN9JSjI0uesYTY7jBudupCjI+GJJKwPsoak4S4k0X1NQaX32o4aYsWyi4lkPLnCqeeC+2JszKZyqujAXConHESyoeOZnUPy71ltUKwmPJjnV9YWbXx3Fs2qZTA8qUUHqbEKBZdTvTLAA39RyaHldMXlktzjTTjh9RRCXRmkx3mNRCsLxu7uVUf3d3JZL4CnqVwkvkPZisi6dDkvmZYDnGqbFgqWnmiLIVt9wu1TtmprlM8W3BYh8rksNU/ey3mwim6V61bVug1ct3TwMJgz12lgU3iwGR3OzKEN7HJHYNLIFYfze9xjAQxTXg1EUe4Ef/gxkzJJJ3RYnlHBqKQdFX4aIn9k0KVw9eNCM7YQmFwo0XgLqhsIjhgddJuYoQMYOimxr0UgO0rVUrMEPZ0RlnxEEH6t7718QkHPCQW1CYVuQpRqeJASRbfcisYM0ToiNHMnTW0ZuJ4TrQPny6baQvmyjbxt53zBjDPc3TBtLBBI2sM7gVeAry0qEQnvV4U5VC/0oC/9q/0iI1/6EEcONCkmZUgnbEk5t9fg0DbgCvUCq02hrrPbxcdYVX2JKj8frX7RAh3QG+2ZabUzkdV3KNzatTvzdodjIGbU3X7wUneinMFd74O8A/4iBwSJUXl3vg5en8d0ttR0nirDmJdwSPk62udexMInNZ4IiSdiHBCmOEQcxDq0i25qRk0Biig8fg0Tb4sW/Cejw29QtW6ybREPxKxz/MtnLSn0gmDjXpYcx/wSM/ZoyvZCNMOSpG2RDfDOTRIzjinXsLqlXlerOyqmD2CGaTFCmSF0jQkCzwEeE5yGyPKQDhZOsbJoEUqKtI6Uos/W2uo/K2IA9UW2EnYAH+G5cQEeyvtzGSS/fWBZIEZc5ZjFHbwiWJKJ5YiIOKLhWKGhoxoC3OTDRLe0m3CfPvskV5xffdzLZxvXqR9b6geJDoj6SIyRHXZclL6pxhGJZwZrVoZe0uOKVnTAGFHBqNBaGQ3D54umjnSkm9duKSIdYcGopmntyyPdNB9/5heeYVi3ZkBMYXZISRWjpG6YFlaMohJ/tmKUtBWjpB7AIBisGCXbQpF4xVOG0GbyMopSaWMkUVUxCvNYRf6ot1ZPxleM0rnE8jKmta8sQuLx0KUOdOeo7Rp3J8u42xFX/csSdwft4KxEXZ4YZcZpP42oityQXe5P3bZVjdbhngAlABY2qy10Oz4ps4Qy+gZO3hXSmo/SG0LSmY+BNVqGvCVVlZXmtt7PSB5bRGuchaAaQTgSRiPz+osqzVb1+GwNIT9drKqxspnXKtFq57OFQj6PMdOndVJXxIIiLAS9sKBWgwW1MhaMAsWRvcwNy2OsvYQbqGztOKDEXrIj/3HLxj77RPI2HdAIS/r8JtIbNxuW/I6ol75B3/nb7Hqy2OOCyubvwK1QmWX4I6wP5sMCGQWnae7je9iEaGFu7cXse3Dui4vqe/CKHjf//zvMIp/bzvrxW3iX/6EPf2hVP6T4w7q7THSHOQ0/tAyJ4hoU3+gkvtANMzWSoth5F9TwLrNEIHF/jVNVHpowFsVjmN98oJqunSRWCOZYPo5priVgILFFfgxL3tSxJefKB61+S87t4Z1hZ24neHNUCbvoNWrRY9TgItKQBQ3ZsGTaw1kziMc51u8Hv8OXexGGfTcZ3IqOHmx4PripqdR0YgQcorB0B57SIvD9uOuAmbQ31woJCM2z2xM0NzyLuzzeVRJ+PFGqnnhrtfabPws6bcuVZ85Pse5od0onPGK2iYtFyg3PBXg8mKI3p2gItNSBUQ5TFcv/h723gdLjugoE31/9fF9VdVdL3VLrx9atspx8LUuxMqt0K7aBfj1uyxrbxGGze7wsu+uBzOKp1tmxhMeT3WPs9rEwymIYJZhFBCfbcQRWBps4SxbErGfpzHhZJRGMAHOQYycoIXAExzDNOZqDAIP33Hvfq6rv668lOXGwWdw6R1Vf1av3c+9997173/0hGdvpGnvK1DH/8bs67n8wEPc/GBaPn/KqxHwxnMFBJH1HkONDjiBpSdxex+oPXIj+fyuZLGcrDjDOMd8DagLXbkq0aLc6LTpFuB6HwJ45RokHIUC47aRY0r1qWk3yufieynb5qHtrNaf6Pjwx+KGZVjdBgOjb21RDd3urabWbQlaTXr4HgiKD5/8UApYyHrlE3/vabvrjenHsZ15fLy7RiSOBih4yPsYhHcRyzgHCj6gTCnBuvFA9BIpjVoobhLRt1STIXULY6xZ8NFNlpcs8wwIfK9dkVbgglsoW7yMtX68qYk2ipuKw0cmcmOvmX1Ocxqvrf1H9uxfKwHZuyyiy8uSc+B7aEpRd/Jk/UKbQ/cAhSgcYQWC7+7cUHdeoPyYKiojyXZUZdJ55oOxC9oEygBRSCJ55oEz+a+hC9r1bcOcIoVU8SMPhm0mX5nsRYS80GOhC4vrH7QRTmjJqiTKBiFpIPvDMA0Ut9+JSHUKXgpvSaGe0sC5UpvJAhdBKuk/4VNbnd90lWAvgJN+4ObDP26Ix7SgpV88N4p2g7fPCEZNuUuFRjpubQNtzRE17OQPPB+iQ/YyopjlXqn0npafTSFt3spwtSRAvVU72huYQyPyTyA7HqRKOk66dqox7urdlEeDm9ewCB+dM+MB1u0j+WivD0TY5pb5PYv8V2ce6VE/t9kmQFCf1+n1pXXjBHiXOUlhsl5iyfybIjiY/K31lL3NG/FJy2hwxh4sT7lTY8g1cdYY96igjWBbarNDc9i5RlIHdtTBiYikFbfvOyjRM7EihIbDvXiDbx87+jGyOmUFPqT11/mbVKChEHenyMsVww0ZCmFtfbiRzBJcSIqkokyUdS+AwA7t74Zm51+QjlK+cl+f8HLkbuqRieLup1Hb3ftD2vbcdwlnJAIorCP1cU1M6v5OlegrUqKZ0XKJs4ap/oAwh+t5MJFQABzEnmRzzCkKi6MINjjvsFzjX4cEE/WelN9KCvkymv19r1jjhlKG7ji33Nf2mND5fdSlPCbFIl1udWlu1zb3HSzNfb4F+kE08cGH6QdCt8wvudMBQ5gj8DGU6Ex1xq7CaUuMU+lb11Na+0LfeiA8469CqTHegrF4YGTdBKEL6k3wJtaJzLk6Sl39dZdiHCe6DvEEYyohz9OMU5ObrKjPNW+Xf/vpHl4XdgG9181b7t5/FtxP4VjVvjX/7yY+yuytyYl7Tn/ko7tSwvGjKB1yeEhjYlY9TX3+AlPSugLhBmOR/15fGaBscbyBu3RFZuDCiRUd2kL24oMo4LMoYp6eEmPvCyz/ys7/+ix/7v/5QfE8W9UM57STtWgIZIPtv1UJ6LjNYix6oJVibjqKajsLL0RFVgzRqX/kEOd39AM+qNqiReBUTr0qYuC9V2hHmmzHlqmbKVd++KfdM/5QDZbOFkUQbo4wxRhpB56P/7mPLwm4cmCn1LHvhY0NmSj3LTuDbvD1T/vhjflaKVfOOZ8rSx8n3e/VMufiP1Fa3BdO0BctfwyX2mKrKAET+H32SRsm3S5T3j27JkTKHS8dvZUu6U6rcxDkVKWUeaHtW1Xp0ityu7RlVlaKtWz+lKIC77qlzqliH12+oYj2+Oa8KyrO4oopxvF5QRY7PL6qiJAH6WF9CRAo0fgo3Cec5jZyq8in87rwsN9tsH6d3VI5+tH2VM9hNgLYX+XYMtL3At1tA2xW+3YB1vCKLjXg9LoutWLeuSjpGWJLlVXg9ITlz6FlRgcDVHSVXvUvcRcklrSmSlPjEInlCnG+B5SJ19lzrycog6HBwZxQ5SZMK74wGjUvhKe1QKLhLPkOXA4HIf0Nmo2y2hpDXfdA6pWcoY6JLl3heVvn1aUopPP+bOsNp4jKc4nA5k+cZGiCnOP1AoXxyQgq073I33lrnOKU9g94l9pMELg9SutVzlHSomNSN1CsoBWnESU4jl+Q0rZOcCoRdTElOhaXcU2md5JTcTDvct9kF8H2wDP5Zn+TUt1AnOY04yangPdRr8mARW1MIToi5t6or2lsnOcXtRkzvd4n3+iSn9IFr/hgFROckp8cVpxhcUqxbfUIVASUvVKXgjIYBVaZY6Y2wUpztJ1gY6QjNf1InEPUlNbXyvgIZllVWQtSs0zgSmfhqmooU/0my3l5dkeSKgr6KEtbyBi5tasqgT4poyKwXEB0qKRsRh5mSCYxQvp2sTMmuFqHSlzXVQYCsZo/zbBx1EELqWOJHBBnT1OD652uoM1K64l1Xg2kqVS7p6FnFJywv4HWUwi9QZsfTCtL5bMxxOKJxl7bylCoTO3FLRgg77RD5gkPkGVXEZBfJyRwo2zkdTa9xVM+UX8tkNr6/ENCdz9bxqrQugWyezAHPqooJh+Um8kWfUk8o5gCKOhzMZ6PUMDn9X+oTSjrrKNIndm1oz7OE46rvKPMJNaM+yAcF5wR+SRll78avbskow6dr4oPMqKj9PqNYQd00WYKcxJCuGMFrzSGPwWuwZxnlVPBv6nS7JutwvxuMvNjCiMsD2ocJxpBYhRGUTMLGSKbJupBWFOe+xkh3PhthVIx4/uzA+ap0yUSZRxu+vSArpCLPpwMedzqtXsERZdPqvKtpLdhPekgLmOQz9BoLbdBf2wK9aiH7QB+uERHMsprm6gZDn8V3d8POdvNmi9JYv+SYPJ2zdOoE1p06gTWtcL0iIi07rRT3gJ4z3poZIpaKQ2vqs3yf4joTnNeaUrsfLJCPCGuKrprVfr+EDDlglh/Yr4hbshCS+QxXzoQOnerE1ZHr+2Td900FKQw5ObWxhg5BbcReKlQzVmhm7Xp+xOCJEKhTekkV2xp24SGF7MS4NGYfBMGAOyeqImiZiNBSJatSzNM5XeAOMkI+p0NBurt/S0nyjj+nE33ndFcjZyalAp3TKSRIOqdTzmI8r48AxhNQcDWwvju/G7ejhs1M6JwuAM711j6nE805HZsx0Xa7/5zOKcKRuJhr3oMMv4u86kBVKtg2B0e+k5J9bftOOsQxbmbTuDm/cd7gZAy3AJwKPBMNRiQl7sA2Au5K0Db2oiSILXOvtGI6WSgFzUlEQZOFlnCDJIr0zqi7mxXI2NenCgXbniq6dBLfoge26DhOymBahuslgmcZz5cvS6qkgP4pgxUCPFWQTfPwagIATix2Oe6f4LgSGte2pwhz3AWypA8o4wf7bPLEfkHVXAfnuIN+iHw15QgrB3i9vKcYIUBRpCVkJJ06dbZop86O3eZGFWzmQh60xOjqDecJenJRNk/YYXdF9m1Bz8sZfUwN2YKeGroFRQjjFnS+teBceg96TOEetJukFDyK1hIrigxM5vJD/w4HXr2fE3QjfGL2wArdOh+5dZ7XIQ0xZTL8LYVT+3Wv1lbyUt2kJpU4V0bmIZsHMX/oUCYoiZNbGJkT0PpOGOXUUITROlP2aVXQLuA1eRAEpW6jVMC+27HbnvjuJ9PKCzT2lz+8LOxOJ9e8I4GtZhau8hZe5yWbHGi7rCteu9zpmLYn6cmF5glOpFfkjH4Wcfe4ruyxn1h2xx+P6cq+8uP+12Fd2VP1r6e1d/myJ3QFE3x7XFcwxrdLuoItfPuErmBDa6VC4a8mLt42LLeeHKUuntXEYfDBEV2BI5ON0+qYBg3ljL6IMMmn1QW8jk+rFbwWM/o8XtdPq2/gdd20OqeYvJ51AiFWtehlpTHCzynFHvPHdIUbc/usZpuMo9LnmpxdwFmiKzqRKkf4RKqT/5M1BWDTU7OlYjwYZ9wQl6O0+SjXUXIuf1rWU2m5fswI/kZyKl7jzLiLLid5ZPoxPXUz5yZLCwmhM/nMyHUzQ55djFNrKFIlzqaWWqdQX/UKANycPSKrMoekOfIykBBdLEruzAR2JuRMknldxrB1D/tqwQh0wFgB8ZSO83lKtVnm+F1MzLxUMM4WuFQ6hW5+KxWis5fTlL5ya9WqW43PqJtZQZNW+Ptm1lJvx5Iv19tLSiNs7AuCKFmxCwrXWD9w+mw1rWIUGskSgNNjCrJZ7s+cOaVuLra5anrq9vroYNuMV577ww+UMgl6Q/pOsEMUuPzwxi5S9jlPEPuyIGlQqmDEKV8Jt2VSIx46PbW1HB2LBDGqxCXTjd1nAVlDce1lkv+hdAdZlMDr65zxlJgVJdVTwzp6Lxby6ZFcSj1DxhJtTN87o3Me0MOPLAt7FbXTNx6neLwUbB1umtR5DreUPQ+BO9ECrkpqwmg+8FTXTxrjLdLYOUAZ2wcIY+squsjJ3iCazxSLUeqyJNJTtxcE21uLjCfjiKOv5lhsvM79nlfQGJCM4F2EKEmdbWofEbAmnIlgpCGCGv8jDj3nRDXHfbFn6lvchd8FhnK6L4sZfSuYuXhGz/qcuLMLPsLse8DghuKIBIPrzGG8ptNqsckJ63wqOepNv0exarsbexQhdf+KBOPdK9XNYBAis4QCsrCnU9WeEswLt1ag8j040u0F+2JvBUXOAilCfhZRxOEGvf0mPaCBnKkfGJeMbjvZ7lPuXZ97j7G2u/mNKLW95jdVBc1vamuyyd1n6hTafluwjqBPfPYyG4YMNwyZE+8HXBHqjzrut3eEcEn+CejS5tXabcCACiEYaCOuje7jltG9ywmV4Q628QpdQyLmLoXtLr0elcZaYw5qt5W/62Fzmnh/PGzYcMuJ1mP5XhIm3ur7YNhgZmEj28GZWRi7PLQa1wKYQK4zxlwHR7u+pujczALb8m+mxJss30hnaL/EwN1k1T5+8Lh/c1S6nS7rZs6JKr+l0fvz2I7Tqxf6lUqn1Yx6QrHQxZrt1QVYs31MVfbHfnRZ2K8Jp5DexmIZ7Y9q9dMQrRWr/XFj/JuycIjO34dX7Vx+WcXOWB/YiJ5oPeEGlvpV78eoAfvYY8vCXufUVifxx4mfWBb5LyuR2KX/bVnYGd7D2rP443M/7d796/9ObXQJPk3r5GVJV+WEP3k5puqTF6RBd/JyBnfZlz95GXYSc0aXoT+JcQjTzSiXVb3d7jti0DP6JMm553VBEQte0cUmfLOiiy34+6JmMeZVXaA4rhdNsRlErYat6RkhhjPDrihH7XwSs6LKdf4k5oiuT2IO823GG2683YgyDMtN4zgllT+foVOgDl6fVsUGHJ1xJzEnVDmB12cVn8Sck3wSg7LwOemPYSigKssX2q60YLJIT863nlwchBuO7Kye0St+7hs3943Dp+D+tOb+ipv72UanOtT2jOmf+maGVYeCQjHTJ/n16TgdM3xNloLPYkDwiUPXj+AM9feUqfJ/7hAuSHdBZxJjCSuIETgj7txGVzAyUBabeEHTIQ6//ops3u/LRklNJxdGdGA0GdHsxkKNInE+G2FNoj8uor6N1JrEkVqTGLHCUPdUr+y6GqA+JgqsICO/KE0SVhsGEFl5sBh1sq85VBgso/tJ3R8fBaRLTFmXmLrjo9H6+ChINyYQ0fFRYMnnfbQ+PgrSDQl0a1Wj79smFAprc5akbqE+Pkr5+ChARNHLIrKmCNL1LvaJryivj48CGuB6GuCYPz6iD1zzKD533fHR05qVPCd0Qelpj2tWxi7pMmA1MldGjmZkJBnAqN2EYmRqf/fjlDCLjnmKgPUW9JrMkAdeJ5CSqtAd9owyoBIIDpWci17xmRzOHzafI2Kx5pCv6BrI57MJBIRbBpZ05d8VrtNET5qVCJwHmJQIeJu78amkJsOXWmR4C6tkX9BlZOP78cOeelmz7uusLgJsfCP5ESKWPRS92r2Bl59+T/etvOq4xunHq9N5iZ+W7sg4oCOghBmlV5kI5gj1OTHXE0yrFzRPy7WaN74xDm/S7ki78WvbjevEt9ZTF5zmpb8vruV1rYJP676CxzUXFHUXaQazpl6QQp2O+PQuIZGks65NCgF5JtOJxB16rkcYjzOMEct4XZ9wrxghK5LR+IpkNMbNBOjwTPLayMjNFVUEaTfhkxJWUB1psd5n6cli68kJenKxf2FeUTN6SQ9hxmeGMmPETbMRuzJuvKSRG69L0gmiBNkwwLOSmAPN5xdliwWO1CzwjGx44AuSmOApSVg6I4kNNkv2LnFKDuGHkqr/gnyjGWJ2CYaY1hxpWTZ4/LxkRC7Ly/PEbj9PJMOHk626TsoBrtihYf6qbNhi51tgi50BthgwW2yffrfZYsBssf/1t8AW6+PMfD5LKEJiwxbbB+HfdrY4yVN18s1li9GbxhbjK2WL1MUTrbl9QjJn1MwZP93HGuezCQbsWgzyEozx2dYs+KybUc/K1bwRy76kK4jqww7seMSHHaPT6pzmQ+eXtR8tBduP779RvEieFZDPH6ITDye1ndV88OaIBcGCVDYC2r7MtwHTU0Gh6NkCzINjied8F+8/2WZ1Wc3qjrVY3RPM6o4yqzu2mtUdXZvVfeRNYnVHWoj5sEPMkW+S1S226loczuoe/jaxuglmdcsfd4aFA6xuglld/+tvgdW5ioayOvfuH9IO8O8Lq1sRzdy+lzmdYk53kBhdxzO6mqe1Gd36K9kBXhTNHPifeTp96C3G5lIfq8+D4h6a7h28/ectJpfWTO6caJjcB4nHnWXbx7trofauIZxNsVHlG83YRi7B2LKap5xpIeL9jIg7L8/Wkn62xkZZrZpuHeBqXTbzbJha91tgat23DlNLKS3Um8TU1vFEW/fmMrX4TWNqnStlarGz2R1he7TU2+2yhuu9xNOM52mjDNXRPp42wg9HLsnTZhdq+rc8k2aHSLWyEf9qFd2Lbb0aWzH2IZtZUkQUxz0h5rSoK1jvjBFVBbkzRqyNhZA1XlBsdrii+Js3jZ2Gb2rritBJNHe9+F1yS/w9bfP7Dg2ZWqz1jBzaYD3Z4USkGml6d1Y7uxzNZObV2faPjiwL23Na7XckdEwz4e1wVlRth2MqRlvb6uaCmtEnDWj7hGlb3Txu2lY3j5m21c3nTG1186xxp8vaPm0q2OhscUwF484Wx9S2ODRP7HLraIPn96nWk2PUxbOmtro5amqrm860WjKgYfOMXjRsifSqZguli3jdMqNX8LppWr2C18lpdV6zDuWkU/5jVUecarwIcY9tKjqcOaMrcrVYMlWRuVisyXbRPsGwJw0b3rSS0CTs9596BpWAnFJmRseQ0DI+5g6AtYCET/rcCTA9OEsPoHlwhh5MNg9O0YO8eTC7AGNNoIwExuhuLyR2b1WsIyOawrhYyJ3tAjr4BQUW2EBxAcrIxUb7rr7jmY6z+aEo+94gYAIf31yMQ6eOsw0Zm37g6pfxqfo4yPzrKpN1Uy5euemROYK3LRozom5lX6Yo9H0p66qnfbT7m3FcHZtXpYBO/knF1W6ACER+I9WA32sI2dAhtKPTKnZB8I0Pgo9bj9BOVtBxNhShhYozAjjIYUvFZjpfxo9u57rSCjbTkTub2XAbXJlrbWRaxeyy3Kq9Qz88kFzJwQapyXLzjM65VXGpJimM/+xCKfLruXbZghFWmIMgoCCkrIB1bPVEAHYxYajqjrNbCu127E5jtxTarfigsVtiSLTslvyQsaNx6vMKsKlHp7H66LDVR6dl9dFhqw/OpmBnF7zX2HsGrTuk4Qgv9rnGukPak411R8fZbuA4a9sNyrcQ5XtwtNuRR4YIEzKV6PTUVuT1B6pS1JYg3k2OTCpwbCmn2us0xhaMzcY4w2Fvd/ObMjO0jDvIliduKDdyZiAhD7o265ioj7az/gCDfTYQE7gvHHeGAatCVTZfZj5oI2TOfEFA5swXItpxXjZyaGTlQhnRgXxWmy9wiXW1+cK6lvnCujoM5DpvvNDhMNupRgYIQxng5JvGACerYtwxwNpokhjgxCUYYNtcUnpzydouikysNtTmUKvZIGzwTNDUTHAcn4+vZoKmxQQNG/00LNCwpaEzaiwFGGSBVOmEY4HGz/EsALNL3JxpNpczbftJ45hE/SXFs5eeTzR1mG/KmKvkgZbCO5O+h8EF4+1OjNM2YxZZG4j8vyADsg1M0fkHYF3+X+JuOmybuoVDrSEdmzaXYdPRIJsOBmp3YFrFpvsapCavlE3TyjBWLwktQ9Fw0FA0HDQUDQcNRfsZLlYIZkrMz4gMQjuBZX9DVC79QGivwge/23pQt+fzcGBvdombKQsB1VnDx7jkFDWHoYDFjJrxmnOMr81/hrAfeWXsp2UP9LrYD3ZwXWM8xfxHIf/ZPZT/9N40/tP7B8Z/5l8HAxJvPANy/ur/kBlQ/jYDepMYkEQGdFEM5UD3QoKlio5jBvF2ATFyK8G+F8QMxi/BDGKO10PMIOYg74XCp3uKCGKfgWyVRIZSgWMGvjmSj5ABdVazA2rFzURXaWHq9gS3J2nqRGzOSvm5bsUXgnLQ3lRB3Aw/hhiHr/bg7pCoP6a4mI7U41Y03HhK7fFzK+6pmy47t/ykiom1r25U301D9j4PsctoQ0Mkg02d1COLYJ13ecAhlsqPHsmOEs1EfqsOccOWYju74O6QQd0Kcc2g9kKMDGo39gZ74SJjvAdiMNPqHohxDnwQ4Tet7h4UhQTHf++3dBdtS3cHaBzSr0iIa/FmD1e8G2IvCEDMhM2Ek7KwFPfUOApLcU+lXkRC1Oyujc/jtnyTVzRU9zt28s04S0LxgKQUN/IOY7wtWVFNefM7biKbEpZjd9epp+zEwKQnvlAz02+anBxXa1uefyvVsbsFcpSiYfzExyInJNV29n/XglzM7AnGaoY21mJoYw1DG/MMLXGZf1g5Hnpz9Le8FRSM1X4MyP83vi6DdPL439gYpG8yszDJ4MCZ47h/bZD+tHJm5yeU81LwBulP+DfHvJqY1eznZcsg/Yzm0T1Nr17uPxt5Qc+o45qPJ9jGd3UBtvFd0m2D9BXlDNKXdG2QzmrW1YcvbP18RtcG6dg9Mkg3jUH6efr4pB7U0T7besINnOg3Ql6iBhqD9DPaG6T/+GqDdDNokP65/yjVOx/qUFrFoGWRflJXZegt0p8NmlhABqkUBg8o+/492PfuwUuWbZmpLxlvpL7EIzct7TSP3PSP3Mzoo3RydtIURCnPmSLDN8umuI58EQxr+k+bIiWjdlPsxN+fC+jgdTlw5uLPBiWZk58M2Fz8oqoD99AJz0VFp6QF3v+lGmaGTZnUlkiHvhxU+f/IA+LDvSKFxLXmAitgwU5fIT6dOk7Bt91rtr/m9/uyPst/4kEjgVS6E3tb7E6fLfY7a1vs7B1rhXOojbDjVUbYIr024WANwtvpFGVUGj6ANnSIpkBkkgLyvDMBkV0LcW05HdeW05G3nM4Encm8I3H9f00eLIU7yEY4Yo9pyeJoiKK2l856doR/jmGxnm8GgRS7o+Ql4+Mr0mkIs3WiF+dV0FPHTRkxH1ihCLyCYs9akX8/ufXT06j1FOR8pmhFwaVrPY+SiO1p444/cHabGXVBc+jSFQ4PsOKOdAXo68V/psOnv+DDJ0nxqnQxhc8u6CJCIHtsv9SH7Wv7vfhjAkRJJrQIs6wgnM6pYke6rQkTwoXvpsLvwNt/SgRwrScAysvrKOD7+PSFTRbuqkngzhYJXD1IAu9fmwQASeBqjxsUCH2N+5kGbm1oYNuaNAB8sNqmAQ7aVHgasFiseNNoAN54Grh6LRrYPiT2FLOg9xINANOALnZwHSdkU/gEW6td6wwWkQq2eypYkg0VHGfrvGNsnbckiQ4o1IHeJY5xJZN4/zOyDAjlG9huJSSjlJ3It0IyM4nSrYlHy1HZoP8jzn7uaO11E0FQiHRLAuF8tiHpM3DhJgRWBwFiequzxvO1OSu8wI4wVX1YYqmNvmFEoKeHV505yUXNMZsuuLP1FV1G7uAdd6ZPGI4YcczwUe/jJp1k+gxcbEdhQ8oIb/9qsQ7ISOv9UVNBAMIufWJZWJl/P+8iJqbVUUODkxS0hOMhUhVhuwrlqwhbVRD1HDXUw2wyqYf0z7jnmXSOVjtAv0cxGZGFYRttbGWYbWHTwpJim2WbILI792WTHlIXWzO0ZZLFZjyMoasSGIqPldan9/aj4+CVYCNw2JAtbGSG0veY4dAO1oB2Gz1yKHrkWugJmkT2NcRvyVS6Eed5hNTJ5+o0W8upGd7OYb+n1QkDUxRshlzPFg2XPoEiJHfhGt69sIs+ndr3lEg3Jy54lJ+kFxlR22lXwZP0Gj9JV1qT9IIkx7jzPElXeJIyRz7Ptsm4uT5YSM+n/1iWoi+AXsZLxXrarCM2KYj6WD1hz7Wm2NccGTVuclw6T0Bmwnbcz1EfRo/NoTOiEWfI6t6zi0Tc7yLRdS4SzjgsStNkDXoJHL1IRy9icPYGbvZKN3sFzd40aSIJmmbHFNhwwQWgFw2p0GpBJAHayhvE44ajAPz5w8vCRhxcsykgqEBNXAICe4Kjnn4/p5ry6b1WtynbbXJOx7qNebaCYnptV9niBeRb97hxpN3PFEYcU5hya8sO64y9uNhXZLMk7cs6rqWY7bCOusWGIxkZjmh0zDDwHzeFQcKxIuHdQgudZ5g8KHGZVUWUsvPLb8kixEcUcQ0JEAkGQiLCETDzWd4iu1Ot+r4gi3BQQqg9YYh3lny4TosQLThk4LvcqsO5o6xjF5WGxMbXIrHQkZgaQmIUN8sTEISESslh5hvqkGTn3GY9sUelgrBGZRomfbWYPhqbzwwHtWhIRK0iS5MQYw4LQd5HuGQ94ZIZtIh/rKHNVusN4/NE7BS/op8B7suyFpntmFPvrzdLl6Y2NcgA07wVsnE1Gd7CgONvHBzwm+G02VmLNj1dnvQroOJl6FclYta5FmWC4g82i33gICYJYmRQKW4QP02wuVH8lEE4p2MJb6yPsEjXEkUX6cnJ1pOLg+IqQuaEYaMoK6bVqYAVMcuBk6wFi4Nt32CniCEx6Alq4lTQp4dZDmbU44Zj5hMiV0gPQ9IsLSIoxiL7IVF0RTXrzApLr9vw/s8VrTNX+3XmvGrWmVc4FfU5ji14XrXWmXOqJRfItlzA77+m1hYNkNgz5WfgWdXM1xcdvs6qRjjQawoHxkf5akkHZ1S9AaHfv6WwZPCmyQfmjZcP1FrywTbnzu/RfIphsZW4qSKOu4VFhKjYkW5KbF6IxO1cYph6qug4vUSrjmWu42rioEwqV3lSOdkilecIcxw1o6dOqlpuYBZOnkxclUsi8VnlN/defnjILZEoQ9gcwkxv9mg70aKRTyvenZ5QbJ4dFMISu8QNdtK3WgzIELxjjTa7yB2+wiXul/Z71k/2k8wbI0KEbxERIrwyEeKY6hchjqnG++FnlBMhYhYhwlrKawH1Iw5LRx2fcGiKh4gQXeSqrU+PDODjw1eEj7e0EBEkdj2bQF+xCNG5IhEiHr5YyTWXN7KA/imDcP1p0zCYY4YZzOOGeJbtJJdjNIstJrHYYjQPe0azg4YTwI6nCsNcJ0zXJ7giezgINv6WN4pnsPufMZTIi63DIWKYIEAIMEkR8ypaTs31jjxVSAevCMsIXpuPmsqaQ6UkY2pyO5DsdvCqV8HXKMD9Qh2U+IRxGwm3sWDgrwLrlcCOYPY5bmHRNObYhPMBjPMacWXgmJrRzxoPlgTMPASc2Na4c47VtOFXKL+fKtzMqBc9hgruonDHUlvMX9AUdhS60+qkIZNtU+xqU8KOOYF7we/Zgiyj0WorBM/PEXieqsGDKx9HhTlB4HUq7WAea/jhcmou/ABMPWX1voOHsgmOpDnRQtIFduxA2mUkXdSMpFf1ZQhivXeo7TTpJLw7LevWP8uCqiLXj8HezJNQ5pxA5OX6G9RhQMddrOQpOoxevPuR4l3ufmXbI2mS0PbyimZgETEGh03A1PmmdYb5puH0i4dMP5MUO+ZEGn7b5mAybEfRSeZEUlzfdxjyYnsw7PDSTyW481oL6h0GdMcfsO1ysZl0HYT7lK5gau611157bfQReBdcf/hwy28INOyY0cvaYhWIegQIiqwc3n/ICHRy5YSNU3qEI+ebwrv+IBfCjxL2kHjasAfFCZLSngH5zBw8enhGLxkO0Gr/6sNkNEEQy9/BMs2omaWIXYnXY+CiGbhATY0oEriASuU7GmHEuGjp5Tvb4siyntEr2OIrfc4m3+hzNnm5z9nkBNV0rH0GTU+WWk/O85Og9ho513iN7JzRZwx7+Zw27E9zCq/XzehlvGbT6jnnTYKMh5J2aIYLVnHWyTgUmfWs8xYhLxEris6cKKasIF1DZEWRWlGMzYniOiuKkTlRvGtOFNdfI+ySImPAtY4dLfnxmKqUU1qUu5D4djwFO+bC791CB2yUxYDidV4UFdkGOAceskMi6w3/AATd3TMnih3OjaW7XUDX7q6KUTCUklmwpCEoeDf2jn1dyHkEpD39qWVhM28mNGZw65z0VFx2OBFyWmzCS15I9y3n0DkrqjKATolbkd+TnEo3GMh6BMqdpHDyCoorvkvYlmMr2TdgVS7hzt4KJG721S5xU+Gymame2lv2V43vd9ey4QinpvG6yP5zXyz67lKwkChYLUmaMFJJjuAUD7jtXkUDoJRqhfBp1kgXOYJ7INZDjnBWI/ZaRdYeYDWQeh1kiu8pw5rvcpNhjSotvIZoBNdx1zby2cBlGrqPE/rfW9CvAxxw/Z5yhNkYJfb9AChcre7kdKO3p2q49jG0UaN9/NqnavURKNxL3grKyhvE7aR7nBJi7g+++qufeuoXz372gvgeyuzuyggsQ4g6JUjFk//QUL1jqzXZbo2g3V//+ylXJtUnuT7VU7fSEDNKcHe7y6DPcLmPIUCrUsQgGmcQ5QyiMdY9DisfcPl1XD7k8hHzO8ob53E+6egJpzXSVJeIdVMxgk/UrJ6FEad5dgrGEZBETgmERWAFRKXMws2UkLvOHuUrHyvkKjWj4qNmEgBIy8hbhfVElhMJ56nyFcQu0o9LUeUIKFuDgCSPdv0qAupXL0rCGKkX1w8SAKnK1jd4JB0jo2w9yPyHvLDp6zCriOj9XsHY0IIaoDxSL46ALARuWYimkbTXt0i72xAetkpYbhFmAusblWJDRGFDRGOUzHsIZXTXoiSfLN6aQ77v/xLy+aybjiYQ0SDWpMvhdFajURYjeBGsIazpzLf2IrYW5/+SH4obxPvwcqO4A8GUgLpe3IGfv4/2BymoKX1nsYOGWgjmO+dF5Wu5v9U7JJELbF++jjOW806ceilpOZMJkjmM0dTHatzQm2o4FaWrZrypxoOOkXNEEsu+j+zj6JhQTakDnCVZTKsHcB/bIfkVea+CnAIDKxijwMAK1k2rRcmZux9ANtNh8PA6gVtU1VMf8ps61VMPIEh76rAsCAWLsggpFQtLyCM2vr9IKTgIByNNkr76XlxVX19FVH/aqo/co8ece/Qo8g9yfB214845ehSn/RjfpRWOBu9il6ZllLMBj1KOb6zi8vCi4AbBlZRMrCxSUgMUIzRMLMIxlCG9UTyMRPCIrCB1e28FO2YY5iP+axjzLtD8iy3f5iGah5SzDUTOKHGRvPRLB1/lgmYj6OxhvnXQEwkzTkhpg4pjxj3/fbyS3Yt9m1YHeAj3NHay42072byyLyzVprG4AbKnl5aFs0UX9vnmByUuuRPUnJzRtzKqS8ksxF5cYsU3z1+Z/66kyXyOqOFMbTpPaUFvndF3cRrWe+z4/ox46L3zfD1AMBide3xxcXFZzegYRjnt96iNGctqSt81o3OmEGrBqwaUXZLszGKlHSfLVHv0k2QpRxRpT+GP4086SznYhBDoOHVcgnSzExLatE2rHiQ09Gm1GxI7Pq32QEKJb99Nlun2tM+Bm9jdyFkT8leZVncBe9IgoBL7hKysRnpI7DFZ2R5/cFRWc0uLi4s5+8EckRUJmMA/KaVuYs8vcUpderAoIcGKHoAEcfAhSOaA7eLVtLqHL3dTy+dEhRw8sc/XHWRnnGnceyLIEru3ypcUjNqIAZpM6ckZgnBakReih2fC8OxbWbvOyB0ZVpdCYWJLU0qUU9j9ro2rEi834RZciXIHPYXulNpTXsclehW4slCBe3/djJ6ELva+DPI/lLTLhiD/E0kN4jLT7ak9lG5nb7VLOHPUmDIDcYL2qJWKP/Kp+HE/SQbXZVgn448qu9OlhexSvnpP+r5uxFcXuj3x3mnRoTu1Z1oZ/mDoiGm8w0fLAeZj5GGkMCQr8h1sCX4dQp2M2Ley5Tmn6uwpAyEPJPQDCV2u+bCyJdmzQ9gelYFwweo7+BtrfIb61ld//PLP/HU47b40A19K/6Ua8uWTF8SN7jtV4VeEmy6Sksj3E36IFigmkPOloLlO0OU7hsgUkmwX4UBn7l0QVuRfIxRzTO8uySv8pWMY9KmZ0XdiqQ8yHdxNPIIAL1rF2DMIe2df+dFlYa+Bbr6N+keWxxBjmd3sejCJfW1ZqDNe2UqffhNS9/pc2IT6m/DRedHumb57Ru1JqGa1h7BJqw9juVunYE6wF1u585Ou8z1vOd7tqe3uGVmOp5TAl8z8i50gp3Rc7AJDFl1Z44JHUc8ha1zwOH1F1rjgUSR/yBoXPJZ5s8YFj2XerPHBM5DR3T1gSPXWJx+fkEPl4yXJ/mJFwjJxMeoE5nOK5VmDXKTcjCLyVtiMq9dVnCDrpOQrbbKPqQqugq2g6OxX2bOyym/Ov7d/V+8SrWW8W3KZAGnZeEIVEeyiBEyjCLGdtBpwgavpiC89UBUbQWQSIlbzUkbqEwqXkoSXkiZ4uJrCGqeA9r3HKal+QnQLCc9TytyYVgUJ9wdsulCMYdcV577ENZFvN3A3ii24UskK93M4NHy1jUeNt+tB2dOyKgCUXZZVUbhtojlEe8GLoiomQNkTqqIt5qdUVVyDw9CzIErJMfspjw3pMRW7Tanv453eXdwkrdS4LfukaoFbws78H+Mu9wlVrMqqPAD4gAEvedN/VPatvryy3zWjacO5c0afkLxRWMKrmdHHJGxmt4yig2SQF10GE29w8l/xVKCQ1POrIYf1uJgEdf3rid7OStcdydErCmz3FCXcKygLOuWg9UEeAN+epZwk0M55o+aCGX2yafKkrPKdfqQ4wG3cnBKwjXaYTdQjCYNdOqUcVp88vCzsrwseV74NazsrnbeU6qlzstjOJYEEpJdleS1evyGhwz5k3IOzkg+vqAjKW3RYkzf+mApyavii5M0V0ois8v8Tfx5RhOoebtR66gOsQCJtgJOTyG5XkrrNFHi9joQFOvpVrWQISGnn619bIPdzw4FUH8NhS8plpeyRH8PtCkJiTs6oFxRP7ccUKO4Tpb5ylFfKaXVE8XxxsFpSMI71niREjjMil+uw84r3OTJ/V9pN7EhBA9lPp9mRHzML67MLtZbrZqKwvbSxny1TNicJ6DhAeevbAG/fW3Sga+VBUjTuQojoYfPgIf8/dFraCtZUGKfCyJTtsLve4oMHi47VpJJ27+RmSLmXuytIHTreXXRqlVumkrru8pZM2dzpQcRmuz4pAggLChhGZUjlHaRjCevXfH29vthtZBOodompJnbbWOJ7gZMvdYqNFxTLemdUQbR5WrGm45QqOyy/dehbdyBrVdEh1jBiA9JMaVy/Xv1Ifwbajk9l222OYbcUHU5l23HMxddAuq3VNbgctrKvBkrs6U5qrShGGN4JdA6VIcOvzle7685Mw3VPZcYxZVcNsY0zCkV8GqS0E7dgGRp5wPLbccUcdEmx/uQJlY4mNdwoXFofhCZhg+MZlPpzQz1hWXo/SZ+V+M1J+oayrm6BSffRFvxosj3LO9TmCGuDrnvKSpKj6/ZbrZMWApgKrCg21YpRooSOFZRC0WZ822jJirK0uxZGTCCEFAmU9t0LFD+vsz+TdqToUDbm/Kyck8V1uK4jqyDqKe3uhWfmXpOPFFPkWzeJbZ+jci2NH0wVO7y2r+za3fubR1373tuaX44i4wqm5sRcN/8acZn8TtYadrEbakrH5XW4v+OGHyin4LrvzURCBVQC6xtjtdGEMVlKmimbQNJ87HqkJy0EE5BBQRc2HUJcp1kCu54i6ZUB7UiElz3O212829W0e04Wu3DXvo7fvUeJ7/SL4Rk1o4l0qCuEyjSBDZ7Giyv8htQNvEodUVX+klQP1isgK1ZwJ/QeT2VNyReblZJOd325BFHEGxysfL3v0DWI3Al4NzP53bhZRyjpRcRMNq3uIUzWjEYy43L6NlKj9NT3UYi7nrrLqXEQbeLjakYEkFCiKPs55d3aEzuBD55R3vE9sRk++LnmAcgbBO65SMHD1Xfr6rvDVi3FKVZaKxdtwHj7dckV7PTqFSx4fSuYzK9nzC0rVsK4Be2A22DstqqQaYRAXue6MoEkv67ZgbuV71wdp3G82cAQScxnIZMjQiBMeJUctjc46caGtG1P0NiOubEh2VvdPzYmOhyPGxnvzI611uZTzdos+9dl1VPPqXlmnyeVixqmEHlLCq4B6UIGkjLsBM216Zq50tyTFCfwkyqBde9RguhTL+EGnLf2RNjHVQXX8USZmnGf8Zhor/zlR5eFfbfr8juIGF+VTql0kRWM280sXOu12ffQGRihBWiPJtzkeRdcj83fCxNTWuT/1k2ijCL+iOJ617V3pbynO4CLxZRelNjZKX1vsYMj2dGuvQ5tsoPi2MEURXPCUSNRy3plYMGjGa5rY4cbtfJJjJRTLNLgp2bU0w0Q3NTPT8oEBGzcR57K6f9EMsIaQR9IeKmz8l6N+Isc7tzrMRZssD6c4jKBjSAWsNoMH96SXXHqtKvroAcJvIuD+mWsDMsruJ4VX5MVyg0CRmtf69GWr/WoS3lGZwiXLEKqhFHvj63sOVVtpwAZt5LsmMV12r8pfXcxRTFFih2sA2jHD4kZbTGjLWb1stPTdBKO+CK5eQ6SIqcUqfRIZt/5tsz+tszeyOwnJMrsLLtvfwvL7tdwnCIS4ZecCP+26I6i+7UDonvvbdH9bdH9bdH9bdH9bdH9bdH9bdH9bdH9/3+i+/a/G9H9BIru/+iSovu1ZhZ6lxDdJ5z8jBL4dVjmacm7sBPSSYFetL8Opr7dQj23T9t514G3xfzVYv6Q8NxXIPm/3q8upwwI3wBlQNwc2E+x8L/j74PwHznhX10j7FG5UAa14J+h4L+OyKhYDwGKAzFfboWAbLrWwzoISLrCqhqpHwWsu724H9hX2IpxBHaQmI/7gGIqwUIfpHTx573BY2DFtAII5ijguSwEjOD8GbHpgSKFwL4gqmITt40S9kYK8VdstqZI9CxICNkWv+yysyDSJc7lgMiWNmk7IUDe1eMel10IbI8E6mZAXZjK/zEEu8QHi9HGB5XyP/GARq26JdNr1JD1VF5OkLak3ABdu/izyyK/Dr8/UEzi5Z5ijEee15Xi5m94bROAdSy5OmyOJTY2S0UAGwmZMVc1gaSsIIJgSt87o3OIyPy6xa4im1Y+yz5WQEXjGWUgggl8MIaMIXeMAd+Kf4ZLf4RLf2BfrYPRRrj0B/Y/1+FqI1z6A/unzQMYxaU/QnCz1uUS3YLJaZVCBGNIYhHk06r+UiUQ2NmFcoIMhHjU1Gm9l+klh2BOEgzIcGwDUaR3wb9G2N0LpdjOKQbmJAfjlNiasMufxkU1BmE/L6bVdgr80aum1U4QFN0Q68a7nRVS5QaaRvmXVIF3u5GBbCCXWBTgEdcD3bsVNuHUmHCPN+Hjvdh+0FNbocNTY7IqutcIC9RHorSOlVXZmc+ENdBlNlcmVt5XTkAHOjCxf0vZgY41d2wpJ2zvQNGBCfu5Pzq9ab9V9xVb1CzFWhQ4S8cBGW3vwLSaBOG6l7PPsZhW47h0bIEOcYv8bvZe6RBbJ0M73FYL6gFRRkqS7cOLi4sfuiWTgB2kb4kWycgy/4QSHBVyO41xsqApDijsbUCuuAMCx0qL6xAYtxY7ASvtUejU0RsEYmAnYQjpAUAgPWwFgfQwyTFUr6ujq+7ggsH14u4bxbUg7DuRpr4uvO1e4CA5rQBFUBcrMUB2OxArEXu509Ac5/UhpbikZbgvw2kw5L1NFyDcV/MY/GDBprRWhpdcJENcJENaJMdri2ekgvy/uswUCabUB4spLNFTB3iyTPG8FQ47zCersuNW7RAEdC63ag/tEHWDjEEjXrgd24CWja1fbFVrsVV1ZgvlQRXgete31OJ6aZzxLgUzpxDaFHqZbeYopPe5/vjdt5dTFA+YLDU5QPHUTLP0Rk6DzdaKSMk+DDQ2fA83LLnhD2HDrpVF2QpLfqCYAjoUuA/B29cAZPV4s9Z4M7+5CJHt99yG/nU4lV0j7DLCf7vLiNK4k9lPfnRZWN0aCykXG8ejnupRhO6wp3YWCkJnMynxwe789ySEbJyeX+vLL3JqNgo28Jh0CviwMSsPyTK/4z4MvfF+/eU+bu0xXJbDnjoii8R904VoPlNsQ01h05so63kFEcdA70xTnpjMh0IfXlPCcYUfkxBCQn4LIS4Dh/EakAV0iNz94UeWhb2Ku0qyQk27YU/FrFmW1Dy75mGXSBHN40xp5AixTv6H0mWvIYvhr9OAYxxOSHj0quIQwimVokgd9tT3MSjucmFr84oLt4riLI65f01n4yrfxvBEetQQY8FFWduihrhbbNuihjh72saohC5njUqh6vW0uh1CohbcloX2qmn1AQipzWl1J4S4ZrPNfIj7MDYGD3EFvA87iruOafUhuiXz8HshtM95e/UQxSu2Vw9xZ9nYq4e4r2zs1UOs9/sgtC/8FLZ7Fz9YQtDqG8QTksM5H5MQzsGMPir5/RF3RawyrFAWDe036n5CiHNnWt0Nod3riXJJMYmFdnahDfK9Myq1UUEh1UNkYH6ih83uGpFI8zzsqfG+eS7dNoUmB4StcxGq/K4ZddjVrA7LQSNfP6OIOcrGXyq0y9LFtTfemUe4zAqmpw5Q2gX298lvdVMbWSWFBMAXNXesk0ncPqMOcH24sx/ymrf2KFG7sO20m8+3ESt0QY1jYniDo/BdcQpPYpf31NTZZpdOMLoo+qiThsgPEhBNEI3LcE9dc0+dDFsSDKUkaUbIa4FBGayHsJRVKXAauyUg/+MmDzUOmWG5QhuDIsCHFCqTwB+BNA/B1FPIOXEfUnQgmKcoZy7AQETsBC/kVBCBzHN6WNA6KSmKe4xPBEh2KfBrUZT/iQSzS9yLYiVpEwY7BfIG8YoEg5ztvO+/obyxHOzBrWdukzVJX2b9BX/uJ5dxp+ici2mX2yqr+sp+DMvi0j/pykKrLItM2wlKlCHlvCwoIckrkvc+cSHJ9RIhEuKFIBKQd0LgvAUCdkigRAOB8xwgNwuDUDmmGhpj5wBCNDTUewBxe1QRctXtvJq+IPxXLHpQThMEHX3TEwenxfsZhren7NMtr6iZFemboc4dubLOLdad0wQLA5LBID0YZMJDl85JIyAqqWFiQC5Ycwd/Y4N8bPCrMrRf+ETtihVaU9nf+ESdwoA+GqhN+trU6tq84wa9RlpVs5zrlgkjsH/0CVK5n5fMVPjhVz9BDo7n8VFP3UPFJ68IPnkLPMznAnbvQLaWKSsLCcL2KBvhPtL9BxAkdGQh9uV/QOWWJBEus78zss3f9CmJ/I8qP9fif75HT8t2j4hVnHV4Pu5G+LTs43Su7/ge3y5LytKDpdrvj0s6bTY9dVqy1umUdJlLzojGAYW6eJIc45gF//aPLAt7A0Pi75wFG9tDwUIl3K87GTuNPmsSTGurDfhxw0vJIzj/k3ZMgHplcpl7Tkmq4IyTuU77z4gnu0MJyi6UX8Xo7y/Ahz3YM8jHqQDRGXOJy6LVc4njkuev4+mniOeelo7kluR8pphcnq7JxfMRXkDP1CIjsZP3T4tPy3qIx5268ciVdWpR9dMak/DFfhJekfUSfm5tajtL/b/gqG1lTWo726I2p0L/pqhNfWvURuN5m8r+IVCZs7F8s3jaEunuKQgWi/Xv4Hie7pN3cizPOpTNMqdT6U+usaJn9MlhUTyXzLAonid9OpVMcfw3Dh/aF7PHuJg9A+FDT/U3TPF6rrzhOnxo8DrDh2ZmFhJWVqEsO+JEc1/Jq/3JTC5oV4lwlSwFFc5P3VMngpJjaAac8nqJcobk/KrgCHlLAW40/hqpmyMNun3xiaCOF7UUVPazH6G4tV93YaMy5eoXg/WLun7h6xeVvYGjWYmm6qMEYQ4Xl/+ybDdGgfs0V31MuzYf13VGH+rBPAetuvIu/I3o74MVLjYoYqWOP+pjJr2q65hJFC4Upy7iGqfuBY2Q4tBgV4bXk4jXxEdlIuwweXAUPK4Ht/P7eG64ROn2ZLtnsumZHOjZs3XP+oJTuai2qwlGL2oGGgNxKXAR7E6YhnXQSBZd8Cccgf3EI8vCvuBCPnGmnZOcaYfJ83lOCNMPi6VgRj3nkvmcXDXPnjUD88xFuFrun3knqRtNPp0l4/LpnPwJrwf2Xz7fP9jn/ACwy78pfd6MnjrqAiEfM83JpP8175IcPe4j+50JXFKgJm0PTop+VfRfZjJ56Bphn2UL3Pw1DtlUak7Z48Mq0O1FUYHOYZip54c4447qqeMu1saSZKuwx2UR4/UoGX+gVJqw9QWbHN5TkvHHvWx0uLuxOdxdmyKx0YJLQkMWac6MgSqpAz15G76dhWHDJtVTvVJz5GFn22TYggnlY4odq5uYUmT20448zEHCnYFeQVFGhF188CCrwV7DymxecPhp7sQkgod7v6loAhBlFMqKay9vyaRdb3OObbylkHyI+5o8WAgaKkV8yZuK8gYMNPcjAsWYt82jD1zzjB62zVuUheFYHQEHQ5EcOCmYB8PxHwNnCBfyqKw8lJSCLQrrur4im49J8/48GY4elm0DXvXAjLoppUhCe/Ejslbbyw1GbKDlB9Mp6sBHdAAg3MBVQZoYH8RlRTZBYaga3ffqxcFX2bRadiRxVjpr4NqS5ww9Odp6cko6A+K2bc8iLouSQ40sKWd/rByROReNepkky2teJqMaKkuqz6z5mJpRN3F9e/mD/Hqif2eOc4+3xiE1dAjE94WN7y8CilZ0vfhhhNVDFBcoqIvVuN0lHnDB1q4X34E/v6speTMXnOVyN2HNFJmFAsMYF4xH3CAeYPuOD4GC4EZsDwKKI/MQd9j+xIeXhe0x8PN3cFK11FvDLEtvXL/X2ZBQyL/8n3iesLc2v58TZMxN/thHJf8+glefeBE7NBfP6A9BXGeDizIXtukwR8W5iexT7BOEvUYHqezj9KRJgqpIn6pctAy2ahE8aA5i0mqDwz+4s6S9ztIm3+vCHinnXVCTziI9OdN6cpGaOtVPTMuSlD2riemiGEZMK56Y5BUS0woRU98wRD0Knih7fd46nCpsh/iqHD55LzgzoVPD3/O0WJFN0jqmZrJVX5FuI+6CF2Ej7c8vSEQqQ5Vy1lHP3sdGSS5lnfcLONK4VHBcJAR3A3rpbNbbgF7B6v0KyyG3eIUdzFjH9Nm/9G0R6iGQtvM+M0vZhf+Gw2Pnr8ok+Vgkw4eaeINcSIHO/0aWUSYthVqNbZz/iCqkHecbZXO+MVa4W6vuWygDu7j4ABiQoKpqwf6rg1YvlBIkBLdtAX1HJm0O2prKfxMsgL5ti6sTRP5TCkvnH1ZlkH9UFWZg+ZX5Y2xpCsEdJIqufOTzuB+6hXRar/gfGkz+v6osAoM1hRBUZQxqfxZBDGqhCCC0i2p/ZsDkF0nvii3SWoqPQzCgFuzDi/F+ymgJ5o6DWeA8SAD7XiHTsdsqu7hoHBBKtj3EpkjpvFAKmy+UelohMHT+UWUjvhc2XcCfYloZe+Ejnxf0X4+EwXCBg4LaxY9+nv/DRjVSAMIJ31zELy7yF6UCAQLU/i3sMOWgCgGohdLclhEeEI4B3fw4vjH+8hcoddvzru2gKgNQdzSfGP+J4eqUlYewx/gBKOwJwp7iyaY6sd/oq2d/ptXsQG+I9IL8x5UVCLAiYHcRbAzBim2G7W4eVRBC2FPGPnhwWpmE0Eu2rtQYt0ySPWnny47P6V0a2tfwoWgHy8WpTOzLCLiXuZv2QQitvv9fHZzGieP7eQd1cdXo/eUvJPc4zn9cJSApAU3+qkTM0yJDVGQ/ZB8gMt2ChKAR9/u35OdUwfEmQbIpgoD2y81OcKKo5PjxZpD54ypJ9uJ2eK2ZW0o+BfoplT+m8M4KEPkfYN+SDYIzN/sz+xhk/jsq+VEpJW6BZ6tSo5wP5MOlOXmxtlurObJi1XZPZbsszqhpNY4bbwrZhZN397Tayc9vAm3Pf4pjaGnKlTitJulubzWtdtNdXE2rHspRNq/yhyXlqtsukh/TyjwkH2TrHA7JmuO+9itycLudl9rH7oubLTMHlJQ+oGSmQNZRK6XbGObNtmmrO6p2BhWFxvfjpaFgkuyyIQvDgVjFd5fBfBbWsdyIav9FaeazKAEKEo/o1HQqxIIemczwHdCEF3bCWU4QmfoHg59oLBRiITWlxmcUnzT57tb1ccgqK24UAdse4edRZYU7+xF2xB2vYjVkmqJ6aiuZYUFI1fIBrHJmRAFIzimsyJ4o+X4mit0LaxGFnGmTwnMDpNCH+dX43v1NNPHKk6+/ibulwiZypieyuCITD3KFBJn/lgJtZvUsb5FSMuhOK3v6yWWR/ztFagcKlywXSk1bdpX/36pgysQKk/+Wx+AJlmPmkSgkG3sUpsDGHIW8DcmKEJcS+7knlwVRcv4Zrhu47hGeryDz/2WzFckXVXswLLKJO1xEtlK34rDp/EEOJ6YTAgkfmVJdmg/yeMeDQyZOspgTK8Glixd6ab/roF2Uh24Qo/QrvL9+MEIP0uZBRg/W3W+jg3YFH6SWgra1a6k/OkcFBuvMLCkb2l9kvswyV6mSArcMFDqNB7xwGw8WZP7DzXDdIBXNKmajyFIrSt7PaLM16UFNF8LHzr0ytHk8XwJ7+6R8CAs6jruq12pIr3F94S4r7rIVyW9IRjvQNOEdD22lSnlbJmzsbc1wMb6vNPTS7N+CWyYb37GlNPahH7Lb7i9IDUCZVhRNGitpWjnVUc7KHjZTxEXI8FRaJD2e4cjtZKcoPLMyVb3cysZOkdcfmpH9doqa+cqXpNQN6J3qQVa0brUGY3AwmgajW4PRrcEYolSDg1E8GNUejHKDUbSqKjcYxYNRQwaj1xyMWjUYxyTnahx/0+j9HUlT2bQcJrHr381KPoPLGR/iMldHumONOG9r2LOY1yrau9UrlLIy/xekICMeYrHxe3HP01+Cdgzk1SB5UYor2slxW4KyE656I/0b0ffGlRXJipTGsSpk7dJliFerVGeyp4zzZFSZtLJQlFPg5SeXRUGhll36GJD5kiLk0KCxMkMfl26dpu/aa7UaXKs5OyDu2mitVvVKwwPXfgSgyRcEhzVer8+6MQHXxENGB5bNv5YybC8E3uUHJBN0T6VjUrT3MHEZsAVI7e6IuxNDDIg2+PvZkSUtIpyMCwWCJwQNhl1oxa2Zbo2RYsuG85lJAAsFld+SRF7ZxSiOa0wTwSMt2nEOGjpDNtrjzPMaw1Og4WLD9shTyyJ/ys8CK93g90n1EHjZw01gHPxYUI+fuky1bgZV28PWJrKUqj75sJJxP29gIiEw5W6TJmqAFmyuU8TabQRjiMak8MDNlAep3p9pBmWHQSk8KG+h7R4i4dYsaKApPDTDGpoCoSmg00DTNTDJOifcY3FdbIZrZiHkrP51un4kUQ9QkGuBlNnMv1Yy6Of6jvOr/LBkJfhQCsPZ3k9ZzAHalKX280kQU5bylKValGWGUFaAsFA1ZalLUJZy+9RLUFZtFl8vDaM0O9eisU8ZGbndYkATTN+H2CwiP6Oo66YqutApYjBkF97F4UZWVWUCEY46hKQqIwhRzu/aGEtHRQixjRfKGHHkaouYq6CMCBECRDYAiQgg8XymWH/sfSIgwh1kADGCwoAyD4GETlVEetbjqFS0xXKKg6IDQU+ldSTYgA1OceUgmyKyN8oLokHycYzvA2UX/1YftPH9h9jGKMTBhdi+8pXdVlcFriqqg8zIYggr6LhlKAAFofsaEVNKiPZlbJ6fBhAl/ZWZNfqlwfCqRkfHEFaMfPZzERDQTny0RmfEAaJXji8Lu9W+fHxZ5P+GOKndXs0J/oJC8wb2yM/jjn8SAnuRxAsgy3179OeXRf5zrUoe+zlXyTMxc+HdC2W8nWdGEdq46ELgnefxnyZj4jZlaOgwZXT2Z2yeXIQQUZCDeKHsIlA0hUMJcY11zT7tm0VCP1B0QRWd/jAI0NklRBlSCpRAKm1EAh2eAlyTokjK1hRhqhIbFyEu0A60hNrkNvIvirB3IRJJx45XRQfCIoKuHV8ou/MZyqh1p077TvkHTww+eM4/aFu3M713UjKh7af3kOi94+g9gpjpPYaQzXk7SO+SJlOL0kOmdMOUnkCMxBk5Sicrg4goPUaK6uAlL6IEIujgHIjvg7CP0mMgZEXYcugru62uCkKuiuqIKdULRBUkEBJpxhBC5L52lN4lStfzlCEWsafpbEyUsgj7tyiMPSOkcpgyjClNmGIdfdyMeX8mOVdU+EYOuj/VhusUUlQg6vZJAck5zIKEWbqVlSMzvucR8D0THN8z1dF9QiqR8apQrwPQcgigmTwzkXgdg8VSH+dd0+qKgzXgYiBo2EsAkWMvsWMvsWMvENf8I2b+Edf8I675R9zHPx6S8qFBwJJ7fgu2bsUqFG03GbCKRBYGrLsnwLp7Aqy7J8DyPQKWlkave0m+W8qH2ukBDG1Tzaw1Low+Z8wQIOYeJj+AZnGl7tBKo5xruUkeT/ksezclQ2rMu3huR2ya1D+3Dc3tiMKoRI6TF6PkN1x0cXXlTXy8OvMTmbsipJQSMmmWzKBeMs3gkhnQfioADRE2E0AXl8yYLwa6pMdl98PURT0KHPQzMr2lbB6r2tFD2gla7YzgPMJ2Ym4nhhGEYMc8hE+g4+kuwgsZxyJFp9AhsusydXYqjj0eO0fxbD6TdBaYks9V7PxtuZfISf0gyoBWUHFrWyIJPEvVCXQgJQpHukcIxHwxzFmRCQT5g9S1MnMzjtV8+MMUOcKCtmLRQCM1MEwLGGOrgEGJPdhz79IQyS4NkdzMQsYJSlBq5nPSmISlVNcMIODV328DKO8BUVqwNqWFA5QWtAg6GKC0wBN0SPTsABsUWs+yGi+ETlWmyOgz+5rk1LOdysoFyKysXIKClAEcOqVfl/HSZbwQuQr2u2K8p3QkUXSwU+TJSIsB2U/002foe0e+vh1imghlCBklIaMkYryHHu8R4z1r433E+qwwwUAjQd+G3cFAryIuzW52sio1MmEkEcY7riOEfppEIeJaN4hHYagf8SN18IG0ndjDwYEg0g+mBoVhjcJVk6Mlyl6i/5HrerRG1ztE9a7rfvFoup6SU+1wSg09pQaeUlHgorxxJV0m8T8oNV56lk8XxjqCE8wpSjhXBHjZjkTG0Rl6qnb6HGT8lAJbgqE9Cl5SkDBKeysO5iLd2mGPPbUsmlWE0p60N9iGO+7XkJ+RSj64ep3RfeuMtmbVOuNTiE5pUaq5vY+Cmlv8W/3IXO/Rw2S68Gr0yNzko2zFcHH0kbn40cP4Ij7iHoCamzzC5fB57wh9Dmpu75HDhw/PCJl8SUnNigNcIvPTdIwr899wx7kyf0aN4p5TuDyAejsJ96JQmpRslX1NVHY3nW+PHiyN7e7fAqaikVi5QNrY0dvoDNfcXygwGamoFmVVKvuwJFW3XZT2xJ87kROkPfnny8Iqrn1RVlaAWMif5YTulCeCLMou36ffE3+3nUrGROOMCzL/bZVcJVhhjmi36j574vQymY1YnX9RJf9BSumBz7xXbBerM7o53hvSfiik3vzYafJV+aLilBkv/r/LwnbxZ4A/n/z3y8KO4U+DPx/Dnxvwp8afF7+0LOx6/Ema1oufXxZ2HH+SFgG3r0T49gV80bVfpQvpiuz5zy+L/DfpHEDw8YtM/nvW4+f18Qtp223uajn2hWVhN9pTv+7csJ7F31/1v+KKHyx/gSzalU2r/Ezf6c53Damea34Fvxmzf/MF8hqjQ6PH/g31r/39P6rPFgapG5+cVaOkOslf9jcvqeTHZLvNBh/N0S2iQ0ulRT+0dT+0V4OXdXPDwKv6wNvq/xrgTV0t504tC5vZP8VLh7zc7EW8P4JQiUHY47+0LOxR/jUEvMMOpH9bJU82B9J9pzNpNafZwGlnRQEk8HZ7fUsdmFZ7+HRmLwdsohh2p5Zd4X8vUDBQwEO4iY77JiveRSt7E50hKrLRQWEB7/bQCaMElX+Juz67QF3/gfrssp8yVH1u6c8kXNCLHJT9D2Ja7aRq+eCSTxuxUT6l9m3sZvCk9fnfWZV8TPVN190D07WeqI4yKPiG6Au+cfrzPvjGy09xj6QPsMFJDVd98ewlvlBDvzh6iS9kMiwkyJll/8XzLiQIM4HhIUHq2pgL7GYu8Kv6krBZk5UNGcDKl9YeQDj0i5cv8UXwuhFhXjcihqPu+Uv06q2EuobGn1HJD/ZNqnrej9czSvEUe/kL3LByYWRowvPE4lYV8QhuVbkYMq2JtZOO3FocOZP9DPmlhjO/ISf8Fz49/Iy4gyu0zJdk8rOG9f2zlYudw5Cdo1gFuKCVGoQ9fMLH2GHeaElZBZrsVuzz/2lZ2BQ027OUuqfSMSUywedsKUmiFEAOYfhRd2LKHCjnMHd7GMY7QdkX/hOn41M0tmm1m8xckHPln1HzbJvqrN9kEzKjK+Y+/xd/ef70T/4fv2Up465v7ie/lebIgpy8bJnh/5lj51vrWzpiZJ4tyRZkEpT9iGtTcoOaG9Tc4NOXarAgY2pk9V432hwNYT9UnymJsanfwUvepcd+sy45t7rM2TMfUNQy7vgLqx9N7BMnyEJT2L2VfQHvn/20N940NqXt+f9QWwA4ww82WaFEbPmTkg+8tDuPSmtpQ/XUJDsljF/yJCr5C6VCNrxismKCEXlAAU8Iy5rGNqVMEfNIFMQzZDCjeSb2qtIwiT/nAqvidGsb8fZm9CQ7VwTe8Oqmqgxdis2e2lNo4JmFVYR8xhvUSV33sFH3zlawG6fccudIdE7II6eY3qETRAXK0+MsLeUs16RsgxWDYGlSoOQtPM7JJneP44+0jCPBHP01RzCOP+6mQduLv+aUicO+ObE89Jtnl903Hxo07SBf8Uxo8ndh27YnJZ/pGZRVNePXeJeqSTYTGHe2z3KhVDQ16TidWdiTcvVRGzIeQX1tGRn9vLQiOfU6jIzyf1hGRmOvy8jojTQxWmv5aIl8buucCKhR+QOvz7zu8V/w5nX/j7iMfd0v1PZ137Khx1N/3ww9XidUT34zUP2RRgAKtgsIuJGAGwlqi9ygtsgNuLnAnnfNBa65ANncTRAg09sLgQu3N0l3bI8bkPaauxG4bgRsjwt+V106Eye1xYdGYcvhVzPV4XXjjHDwsHvZHneQAAbIQXM0eVP/em9p7EtiYeQaI0N5qb9AhuSUXC6MJEr4v0Aknl+ek1hfzN5uepfoFEbPgrE7bwFjvyJuOcS+Z4eyiM2Ddf2NLAxeROOeRSZho2sb2o4khDq2QNbOWy2jWsZsuS8LXBMcY/+rxMln2QI5xPub2X7LmQZTbac4ZlFtHmzms4xTi2fMvevGKFg51rNLFPYliuvvWpt03oDYbhHQOlFEWG6rlQcL05JbsWiU/7607tSzcdoT7MYX84E2xOTAF7J7YIhwzBSYIrTY1TCTlo/GIaotrqNVHnxUQO0SY0WccIVYj5m16zmfMO0aovwztKGBMnRed9eLa/Grd5J/F/lQ7uQNQ6+I8cV2x0DoWMKNhb3t4trbjtfEgOGMGwToIEIDiKYF22yIGCfLDcJAQJsBCGxUQYfziidediD8GcRf7LH65QartzS4zJjBqJtrC25tT4vGhFu6ZOm69vnUPqNBjLfk7ElJ5Qmj3r9T46gJlTvJgRPB32hKanTS7mF2oew0LjyMV3YA3VQELc/PgFAbM2pj7/lJXp9B2sW55r0+yeMzSDvD0DxWBDW2M9Lqc621x2fMHp9BGrmXhaFsDGELdbUVf52NwTjn106TjSGsm9+NX7Fd/172snWbxN0UPi8zEM5DzP6eYe3vaWp/T4PdYIdPqoodDZoKSBW7s6KNatura8+M2p7KVQQb2IlbMt5372Tn34ZC+8mYBlWPWDLoar5jHHQUu0J2mKI4RPZNRRfCgiJjxPcnZYhU3IEuUnGHqbjDVNzhQ4MOUnHYUDGprxoq7noqfmkoFadXQsXEKRO86yb+w87aPDOunROihOouEnapv5335UnLOSFcu5qgrsZcppPOG2nNmlRdk7yCmsizXOAq/WWp9IC7Stxe/Dwx85wjjxS5tkeKurRHituDfpbNgGlv81kJep7c2jiQ2xWNj7xBgj5vkKABeG3Y/GdSDGrPbLQwkqkgCAIZBFoEgSF1/09+cVnYPP862999yv/Kgsa/Rd0gzGjS/Jb8W9pfwtIpltbNW+3f/hq+jfCtat4a//Ywvh3Nv67mM8XbwV//Ih0tfF1loikfuLZJEfTyFyny1jOy3RtxgzBvCi5/qYXLX/o24vIz16v1D8U4tnOCLEMgAZemizaUZOyxzr1OtwtIbczCvL4f0X7Qin0Vx6VRVuEjTY+sPoD76RRSir7c6yOXlBKtm3KEd+1j2N8R3LEbii8OJj9YjpHZSWr3VkUAsuhAihyzi5edm93KBgtlvl3YP/tFisdWTNg/dXfjl9hdYqdLPRKKQCodkLmWTnViu4VOVWKTAgVBmxYkJuiFUlqijzu2lJmF92XSyyPQcTJ1RYZh9jvIJ8B+5jPLFFvIviY5kLigbQNH0AxqM/nABk4O1glkFhaK9WqWJPuQAmSWFJNOgXlfJgm2n3txWeQnyFLv98hS7/iL3sAwtpsrGLkt4wWKbBg094k6824hyg1zr8n3ZyyJD7yaxFe0b5MVn7lrqwYLbawLqbqQHiy0qS6k60JmsNDmupCpCwWDhbbUhYK6UDhYaGtdKKwLRYOFrpp7TX4PWW1GFRm6rsZH2I+PIIEYxqpyFCbn9jwKG+ZuePRwOQkb59716OFyI2yiI+7Nc+Wjh8tNsGVu66OHy82wdW7Do4fhqrn80cPlBn8SDhuag/ANfQfhm1sH4ZtaB+Eb64PwSX8Q7sKb2HhwZBt4+DYmWxfbwZ2f7QzFbiZsl153h+I1Ezah18lQjGbCpvQ6HYrLTNiMXmdDsZgJO0KvR4biLxN2lF6ProG54Shzxhp9WBu1YfUWwZnNOfkfCYA4rmjVVLRjBe7dxwZfe4Sto9frBl97hK2n1+sHX3uEjdPr8cHXHmET9Hpi8LVH2AZ6vWHwtUfYRnq9cfD1pRAmneU3ISyqEZa+ZRA2WSNsci2EbaJhb1oLYZvp9ea1ELaFXm9ZC2Fb6fXWtRB2Fb2+ai2EXU2vr14LYdvo9bY3AGHr3ioIg64lRXHXmoWiS6a7RQzrwZThfmfzvvjisrCFff6l/nXSPu9X0mbAuOlMJUfaymy8P6MsLjZeKKP3ZaLlGWBw96PB7M8owML+TEJsw6qUEFMEA5AU2JWt8UN8GEIII3fgCgQj9vGXBxbxwy+3zO3B4NKdsVfAqqU7c0t3uHrpNrh0kzN65pbucPXSbXDpdoX0YKFNdSFdFzKDhTbXhUxdKBgstKUuFNSFwsFCW+tCYV0oGizkl26DS7cZSqWmJtHQSY+4dL9lSJToUyJ9yiIGXRjQEL0vi9rkefzl2k8ElP3GSwME8sJLtYMGP7jQkDOETFC/QL8KCabQiZXQxVbv2FJ0rQC9UESDxg6X+6e525y3h6g8x8stZnZOFButwIpJuxRbkW7GbXKnKtaTqWwR4as5UWxwRY0VRaZnYUMxaYV3s9Gz0IGsKketrEo1n20gi+EyRgLo2u+g7JikKQWaWuShF9jFvxI3ygEuhcIOIGNSB41L1sLZAmAUOluKECKIy04F62/Jrkaog8ZK6WVVOr+qterdVsP81a8MIOGxrw48eMI/gMm57vuz9dBdtVGjpkfrVldz3JqWu0jLV9V1P1fXvQEm5+QD5Ya5v3rttddGH5yb/eG5v8W7Rx6FjYeLjdAtDKgigxjhEMF6juhcxDD5lJVVuilhbK4DiTzLgNyfZWBQdFhPCM7GCYmlQUTEQ0ZQqHQjKaeqMrRqfzZBrGegNC+IlEzgDoqyowZL8JqoUVC4IzPEdAZK8LIYoJRwRxYSxxkowStjhCLCHVlM7GagBC+OHZQP7si6xGsGSvD6mKBwcEeWEqMZKEE8iMzn44UiAomCgWnxF+Yubd7CnIX5SrmhxS42tNjFhppdbCB28Z2CU6/BhoYVDWNAc3DkO4Qg9OGSTmJBqW/LRpm2bVSVCvT7sglPO597qfFCw7mWjdd8xIuPVlllD395WeQ/z+WUq2SdL/r4l31RbbU93iqqXdG8bq8uaqyxz7eKGld0pOZsddHABvYbraKBK5rWfa2Lhja0h19qioauaLfua80vIxvZ/4+89wGz46juBetf9+17+96Zljy2ZY2IqxsTRhsLiyzROINDpoY3kgc9IQP+eNnsvpXH0iCrrzyjuXM9hveE5xoUR2QVLIN5Mft5g5J4I5FnBwHajSEGRnlOEEEQE0wsEgEyiCBAgAzmIRMn2u+cU9Xd984dSTZ2/uwTH55b3dX151TVOaeqzvmdB1xW9/rR4x0L92Qb+z39FWtWmzXyCZffsusHv1rMf+i4M8NVusc8nkl3Zph5/Muubm64OelS5z8RCOw5jooretn+cOFdaZcDjUvR/YEzEepgFI8cbHkStJoI1ise2QRjKEzldK0cjgTxZYbFvcCTLZcGzl3Toqdc4mUhufJ8npHhaNbryFTtLWZEnv+ROfk1sqCMzBm0oIzMwa+Ra1WkI2tBGZnTX7NmDSNRfBl6E/rhyDL6iVA6Xjii8yS6cKhwZKD9keFxrSrDkdULHxse9wLp+vTlNzRqHrkKFSnhhbpvZE5ftltf/s4bGgTe0AM0ocYg7AJJG47WIh6eTbbzaMPr7WxaZTPj2a85GiGXqOjLR67dfR2uVp7GQpdRmsbcGiboHvj/+v6kvBbdjXmqLx9ZbT8Q8IFq+8BmEynqGpRNQrZSt2wSsmmbTUG2WrdsCrIts9k8yNbbLZsH2SKbDVhPNZ8aebcDNUcSG4WMMNwzLIxVdjVNRk+ePSiP8PyxKnIResIVVNY9Zs8Jt16qK8V18WW6OiCuNWJdTaBLyRIbGeyyQal11aD1THWED8oBPDJMBJ4xFkziVtcT3mYSW8VDNuvQ5yymtRoQZJOl1SrGh1hJc3OVvVHnps+ZlHEjYaZzs+ebNNO5+QHZflsLMw2/yEySm5I1IuZmmTPK5Jk/Iid/RG6ePumK2nOM/BHzL8TzadvBk8+jbbxr23Yv3rYQHRjx/lPUpK5i5Goy7iJ8YzwCHkguG5SRXoqX5nqpvmxQKL3UgVtVlbWjULqHXE6W6iVrMAfili+FtdfzkO7Rl43o3fsRHrBnff9DI/quXYN43O0M5aom6jSU01VzgqVorhQOiIhQN5kOMwCtHGgrzHC0gA6hOcosrwuBEP9Oh2b+w9D9YR2iCcX/piHXMZauEddrcgJaI34NfW4SrkMzXE9EtA9j9zc0j35P6ND0raGGvErhn9UWIiFcKYezYHqhOcJc0NnQRIg0HVIvwvfK819GFE+6X8BrCbLTMaLeo1i5zMuhltcwZn7wN3xtrQwbL2l+57M21nyt1H6dUy2Hxc89j3uhVtnnHmH555/Ljs/PA2ZWyq48/AtdeWAxWmlu7juKyOcPWdu34lUP+Xwri89O2Onny25vUS7D+070uVX0Cw3qzl4iqnPSjpV/FbPu7ua0vaaQ+E3iJdzIyViJOQNr7ty5c+f+8/oaOuCKZozR+kFub68jDtJyjd5ZwiCu+9p+LRqQh6zXBOpZG8KYa5/4rY+dF+0Ok8r+UEmH/+/rydNMaR5NJ6XRmgyhUQivLAyLJVoE9I/VQAQuryfCoBUv7DXlsPbw/GujsihUwGCFvcXYgICHyjzyZMf+9sEnc6lZIgDEME2ClYwlPSPX3pX0jgzt3m9+8MfzWcAGkGe6J1eKk2gkWZCFp7oXMlmXtKR35FW795tfne7IJmw2p2tHuyDrK7pllanuHRno9saH5uR6fk9Bz+/J9Pwe1POTnv1J2Vw2u7AQa06y8IWX6h7du2tkRbeqgxSPn85LrfLFkaLiSJGRtUCYxckSLkqWaqq7jUyN6rlYei3S8Z5UL0rK3sVIGaUYAeO81FpycdRa+vyodcmi1OrrTq3LXoi5dfliBLn0fHNrGVBr6fmpdcXFUWv586NW/6LUWtGdWi95QebWz+HcCrqS8kogykJSipjrCt4dJHKjtScDXqg9c7/jeMA6YSuyIynXk4qWG6yizUM8EMPNdEC7D08HxEUtQ+eEM4tcFETBs51c9HTGRfFsRhAXxUvgqhGz7W01GNSBDmVqC3oCPNHdEksjmrpm/NnGwmwc1DzVhJ39wtc8FjpIpK5srEk8mgi0Z453tvrokwuwZgpyqozbWiYRQVdtrEmUELqiQ9e22QVMP7EX5kAFaFnTrF7I8mMoETH5tTL3f93tMzh92lZJ0FlJxZ5YChB72Cb0kdcIZiPh0wCIIrJGdiMOnbAg0pNtqGia6zoyocix8rNayrdbX8/lpTJ7iq03D36947Tjka/n08IzR7PMUitzPEshELZLJdxpJ4hQpdbXlJhDoqADBq/TkQQoKnUjpxMPjUFHa1xL8ysYEc/wtTWcIGvdQzySoIciewjbc6eznPqGrR12jJqn62uKosCWtIo+KjAGrBrGaKEJspHWmSvfSeFO31jzw9xfg6BzbYxbixtm9j00z8wqc/yP51n0JxlIo3OFR8o9/qA79zn54Dwz/5PZ+5DNrH3dMyj6tE++9z753vsIk2E+9xD6VGEM3OPw++gf203HClQILcI+of3msHmvhUcVaySHeWAbsiJFpuvsyQgQLUqzMqq5L4Bg4U8UuWI4n5y2peMcgXMMIOvdSx405KkRuciT0QcE+tGZv7CeU6+ym0ryoKvmfljPfsS5RUnnSKcyB9kALcYp3oh1qRsQy0CfRA+dFaNo8PwPiJ7+ArXn8efXHmXbo6g9Km/PMqqNt/npHHS1uOqzwnMP4UI1aB+EY75Iefdm5X36osoTXb2Hnv1wp/dQ8Rt+gT6d+PBz6lOY+zZ/RwhvTtyhuZY7k1DzGxNPew8BE9m5M6locaMWuvKGfsPJUlSlsW/BEMhbQQ3KZbBTGJSR9rQYlIH2NDoyIlTe9dob4YPSxfEvobuBO8dBEVqK5gWhcHtmgHIcYWkSFOP9Dw9K3bW8clt56NOgy9G8wA3NtSkhqgR5OQkflKu1D7u9ZdqHR3oQeQswpywgMR/EYNp9qaZPCXYBtAB3LoGx4zsPJnKoVB0CHTCkfoV8OpFRfFMSrGFUT5SDNQyKG/xRNUwnNkBmHSCaoMQdXpp4eArn4Oq8WOIlRlKq4WjCJlOurwEXhmEwopkmoJKIYdpeWgwlCVvC0mgRREfqkoNRshbTjDAN0aFekWUxGnzqIEX4zRzfMJhFCDOYYrONuEz7YakxwK1KShZSUCE44RJ8GJfgTwD1oLOfhW6RFqVQEUohuhmWtKwbVKsUyH4qIACxZb9EqE5hluVAic2GLjcwLiDdUPgOrS7hOlhHfh5a2ZMYgjDMXYCUdQEy8/tR2h445O4K7IOn/8g9eOyDeER8n8tBIqikJYqgL9ph1rhGROYTFSTCyPXKmS2qeiK1JN8nPx1gLFHQF5X3RWUEVkDgRlLaSC6aKg5g3NbVYCPPtR8rHcTScLrFrYrQnNiPLXz4UK4xSF2qJ5wsHXgds2OQA4RFgnkhOuaFINB7L8RwHjBKOEYyFlZEV3Ms0CD3rKR5LzOpJ3QJ/o8hKrTn0D+9zCndIxdzz5w8RJ7eXuaU7oEkPn3I3jRk3v7tyGrkrS5oSK92x6boz1PVzBw67RzXv28d14vu6sp6Q+EhKKKEHD1tq7Pgz3ZQ/xMvwnNY9zTrbImnLAWgNaY5uaaJAvBPtQD8Q0uMk9cfp/si3ptpMsyB+pBH8B/kKNoczz0tji6jwBPOO9m5HAvr/2sJzTNCcyI0t96tsDIy73/oee7d2uWbA/Ndv8m8Wz/BBc/OMflVLOu4GLZdV7SS25iLwLMsrSKeiAUAycy6Oa8UKvawW/kJoMRLB4UBNZxi6Oj1fJr/5zzz4GQWqVwVPMFtF9DV2COn7+z+A+Zg92EmNZaTGstpSYDSJMir2sMeuXHqgtKw5+OdKA04Q5/+uINEdT3OfvzKgpYwgn6ylGHU9o71E9HsCR8HIgBHcfJoIQVKQIGSdgwaSilZH8su9LJk8DJgK+ckj9HdKbJchFCKDiiLwO3aIbNUsSwLSr7rT4uwWL1dSIGfwQ/JeHiXEiJzem+fnR26tjQt2KS5OQtaZbdJq1XkJ15NaokOrh7wXG3ssleajeyD7YwaLBCb7h1BGzMP/+k8W8nYICOnYHOwmA5Sc6CY3pclYN+Y8+c2xD+BzDkW1pOlLcJI3oIatfwfXKh55CBSe7DCfJqPnAKGOKaUqZqcVE1ujv0pqZrcHEF+SguQFFaOt1Hk5jyQRvuE6zVsjGSUedoUNkYgzSzuAEXHJRU+H0ZutANnk255v6q4vK/OlvdAtrxXYwPy5a05ebl+XDkudd55sHAWiK6zIJ+j84QiLkcL4Hz2a5wQYmQe94WCRkRpEZUSSaDvyOdK7XwOIewGiwFl8rHzQ3NVcao90Gq15rtONZ2a1iNZsHucemc7pt6Zjql3qpg+kU89j2ILQJ2eltRUSRPGO/+E2ffIP/eEme8QoIabq9zUsZgPz2MO/T9yER6CkBx0uZZ5w19A5uVz5G+zicO7TByhxcjfFiYOGpWKKEBEv2zueBczd6o8H0H13EZw/kUdwUyMW4yUwqj9bcdAPp9h+7rIJHtx0CyNA9wiBTREAdEr6BiibDQsxE1AfxQFJFmQUSJ2BwGvSgJelagYdzkUDZBxlxPVE1qgKsZYiRXCRvkujpQpFa5Q/cIDZu9Uu2g9rU901Xp2f8KxRRorckJzIVHoUpZUW/Itw1mCcysoKlz5uHxSLqr8FRYDivYuqkMXSvOulO4gHmwrSIWoJAEaEsieEmdCKoQIYHiiuHqwLdiWF+pgP/FbXAwKXbAJ6kaShhmQhqmsu+nFk/W+nKz4ARITGxENWoLSIecgbiygtlJXBfa8muyLobzvkf/q10j4Yq2R+U92pc2RT56Hnie7T4DThXX1M6ym31A0Go8xHA66FwYa/Glhj8kHRGQNDuLAkd9eMhFKEw2UoDMsvP9T2ussQxPiyrLYax8ZRSOjaGQIktYMoKdWZxGrYx/+DMSlXF3CUJYk9XySeqXugysQh7ya+AsH13/ug/soK47UddnoXpuN1LDm5trUnCqM7sKPaHgXfHTskxczvCTMCLuKkJKlfbIiC6Ei7JOqGsZJAM1AP/PiNHiee7ka7eXe9x9ERLYqBz08blx0y/P8/2eb1aOGdQ9Nuh6adD2kSvREPYg3jZx2iQ1yFS9FiKv4EoOBxoASyjyMlsdL9CXRE5A8KFMtoq+hZdxBiSgTL4XfH5aJpMDoWhJGRCXm1ZeFWpndXkrlRIfQtG63Z+ENMHD4y8LqS0NbTxAd4/aDoDMzVLLHi2X2/iuF9+tqL7Wbg3OIWqEVrIgg+ho3DD5ZxQawqf3wc2XCbUt53tKXh10rXlfT0ImOhmHgzy6N87o2DiFarmG/7UGuuz0EnuBh56MwxrPZez06gN2LpUGpGHCmEcvqz1vAjtHacq2Mpv5BHp33LTbJutpV7e39alt/rtTK3OvZOBXK7KWfHmTZ4yVlOu/viEOCp2iFA0hfF3HzPRt0wo89IOIyS3gOCje0yQKeqFXsCvOPbF2NVzVCw61AyG8MN//zoQljDg9fRsDlOHEOyLyPB2iuLYPfH+w61wbyETzYZZ4NhEDANsIcfE4z7OcFQdf3eNWwUg4Q/egUy1t4Sx4iv3pFCE+2USOx+iuyuk/gN3+D32yJ4ckxlkJFNyXSFvVrtiiB2Cu8eikW97/EHjDC6biklTmiUqMaca/szgDaQWUyvCAClSnBQwss8zJgcK07pmPPSAQOgncWYOYqG9NfAQfUrnFvoIl5QzvCjJ8jzPgOYSZxCDMcEWZioNiRQknXt0HMcMywio3lEDNx1oBjCj6jmXzSXlWcULRUjitaOsdUhhaDhdlrG6AiKaXGq/dIJrmESZ0ZQRq2zvAmnRMJw7VvHvisRbzox6sZV0BehED8tC5FcCpCtBURah+VL4t8UyKCh9prJBzI06Ok4IyHuoxWfxU6b8U+uyr+iNsO4kwEgpxUNiCHMieUNSG1tICOh3kRtilZEV5HEVFeRNUWgeA3u5BtP+BllzBaDrEzSivzIxgMs2x2CK9zojVin6eVrq4R98PfcI24D/7W1oh74a9aKe73BsWzdoN9WtE91ik8vTPBbFJ6NXtKUcZ7vaRvUDytsiX4d2181OtkmjARVsq9XtxXWLynVBq9AiZvZRSX131eStOGrpL2QnKlOK4GJaNLtD2elqO1BEcIJu2FPuHwSfUlYTYvv4JxMIszUJnHVZrRmMhHJYijiixAj+CnH8IOHlGEWhSEeW1HqTZqCxSXFYRNrv5cqEPEKgFSGdVwA/0g19Xaz8FarozWeP7aTqUHeXUF1PIotu9ZlSa8cNGmS69mHwbyf1SlukR4RdBjtIV4RNEkOGiH8kE7lAcg3TcoDkF6uI4ckVj/MLH+vhG9O74UHhjgDaha4bLeh414pLMRBL54nzIsLlMY8QMwpsaPyyakux37CETJpftjX/ftj73q0nxImpZT1CynEHZqV+w4+TZwdVwmm2igMp3jgXS0B8k4FBVqk49EX3a+Qe91Q8x0L91gZsNfHPKPtA25KMy3x9vn29HiFA0xsujykPLBqh0Qjylaskftkl2d89ZXEpdeTWBWmls+LGKv2hci17eRNfBmi2b9vZ5Vt5XBKQ5Exu3pbvhJCvdeq+MUDnC7fkh74W4fZtvhXF9WZp8V9TRt9smCLOUoFX5PFoQpz4TpfTIXpvdLXP57JdLyPpmEBVN9yLBXZnLVN8zOo1XsHhn7INmn0dtWyDYJmklSPM5ISiRJS1aSVjJJ6ldrIO1AkvoG8cMrmST1q9VQh1bzkKkO7Ri9CypWq9hu6WSpqySTpSWSpX61Yl/GHiL4lREPrlBWKyeZjwH8y9i3O6WTpvhNmEvTMJemFbtGSnaN8HyNoJaMpeWx2H1dMQpESGmAMfPdv/7YH/jrKGKefbcWjxAL70JdonD4JAErRKhQ+40EFQSDN90eIgRqgZ6s1ES3isu2hVbGJaLQwppaji4JucR76i/mmVG5xPMp1Hwm8crdhOai8q1s5ZiTXd7zk13qOciuMMwoUOAy/nMSLWEuWnyUnRclWojLlcJcbFhiPojIWAG+6jYkYSZqyzkXlTk748Xy/XBRSdMpXrwO8XJGFBnFGdEpYJ4SBQljvAvKjyuK8gPpflbkq+oZQSv0rLB81LNrEKHJlXmvl2rPzRTsp0fdqFglqGQnj09sUXsmmH01u8eD+arlaKNmjxxwO3iPR0WuYsxNECDjSsFgjkDx5MqCW7WYh9jtrPFX4oZE5BuSU6LARa9EdvBtUeCiV+ZbEpFz0ZMCt7HHBHLREyLx2xyeIMsxke3ovixg24abkgKUJUqbxCNe6S3YdXDgZtLBWeY7Dg4syrc7DpFq33bkC1CJWsUeE45PugoyPukRn+QwP0nWSew2jtKRQllHCkQxLJaYYxX7jHB8Er+xjTig4EPikwcVbZIftLrEAauMKxhJj8AtcxVfZuCWxNtFVhptKu3XuJxP4nI+1L6cH1SD4riilXgMP/xQ2x4A9u7zhX4dtjSaFw6+UloyWBdTZZSVx9AOx50K7biGPaSghA8pN/kGxCG7xaLOr2IPKrc9jl5BxzaKuKF5uDDxHhauz6vYx9rWo7ILEPXcU21rkhgLVihiiTDCs3EJ9DvHFZfgIvkKNvJrhUaetI08YRt5XMUStGNlDrYxi4NigVbxYdFVqzhQWA8P0nrYR+vhgMBNulsJ+0SmUXCUulZZyVaFWLAqOvbiorAqSk6D4KRBiMLK8LOt8H0i1/Leb0f9vo6VsXA3zunCxGkQiK2nzN5CWXvbV4aHOVaxeworQz7X/Th3+3EoTeQR8nXJlNYhcMUet1E2bB15O9vXqJ13vO7YSQurR7jtOVEZ9tULtYrLbsA1aIXanmyrZHkpzMjL9jvNw70HDWKlPKFAtLj+4Gme6yRKuUsHMykn7Il4lz0Cf74bQ9IeLiy9idd1qxfPtszuwljvbh/rUlWEpkY/aWK/SyS+WVXvUYIxxUD3fGUdaVreaOeCsHPBN6vrD42c4++M+xC1qYXVnOAjPL4MFVNble6LL7XM9k6RlBLfrB7Ln/rml9fnKTvJTvFU942wkUr0pICBOMNvgDZDe2FurpSneHKZLrkG7Ez69GW/TkAs5GVJuiJO+ooWuLRKbkTDhaNX0pWGvYlU+tJBiVsWUAYvHQl2709ASUlIvhtplcA2vU9fuj+xOqS2imEXVdAy24tUBReoSl6bngQNadOPTvCcD5/guXbk1AQxB2+e5EWuLAsKkfFDy5DLuZJ0KQ0JDOkII9Kd5flseoYTFzrLF2hJ/LxaUslqSb7VknLt6OK1oQ4tiE5leJHvH+ML+P6XeVe+/xjP+f7jHEfhCEe+/xhfsJs8wrvuJj/D/xl3k/M811UPc9JV5/nz200+XCjrYd51N/kx/mLvJp88cs97S4vsJt27f+bd5Hs/+2LuJsX/WLtJS8x/qd2k6OCWB9oYxQHeuZv8YBufFBfcTV5W3E2iknuwsKo+bFfowYV88l/dbhLPiPcVhMm+IhctkZpb5KKl/EyuwEXvR9Fg9hIXvY9nV1x7eccdl9U2+YtxyXXJeS65lmbqxu6CSHsXp73Ebn7ha66o/ZqrF4/mCmW1eMc9Vy9pQTy/6Or9GS66ertfdCkmz3fTxY3Q/krGRn74l597508+93cf+yZ7Q/frLsXE+e67oCCxsKB/4Uuv+z+LsXH/VV168Rf/0mvpc730iujSK7rYS6/wX/jSq9p56WUHGi+9que79Kq8gJdemfzgJE/MWVaUI2/tFCNve263XvyCcqavKGf8F/3Wq/vO8p/v1is4763XmYJJwTSx7R1drr0whIu/1nLNftz/4UDsU20z4U4Y0He2zQS1Ut6nBsUeRRTZbZ0vd9mp0bJT41lJCt5ZmJ/X5qLz2uy49JetcFLmrIShDWO8jbXz4oyE5uzpPi9OSdAu3Idu374cNeBqts3ibeoDX2SbZdUH7tQHPHMJR3UVVQhKoRpRHtWVUc1HG3i8WXlhVIu+f4Nt7kEhhrpPLbcz+kibgZA6n2UVbhOifE5EOCfwEEutYkvQMAp1Ew96o+gsPLOPCjL7qBLZR5VQcLqJE+TlBqSvwM8ycJ2acF8qtOjDdd9pZoYNlFUPK4a8gvIKOzXpLBYYEfT9JE7TM7LI5OUpOSiOSxqwY5IG7HFJ6+KoXRdHJEq/c3xal0zQbCSVNeIx2WYh+OXOg5K2pgrXVAQtwbWMfn8VG2JUmSOwOkI8cASmtVIcl3GfZsgWEayPAe/uIxvWiOKOVjUDdlew18RNx9LRmo/oh1U/xJsCGYKim51MLzThI21toQUfHWdn3Y5lwVcMCfa0ZShnrEcbqAsa1QUDCmgW09Y8e2iemd0YT5GT7QWIpRE+KA9Y9SGxNw2Z4z2qBlpEX+KwE14pHlQw3wfEAUX2eQNQSx/isA+IM2QgPCBOU2hTlHROiTkLVe2+s9VqLRmUZ2wTUbMJ7CVAt/bwru3h0eewPaaFLPigylEMcTodUEnfoDwrNdOXrBHLNNNLKXjsEvK1JIta3Zc7sZAMATXomlD3kO3qQY+s9znQDM33LUgATpQOkICvBMWw1+dD8s5QP6pkGF0KypWwis7+VxXhH1ZoYY79OeE5CvMZCiRqPZsxCLOLbt+XEtqksNCQ1a5FPZIV9ZcXX1TYtaj7s6IOX3xRla5F7Xo+RZVDDNqKsByMSiXcEYvmERHyCJR//FFX/qez8qNu5QdZDOliTUHXRh989Hk0utS1qHufT1F+e1Guq//teRTlWVIe7kJK1U7K+S7lPwdSqouv6b6frSbZldJP/5kr9LMXTx7RtagTWVFHL74obotibUUdyYoiOyedfxEWg92v5WKuI3w5p3DEYhEfAovfwEkmkede+Ht8YRByGxq8xilIf96+ahb7OsjaF5EzaW6+1eUb58jU8U3uyMSc9zJfKRR6KKLnDEF0fsAjRhr9DIzUjkdVc7PryDwzveaHfz7PjE8z8N4j8yz6PPHJQs5vfHqemagt59Ofppxhe84vQ86K+eJfzDMjKeeeP6KclfacRyFnrWvOcpjNa8j5W5/Gdr4f/gQEB/AA/D706bw5j0Bz/oq4UqGS1uLNKbXn/DFkCbvm9NtzfhuyBNZ8pz2n197wv6GcX8WisQTzwEfn2cJK/ko4BCf36SOQpWqOXMynsr19D1CtxcF68C+ofaI9526qpG0C2Jy8PecJyLK0LefZP8ectBQjWorLYVXDOjSiaQ4cncfQkkZGfykQTWxAIIIHhfQuxlkuu4CG9KsHfn1fXqzWsOjk7ytO/lpPb7Rk6SV9uDD/+K/RgdYksOEX5n02eUX1Ekg+8wVKrqguheRXbbK/ugSSn7LJKxGX3rzfJn++imH1n3qMkgPVHkh+3CYHYXcjzHtt8uWkifzdX1HyWtIm/iBLokbw489T8hUk1b9ik8tI9H7eJntJfP6ZTVZJBO7/vGszirE9WRJlzSc+R8m/IqQvc6dNX0dc/chRSv6ynQYI2j2A6uCAYDTifRnnP43+0RjO/eqc080ftZwOEbgc5ycQGk6x3gnQzLHxyPm5ufCOl1sMqQ53r3CljdqNEUI4AmEDQ+8NzWNfJMjAL1kAoC1czmmcOgRFRG7YidhYY5azj9aYHDZLge3i/rVcT5S5fL3hWjXNe1stNT3aqInlMKuhNtcahFUyl4bQnC8I7nWZnBb8iGqUWY0e1ohOgBTsQ5lyvecqxpRiasG/4iNfhkg4nibC+jpadCeHK83bcKXxtPwrDAP2MrOUULqExX7kDgQaHeCDtjf0SGNMCinbW5r4RB0/p47s1irY0nWOxoIH2L51GMz0Egsihu0Mj3Gu5i6CmConJsVW8V44YopOYqIh3EUS03VoQZd/m/NgzshYmjPvn7eR/1niq/YeekDz9f0EhZbHT+9FaNR1dODF4sD1wLoe+2lcRj8qPLbmaaw0bOwDXV7FsOWhhWzsdT/Cz3Mu554jkYHEv3gRJG7/J9VzJvj5yOt1J+9TS3hoZYbMESWpY4o65rctRa3IkCCb5AFeHenAHMf7NxaXbDtqdm9BbfIMjyu6ZPgMnldkNZWsSQ51FTpasbflWo3VJIzS+pqgCPYKody0qkcfFRjCvqas0/5KsQI9+EcuHRSsGoTFZiiL+roRQcn9Dart3g7erCU0dII7Jw6u6knFOht6+DxTlyvocBgQ5I+XooElIz/oCvlBoys1PozoT58FU/flsC4RY9BjSCuyRevkg5YkZSKEAsrWBEY+YXgAJ4a1MqvJCKoyhpE6Pa3MYVbv+XmG/8JF/7n32jeSCNuXaj/VaogxPLn0gWq+UesI/KAvURhGw1WmqCJM+mN4/fGkS26sXaGVeYLV0cQPSoOWQcPb+qdMUu+5kfUW/rUlLvSPMvPe3l5hn8je3l7VS3eXA7CHWouRt0QUkRexsKAmgRbUU5wbZFh0wQ9MUPgguJgPqoUPShfzQaXwgX8xH9QKH3gX80G58IEKdaiGzRKypenyLXBKV4TQQTvJ8B5XmYe/6JCElRmsx5wmZTCbeDBd/Gxu4p14NmE2ojVMYcJw7eGE8Slyz2Ad7W2ql1JxkS2u/FyLK2fFlQvFLbPFqedanMqKU1Sc9k3Q1NxUm42Ea6XLRjUb1OtGrLJ13Dojp03roKR7lnPn5HSiTOvgp+ZmzLm7H5lbn/AaLhGyQgqzXKb1sNxY4yaIPbosxIfn/gRWLEbh43GoVVyFsa/alx+SG2rC9CInaB1hKT7WVdN6zP42FWisabVUiq2QM6bVepTVTWvvI3Nj8FXrUba2UQNO5ptfnTYt3hhil2A0DH82e7AUgaSr+YMl+GDprClNmzPwILJzyuJywt5LRUu6rEQ5ICKCnFIpRppAbFFgiXO2OZr3Q5M5IlqaVrQRy+NtjeHQmBO24va2LjESjUMLXyxxeebxC4MbN6k5/OZhjKfe1Pr11Ha9SNtNlGqFzuYg5rH5MImNj+f9pvU4Qmue/mIhctgagZIJREE5BMkH0oOCLtZYiFyceD6sTR3WOC1G5MMK2oZSsKSFk394O2J0+krGRvRdBBvzhprQKoPH67WIrqjFW5AFglNiFPE9Q9Eu0YYB9IQqahnV1MHouZibLhMqFzAxua7kjnuIs3P0Sy7MKmz0MfVf3bvjbe+OZ++Y6bXwQpki7Y9ZVYcQHCVuebqoL1pmp2CSTsGkmX+cTsGk3VFpJJs58rg9MdrB/bkO3U117DYy5cYHDb5kLt9gmOG6ZHX4fjIXlBShqaiiKQcf6w8xDnukIcbCa3H7VaiQpRhBBaoe60+4mtN8FWOeFiF9xQ1bBx++pvgRGR8ii+Z2NhIOZkF1grKB2/8jKIThb9S4Zw+/bBiaIPEKRXmuKA+64UE3VFaKl5oEuL4PdVQRIBhReySi+4LedDVC3bPXK4t1EXvYDtSfVjFYcagbXQkvpNlEATD9pi41MKdwOYX51WldMj5eWkmzYwwBoDzgrZhRYkbPLG2aVusMm4ZvZPYN5VEpRqRaeOahPRPUe/qFVCXPL3X5x9H2DXVX7SHPWVcr4dwGLmAppRylVEjUUak5bhH7VZFuF/EF5EfXoBe8/CQr3n8xiv963nzvxSj/6bx89WKU//28fPlilP/3efnixSj/h3n5qG15RpPC0uIYwuL8n1v7zRetdT9+zl+s/lk/MKsRY713OpGmMtYfly5MA3OGTxs1a1Y3nmPlGOajSP85IHxkB6CFm0tfe5ma0YuppbOkEVUxVVBMevBBQYmqGdQxi0VkeU50LaJGvhLFL2ouD+o2VSPC2NOe7RrqMxzRvZYs6J0P0t6z4OpeGhJNhINDX4w4mQBSRQGkMtERpVf9DFLsKyjF7uBirl1YtxWh6EgIS7Ky2AKboTx3whB01I72E6h6WwukbQGIOStEf5Hz/K7MtAJrAgEKgGkF9n5spBXkIefCk1yoDOdQXgWqyeWpQXBV0BpH2KBkWsIfULXFSOUd+3FC9ptLYO8AT35dYdx5ctbk9QQtNdMUXrWSUvYF02LkJLsx9nQpFhp0lzA0fVrVE5/GjGS+HXpP+27ovdBJeSwYpwCOfkYKT/tICulgB61Ce+pvrOp1PWg1eSVO2+dW2+8yuqptdL//nQ9/w1/DWFjDyzuErvs6D99giz3PfLHXkJ3TBq+50GTLVfF3OIIvZIn/gCW+XxSiMXpXMXQPKRyZdeEiC1YIlgSL03YcGPqAYKNq+AIl2e+HLpaB2c7lLejolWsL7l9Q0VoGjLKaW8F4CP2clAZlVDBwYbo0KFTo4PwJsj+sspHDP3nm1NH3fuQLBgMk5tdXOFWiL4rwJVTzqBpG5f/hbxZBusP/3a53FlsIfEYY47TYC7jJgQP85oSarnLc7/Yie0ME+KDF+knFVeGSrOMSTCWqR0rBrQFN4uHeAnT9/Jb9sW+6W3aqpnDLXlN0+cMStkb0YRCSolHFyezLp+xV/2IX/BgNM0hj9O9rmqAeK9yVYLFZS4678qCVVy3WoAW1Q6uuuphGKNsIAq4zQT1RNRZmxhc/7DS+oBi0wjyb9fOHzqTB0iQ3qwlcxVl1aNbWzRblZNfiqLAFRYiQdjwYAMI8+/cOG7+HVvj38QGjPAibqRnatFIEEPPAN+eZYfayLNqFAMMxNgsv3SRM8M89ff8X/tvvP/zADCQOPf7JL3717/afiMKQmd3vOQxNGw1jzufcjOKjtezyNnMWC78gyHiCLBPI+oKRZzbbQJEbAgqRpCh0rYwiMtWQaPPgFjMsLUmmqmQVgtu1uey0hDvtRBQOQXox1aaPCDpHyVUJeFA41KmSglIsJfvIKigdZVoFpfhFzeXJFRRYvMgaqMMoqjACa7Qk767tpEDmQ3IK1jxQILR36YaFN2fwtDlFcWZkIbUks1FwbUgtidtwO/6CAm2AnDIPf2uekM6jD9GVq6Yr12PAPTByx3uEA/HWLPo/RM1WKDG9R9CVhkxjPAWI3isSZk7fg7NjHeG5KyOnjVxXE+bkPYcdLicKpntEb4gfmyilSFDStASMIYvO2ni0xJ6Vm1eJh/tXCreC9ptBlYfm+D2HGf5nQDBzh5ZGzt4+vYZwhX9L0EUwVlgVoRg2ZygnBXsRhfbiTyAPw8bif9AUIU1cu6O9ojfEEijfKch3amE+wxu0EgulY5n41Wn3qxea+C6RSM3TmFusfZzGlgQiI4GwJKBWOxKIC5KAGr2wJSSGEP3dUl3z6BmOD946bR6/+zBLYyHmXKmJNBi3b7aZUNjlgbxmGMYGciqY6TjDbESXan4Ax2EaPyK4h5f0y2AOwSyCRJXiafWZCCN/JHS/2E/9pbg+iC9L2g18kBD4sOs/3sNHqVb9KEEQ/j3hUJQgPHZEhxf9oEVjNcIVjuciGJDKHv64Nq0womkeffdhlibwMUFfRqYPj3M1W9tvFQQ+WrNWMZSsMXMCBuNENhhQGA4GzXc0rh0QUUJxpARFd+NrxDKKe4IyBDmo6Us1sxMKXod/IHBdghyMNLMhlVtirMaWmyspunIJgytz46Pd/tZE1GcNnwZh2qyb16RhIun40HXOLW8x7FqcKMO1bCaeHWXQUGS0W4ByEL1LaI4rG2UQfgILsWFlXnbAKZtWlCvzklmjpmGRJ14WxkYZ3oyVlokrEeFTYHjtrJHamlTIYmQlGKhlvaH2sCZ7uLuMIhYF9Kca/kdenTNH76a+CDVsHr37MF1KioRUYatjkfqFGmh1uQbl1jM8hamDG4xd7znMzLkrMbDpuSs3YMSmIPxQCSdw9D6RMM1g7f5bZ5Kgd3awSXdx/bxYpQ14IC7EKl2+Tla5FmPM/gvwxQL1qzLsxq6h3mcp+4YaN4EJot8QMTAu/CFMRD+kYfanEc063kbthCmtRZrWze3TRtYTHOH1/aM17qg8er4iOUUodwRMcBsAQ15P04RtQJBxVjfnzskUasMbuJaqx8KVHnNaCAwj8pIhLM2j9wvNMVoe8ldGcB5Aoeh37FyuLq+yMPopN0zLOoy+bUWRGPDTzFkuh0yJW5FCK2kXKY2wzSeeVmPRT/ny3vBnljjSSRzZIXEkSJxWInppFxvVk7AznCgtWvNjvlENO+L7jvhegfjF8RQ4nnR4kI0n2ket79dsQ61Mdpn4qXJsdbQWGKZVPZbIt1XOt1XOt5Xx8Xp5a8KIb7OMb/sZy8YdK0pFhrYVIkS5qVLXRq+u2fp+W79dyY6mGG1/NmGziTDSAnefdKMYapC2Tg6w0RpMgt8Ut7RXDSwb+qF59F9EwvAMh9FDjM4stBwDWSuJofQD38OcdMimFTBMT/PoLLct1nI9moup6G6hPS2jvcI1KmE1QffGwszNIEnSRBrZTJg5frdtkud4gGY0jRJCeirMh8LMAT5gmYAHHKEZvVtoL7oXZFoICiIoE1dOJ6wZ3SWgkOY0EAEI1lartLXy9lozvYd350HC1i2puxLpkeAVUBNJ2Nb70ZqvWb48So5dxX5hoXBsMiwUBgulVFwoTHNcKKUwZrpEgQjwMMNG+oU/sHooisAFKhLnrUhcdEUcup1G7xYEJeFHu0UTLZNwRqPhFUyzBK2jmHZTC+8vUbeTNdquc4pJy63eJDRudXQp1zqQPuv64UU/NAw0jxKoaXiB6TUI38hD28XoLuFm/7Qlfef0R8Y4WuMhTHpQRFAF0GojTF9s5Nh0wvtjjEKmOa6CfPJ75Emdje4GlAqqvnG6JkFkw8rwtRed5WI4WxsbSJzDZPFxbWTSEJLPEDBUdw4KE0Pm4yW6TQyy1O4YL1EYL47rhMYrxIWCob2qKiQtwHNaAJ1LSVpJcsFbuuTm+H2NdxiEFamyXuVyjmm1viYsa9YqtbzZ8ToQdir6DVCpotlhFnMdkplaaJhmKAk1N3NrE9YPSkaIGnPU1AzVuRDtHGoESxiE2ZR3UhfHJuHQnkwHcM2MWa4hAJMAJiKo62SIB2PJcpUi15ic6iFoTO1HpRCaE8RV8zRkDAeESir4GyPeYhFnocKzGWU4qRBZMBEn6p3Oy6QV78HamsilOwiM1nscf9FMB+sbNQSNcRI/uk/o6jqrxyaZCpHwDWrO2n2nmq/3DAtrnArLS9QYApUinAa6khYUj4Lqsc4d/jBU9zrqXgvFOsWlXFRcyu2KS7mb4lLGd4mT40lv3VxeT3DiMTuuddBAMTorPSinY/1JDUaiR9d0L41d4LS5Tn2AKKIDHUCZnIrgddwKJCWn7OqKjVWjvTTVPK0n6MJT0pJUXle+t1DZw/C578EQj3i1n6aQH1WsVquF+wNo5d0CSbMS4TV6MGArJQcF0z06GhTMPHb3Yaar0KYj8KsCv+AjtN/E/LpnjcCpYnDOcgomozRPQKkgIxVd1rW1tRL80WVQXoHG74HNAqwyZEbw5BlEDmCLMyN2ccyoTMyoDFyoTMyoTMyoFNrNFcXZZdoeuVcw4jqOh2epiZzIjk7MMHSSV08Tn5ZmSftOADPN6zAblPbTeqyyXQ9N0nxfQueUsFfj62qeIK0n8RbZkIlsQ8bXuZ1+lXb63dQCL9+aoMEtWinhPKx6dhtVWrCNUikp0yVQFHEb5WfcpEiY7ANcjmcyDsLa1kQCQxpLmrwcHiDzPuOYN8zk9qkr3NR1mlyMmWDq0gl7t6kL/TlFgw7c1VWRNYt4Z8Laj9LauaVnpUtpwQ60QBJgspYeirgUThkYpBJsl2D2Kjt6Ja2iZ7jLjlCdi05idXGTuJRZnFUpuBv8QeFkaxHZIcOaCy7UE3cfJi0T5wAkjtvE8eKbM5A4aRMni9nOQuK0TZwuZmvtPczM0zbxdDHbbnjzrE3A3yzbXnizay8ldhWz3QeJPfbNnmK2fZC41ybuLWa7v/jmACTut4kHiomDkHjAJh4sJh6GxIM2caiYmIfEIZt4pJg4AolHbOLRYuIxSDxqE0eLiWOQOGoTjxcTJyDxuE2cgsRxmzhefHMGEidt4mQx21lInLaJ08VsLZjeT9vE08Vsu+HNszbx7N5Ctr3wZtc9dnyK2e6DxB77Zk8x2z5I3GsT9xazHYDE/TZxfzHbQUg8YBMPFLM9DIkHbeLBYrZ5SByyiUPFbEcg8YhNPFLM9hgkHrWJR4vZjkHiqE0cLWZ7vPhmcVnbJsvbeSEK7IIsR3GcppqlxBpfIIaIYBdFjXdDjf2sHDLUITlfyvCngntzmUYLyqxrWrhAxcnIosRw+6GHh4ceGHs1P/SQ0Ln1/ahPbcD7v0jz9pMIbk8iEpnr7KoePcttgMTofQJP+BgZgAhyk4mdg0oKenx9GnLlbcPNIR5/4XavrtWGfhDgvJ6IOr6mU1emVfTbqEW5Pz9BEY0HvzyLmQhvUnsUyqI9pIbC7jPbgqXYOdTJ7CkulaeBBvRbRj8B4Q/E97GU5aH2w20sC9RvDtCVPl112NtfdG+qamae/lZnZH4M6doeoP/qNIvMf/+pPP7e6vQqdDdU7UHb7aZg/t2kYpw7d+5caVoNRz/isH81B9/tzgXhFx7daV5THflr3DySZYRfZs9H52mBv9ttluAXOhlSEMAFodtPnHJ9e+xbhdDtu75tuxD9iMfyOVSjJXagvaGjNRb9iNeYOYTZhhijLma2FWTYC0O/xGM4S91NNalpyy2QowtCz8JnMwsnMqPAj+jCQFkLFoYmEwNp4tmN4AgflLlL69VamKvtPauMPiSW00UtXYTYq/2VUif+oIwIVchGxPYpLKoJ0gRtErJwwaaaUk1qJaIecZhHhUBxQvuDkmUh54v4BhzqssEdA3RLIAZiDn27aEdijQDC3+EF85+s97K992STkKhC76MMYGKFFmaF7T23vQ8QgMya3GDvo8RDSzFksJapDtLEzhtGxCLjm9e34TrgXY6wY5FZy2C/g6zfZDZjI8E/2tbd8JIuz/4xx3zwrmI409x0S3y0ScAVpn3Drq8xs+c92Bj7CycfGkk4Swn6QnvQkD7tmWextqr27IIItKfVEFumPWhj5JZmIqh4SFprLUq4RaHmtEcm99ESThZMkg3KwL2HvWPqFtaA6FvCmSvb8LqnRYhKALSUrG5rPGQhuVxrnhpeN8BUp8NeXM3NBI1G6o2wQj80mw6XMnMFvJyt44nLlev6wwptPcxbp9HqbRVTRkwbPpu94NNhaF/I6dHw5W4XZ/i05g0jGnYocIuOz+FJ+HMk7eQir6uF12iUlV/Da05zK3wpTjr45o5p+2ZBnhL13v6t418TpPZvPbzC+plH5NPguVvb0PavCv3Lfs6G9hyFjk3C78DUsjAkBRseaziIzKXPfOmuw8yUXZzwAVFdQlteGKYaOVwUbkWD1HwVPgCGMX/XYRYdEubbVAJeCzxNz2KseBWrwrxaB79qozW23HAtarSQWMJXsRVGTdv13Wd+dGaeGdHeECtB+8wP4SVvfxnGdBUP/IKsf6yJSg5Pcl7rnzv+x7L+efu/oPXPnu90t/5ZTkvnQcuEmPkJ06x/CWcsHM5qJ8OzBaL+5HecqD/0nYKoP/0dK+qPeeSsc4Y5m+GBNFHEoJVj/3KlHBiUq7WkKJhmdRo9IQR6dd2AZhin8PExliK7s5/cMChvQjteLc0JliY8+hK6j10Vo6+bRv8coFP0N/h8BWmIXsEmNvMBQ0Mh5PAufoadd9fXCj7SIgOKC8kDGr321ohryQvuOnTuVnNammtBjVXR26He4diHP9d6mofaT/FoH0YbofzwWhx7ep0WdSPQs9BcC9NCus/JQe/aBLTWRJlT351n1zCWeK9Gu32Rmu98d56hWxdZhAsjXbFAp9WD8vqMtEcY0NZSVl6ItpGlraVsFDvfadfg9Vlz895i1mtjNNIRKR60UHdBu7ftQn0ES6axqarnRAOd9V139jns1lV7+SNXymvziPhmuG4xVGUIPLHg8udmc9tEsRYB0pxhoJV8S3LfWtyqDotbAhcZtc53sQ8Tp45qK59OCKnBlKbjkpjTwpTG1LD2KQzwdSlGXDl77tw5OR17kuxxcBdJfyP7d5n9q+3fAft3tf17bZ24i/2HSutwPabD5cSroa55XT2MhS6hpYdKY+Gqk5Q/gMaUYJdWootcOufEwWHX17j2QTGEWTI2XUMngybCMBJWqMA7Floo19cKQdMlLiIxSgC1jOKkS+IHwqITok0HrOwCj1PE8zIe51BbQY+uWuamTATMbbQmzLPfmWfmf8Yo1ebgd+eZOfZdi0KIQ2xgA2dRwJTVkokbFHBhSS/ekVluy8wD2p7zEq9AczDe0U1e6CbeDEYnRCy6Yo71Zk0iCMWbOk1og1hmnF/z6AtCS1y89r5bkN3yA8BzPyEQoCZGYVpPJI6ciD4piuhMG4roYbitrlp4p7OnEYvrOPwBPWf39+aZeZJSWMmp0wg1VSyth8TScjlcBV3yk6IIn5Ybd5/8AenAwtz3PYd9xkEHxhPyKFON8OY/QJvAILEG8tVEIvyHC/rO801CbvJsNehq6oZqjhj6gFA9gnGcmgJBL0AJx6lJ1lgskbSnkAhqJDs2ENyc+vY8s0bPAyD1BkSg+SoWoSE1WfNnVvrcPH6+3GbPt+aZ+QXzwLcdGI59cK97MJWhXaG8pL5KukiUIIAFuQVfneLJAfzEIwVpDpwhukp7pCBROiJcB/RkAB+olFyHg1QLlNCd9VGZttrz1nf/0+epDysaoJpfoPoeeV71Pe3zYC5DA0sqVidrYBR29P4FmRKX3T0Oua/zWKFVgoql5YGQU+ry2poQc1pejSBD6CVsQ0yg9oqzynoJB9ozV07HSnvkJayM39RBA3MKlxO9hAP0Eob86CUcAEdrUkbyEla5l7C0XsL4TSMh3961NaJAmCjta1lP0baRvH7pthVbzqjdyrDXa2VuGmtoZXaMNcgo6ByfXliLbSG03HYLWtZo2FrpUt/GIUAMGjTSENonoz4y2dB+ejVjZvh6jJ4GMsIHltgfI1+EHxxB5emiOfaRA5Cer0X0aYHoFKSYMfvbgHjEfIoQZxQUTK92TqNlCT6RwyBcoPZPzb0uhV88+yWyXxJ/IRABnniUjHJCzzrOFwrBbByyeTAvPMymtD9mO+9rVU+wFzTpVjFteB04ENLDhylFY8pnLUAT/PJDVyyj7VWs3D4z9nD3aS/Eia8DO/QIdTlawthoDeRHL3p1oBkEjI6wfliKdmrI/IAiUvtrobG9WZUdJWEd2h/rDa0Vdp81PmzbnYZa9i72Ft3oip6C1SKcAVDQCQFc+SuIDyzDhbwsJY7ws7KLM8+LXbysgFyYMHOvNQMCotqf0QcFHj38EoIW/q0I/0JwCW1s8TZVEATXikSYCHfXwmjQkrKvYlZV9mqbURQrOv0+x1Kz2jwBFToPYC1TC1QDGhwzvetxkNUsSHlS5Vo8TZi5kzymzcNP4SYey2txRGWoRwcFmU4tVuXgi1MjnhC3uDnw1DyL9pNy3ZbESC6oSLzL45XiWKMCSEMqh9gAPCAADDucjCzbc0CqIBf5UVIhqledfT2KekSENbIZI0ye08mJ5aPpu7WLIFtj2pSsoK06bSrtUnIei3SISfmXMFaTqBtiJejmlqnbxJoKxv7MeM04zFrxq4s1grc1ghcbAStQe7qSJpzs3mgFcbMiXcUYUsyd1QDBrP4O2xEgRGAYIm+pdqWWeJXA7Yhs6iBNqgNCmbvRC6BKwJ2xD4xGQfU+Ge+TqyY1OS+xrThli/Pz4nxbHIJqlUMqpw9kFQxp4Kz8jGySi4gl94BQQGvhiByil2bikVcB6Hu6tN6RDXc0JSwi99csEJGHiI1meBhzC8iiefjXHg/mzC8QWA+DdVw2fDrx+uOKhUdDfHw8OENvFR4ukFo+Sa0aI3EVZOIKA7Q5UQUSETZ6vvYyMeVlYsrLxJSXiSkQ7SqNPR2CmAqx0wGJqUIhuXdDAAIjwGy+LqVxKcy0Idq/ZAeaSclx8YTpCvbjiEBBnuPakWYL0k6XTTBdA4WjVE/8uISiLgGh2CO54LCpvlDRquoRpp1PFPFBEnqI1Qa/MFor9sHJRD+TiUFRJpIkhjWOJo0LZKKXyUTI4Rf6pgM6h3GzwbDYE3MSoVp0aW2NL8/I2F4y1hnq0hi1HBuDd3N4BraK6bhqK+ZDTGdkCDIylPNWMKQhVtPZHbNal7t0h1pdtq1mmukq1qLDNSJCye71hrqEuZxIvo2klIW1njNkrv/HdBZs6Yu3PX2xIt/bvmyzFuV4rvfhPi4wHDiiO06EMtB4DAoMi4eLHwsztB7ZzRgf+ETPAA/sP6GCQAZd/pXgPz5ut46ztTWM28xMS72aV9BBigM7OH6CvZqz7q9OcXjld3t1El953V4dx1eq26uH8RU60bbENMFTdub5PLYHsXQRJRUZf2emRzETz04gMb4I7CTDZuybOPZMHAuYGHi9OwfTY1arNPGMaJoHfpO0EhM2k5L218FUWt+flAzH2B10OIHR2Mw5ZLo4nRWBQaLVslpv9wj2DQrRObTQ1bRvEc3Eyyu6dBbj8up1NW6e8GLPXEmhlGKz6zcPW/A8zxwoZPe0opBRvB62tfncuXNsGrgvCxEiwkOj/5Q2Zaoel8wTHh5vPOFt6CeOVscIb8pidfoIQaeFObD7MAOplyZKlzbUOOH5PeGZe/M2WUirdbh6EQTQUlri6R4eJBr2au5riSgZvSg/e6fNqd+gwodYDz5Ss+1Pa/g06HhadSBubU8Jti3qeFrBp30dT8t4WbXViFkj6gk34UY8Z/NTdKcyD9x1mF3D2KtRUxOp+cO78OwJ+sG0XMn9QZaddfak13DMyUxliLyhhlgFMelQ9mtEDUSuwM05NkZModVSYzVOmH+tgG5eDn66WjePffwXxjQ3n/3Dat14Yw3Nze8+HdbN10N4+uQTYd18YNlYA57fMW1+90xlrebm9/+vsG56xhqNmtLc3DRtTnyuAttTjJr99XPzzFxtPt46zMyj3PzTnYeZ+TMZfVlUFdlwf/z7lbrxs3Y9yurmzDubY7hD4ebRn84zM2Du/Yd5Zj4gzEf/cZ6ZDwn4HCfXqBr+tzTI4oUe5BwKpIV3akizirn3rsNWCW9PSUK4OeHZk5PMmsKU6olEGxy5sT+GlsvU7JzWvI6heKXsYOwEpp2UzLKmWXZbEhh2PUWkBfVxgRwomdaP55EqRtR7JONiKe1QE0+LsZqPu/8lIe7t3eONtUhz7aVXM9gml8wJ2IMRs6mtrVlIfMysNtjzgwh9kuiLrOYzvN7jccYY9D8wvSmFud1QC6Cp1SXA0s4werp6rFapIhD03XOvq/VUy/Dzpmmzb25drUaQmvvmXl+rklIYmCvps+pGxBO+Y9pMrq1xLLYH8n5q7nWYF55ozwy/vlZ1fRS2j6Hro/nU3L+vIfUMKJhh8cXramWQYRUt60biibwub6wJSeOQKGC4rTvfseut0+iTgrp6/qCMCySR663DgG3M9TUCh8VzAkvNDVmhUDG7HuGMkcYE+a2I5qJAcz+jOTTURnTm+MJ2Vdquem1dZUbajJ6VT9SE9fZGx87qIMN0JCd72p0wulZgpmyvieiAn37hzf8eKTwyeRlOLeJNic5sFBkyeDH5H8CuZUUS2Jtyf0D0me+dmWfmB2fmmS73G2GkLvdrv3gGQhscOhzxB8SytqfmY3TR3vYCD48gxWx49XJW26kzGO6hSwUr4gBJM8Qu155ZnZqjeAzMtKf9laJvUAbo0Xw5nnzgs2BQaviLgZ11sEa8Cp4PiGiNGIBfq5geYtfCznJQLsOPgzQJ1oirNSKNR4+AxoqWJtQJeiAJYse2H3IMiKvNd6mb3oBYbc+NUDnjQ8zTTJeGGM6yOqqKVabZK5k9VGlxOvihgdGeRvXT09Z6RqJhDTnTexlUi2euS81eQvchmBXPPHKGYFY8cw+nrgKV1giNv6J0jbjW9nGNWG37gCdB/3HhQXzmpy7NCmvQhwdafVqafT+YtycR96Aln8S7bneoFdBxE0ITYOlLmHWMwQ1V9EERXo7XhX1OF8eX0YdEeJnLmbRl72PuSACeENXDDygeztExaoVOeshZJq7S2WGNC4vgPoYbRliUdJCK6FoGZHyGMIm8PWHaW4s7DA+PHZmx5xMEJWoqa2seUAWjIqBqBbM0qCfBBvLrhgQeNsgQzx492ognZTM3o8vmt+498BibMXe+Y1dQn3bsiGfHHwxyscVyEcvSwQbCE9A29qSqKlcXNRHEP51++QVGhTmRnyj3nQwXdo9rv9g9QbDJ5HiAGjMiSGAsCaY5fbXOuiuqONCKahZabUScAR5LXYoDXdIiYWtrGFe3SnaioTl5BoPJVLLTCc1hz46LpY6R4su6Col1aAvmp4bXqZ2eLofA2oK4pEHZ9V0hozWOtdZCXQs/L5yJ43AK8xp2kx0cz8txoxhIjRWJb/meR3q1h9ILgxr2mWfIJki1MSaM8bjCxZi3Ob9HrKAt5yhdE3C6PgEWJossTGplWZhEtDk6vFWWhaFFZIkOoV6lsc6IDnWVZWFSl4CFuQV4NWLhLUN0EGRSeJyWMSmZMymPMEaUyxl7Ba7lAdeSyLUIR4/HeGSsrHWYXap9Zs9TSJv2k/Hwv/jCmxN32E2WIH/mPvQoGjl37p3/9IdffXLJr1Hq8BPXvLkmtIczGl3DonqiLDZhqplmI63WLvyileS/73h7Eoy0Wt9+54e/ellrv+FN8/Gn5llq1UiQr4k0qq6DkZOslZRHTrJ3LMgljQ8Z9n6etRZ5H8D7+V2/stj7Crxv/dkT17T2m5Nsx8IMVcxw5EP7XrZYjh7Mse/e//u3X9LaT2jfXfIFGrpwx9v3w1R6x48QSnnfjxyUMqdDWEcuaE9Cf+94+/5EmvldvzLZlUQ+kEiak2wyKXWr1gcKSbP382xy0aZJDZ9ur9OtspcaUUdDiWImtEKHltz9eTSSU9nsM6qeeClOX6glwT/bEYae6oOWLWi6wlp8WzNlXVijdLjt38BKJV2sAbGErVRhBWrxUhyAe4UOPfFLDFzaJTMobQ4RB4+3MONqumYgT+G7FFd3aLZS0tVXkMIv8VJm9nJnfvbyNWIPmRuKO7QYabX0r6N1/epUqxE28qOPHDv8u7/7iaPvm4ueFGjXjY//+sk/+tvv7f/Mb/53Ro8fY6kWXbIP1/FxZ/YjaBqlmRmwf6+Fv4mEpuqdidDyxod2Jh4kh3cmUns3PoTgH9amSgt4c8NOLW58aGeefeQ1u2OpvRFxlxYjr9m9Cw+ER1bdpdXIJbt3jXzi99/xB+/+r6oVwgcjrdaJg3/ygT+5/8fUpJUy0mqnZuabLNXM7OFp9CmBQlzuugGPmJ5hqVkNnGgPN3316BvQjz4inpZQi4BaEpXVk0ikZ0c1TIvOanT2zY1Y098XauJUk5YE4zlB+vgetI6573sOgW4PRwSFb7I0NS/XHO+J4MFeTmfv3+Lt5inGgTqYako2oG24+S+kLah8zrag4gK2oNZYFH7zMHqkzXDmf20z7cwsNS/atNOo1Bz8UXebzp5MOwT1PPx+O00zM9L/v5L2BbSaXYzCa2D2Szrb12T4yij8MW4IXMQyZz+4jLao4V/l5ihWwUbvM6X5envqCYJnrAbyRZIlAycFE7RwBc8kLnXQjFMjx4AButD1O6fjQNPNLkcke7o7Etl9ksjuk0R2n8St+Z8OQN7QRRHFQysWEnMbKaVoWAZKMMI7onUMNHnndJq4b/BAhkOzvbwJ+FBkD4V9CPsEMRsrlJJopcBijkjBZh70MGXm+cb+xIP++yBqmnih5pln+XRSols4ssOD4pspXm0CHejm1xmHzc2Y0qwWxp9t4GZiOs12Gou8DM73srroy5hiOCZMl9dZCxEPPdU0XlkKE8yac3c+W5rWgv6m5s6W2m6iWTK/9EdrLCTAt1E886RuEVIesxWyvMIEiA+0Xq5tcLsumVLMJfJcQddcYcKoeSumNVvYOpDho9Z+hMN4CDwgVmNqmAwhd07HHLdfLJuBLJuBLJuBLJuBaFsAZOEwAwmqRdAMLBQSS2faKGAGCpqo4S8zindF5k4K0XzI7ytCFX852vkZhD7EHQUaFIIm/oFybptOZwySzhjEGhHYO/E7BeyI50xLQENa2PQaW27OcUif4y79T5j+pyz9jzxMfM2ygywEj6IzC7ZGRMaLS+apn8wzGyGIeIZ9B6KSbo8xZgbiFnyGbjBKeKYBJS0rnLKKsaQEWxs05XI2EIgjk5/dci0sjrXFW2NaFMyyZIzNsJi5PEG+gvclJS3Q89Md+yZyrOajbXmJzgVKKUZNTIJ6XMJSk3J2zoe2c/YmXEvIX8axK2YQWYZgbc0NbjGDvFAG1Z6hZLw62lNpH88LpZqjw2gigAQCVHAyZMNTRoiiuqd5OIq9wx7xqxksNnY9fGet+nzEisLlvWk9xgP2m9pvUPwpD9YLn14jrjJ0r2EN/Hw08INPd2zE8wSBBn6CDotPshTPjBhG7Mh/P86cTZNnrktHFJ1wKTzEMo+fhS3yau1hln+PR1hHWHaatSxdI27KTrh+DX9V0zXihuys63oKF5qZ/HFr8ueTYaGwF+bKTourDEerH8QwE8C1ejfAT4mhb1stNdYfxnYNDaBBmcQdNzbdo6afLnSus9P3Fjr9Pvvbo64eeOaCXb0l6yp1eiDr9FVZpzV2mvoDs7cfGwrNk4Ndae9+S2rGfRem+K9lzbgha8b1VbTTKZnTz9jIQKQL/4JWtEFFqx4EQ6NFjrsZPCO8gi1mXrepzcaaZbf3kP05aTosv8MvKjd0FrTCRNNGzWYpPW282fCTuS5ZumqxFsYgsPDWrIQqmkPCKOFNFUhD7UeHRCx0aRWroqcaN2wdpJyTGgcxhccjLHdSYwUnNdbppMYKTmrt9EIgMKsbfiZvf3i+9ofU/pDaH2oLM9XWfl3SgS7rCnUlbOtK+KJ1JXRd+VLelZ7zdaWHutJDXemhrvQs2hUd6qquUVjpQyJmYk73rGLVBLvV09Et9oJ1q8d165dsaIM+88EfLPQ4RN7L6ChOFMIEf8MXPcX4FIbHNXd7OSD6kqpJcGFAe3sHRJT04D0FiAarP1pLLjzGjSODNcWKLC+0SgIQBxUy+g4ormoFbb/L8FFgBQQ8vBLkRIXMvoGfatWIyzowIqVjlsDKBWXDQwVGUmk2SpSP4qFMJlEZh1arGMsDRCXlzMw3QDd1NPIGPS36CKLTagn5W6iAy1UMzc0rFAMQnwntra+VuusH5Tb9AENzepTLo1zeulqZSJVf1gVkWIYbyhS4bF33ZhZK0iwDXULm7jXoaMaSJYMy0kv2Y7tafK0aNi0e+5K8rVsIpSRXseUJtr9/I942hIanQ2y5Dk1lY61E1yphuorRHgCtrEu08ZLAEAWFJYlgWgvdY42pIGeFygZ5VtnQH1MdoPJooUtj/XEFbWQrQGRp1aEhdLoP19aUvc5JobZY6Kr2VzGWFR9W/RDtKcq51CwXpWbZSk3Y8KDyFdTxNkYrHTmz/dBUzIG7nAWLyPc5pPcVRkzlIwZjQVHn6jEP3XjwwmDAUoB2xrXQRkLRtd7Qxivh5tiP5hkJI2YRyY64JyEeVGgefVCEHxO8lB8q0N0pmX32Jcq8PF+1UeLRlSDtw8ydAqeoFnaCKnL5iWG8yYhASzv0YhWrJAz+hBspDAUOfUUzGHofuwbjzmncJQV2Y2gFCltWjEoDuy+uPTfuAsYdCwbOAuNOFSQghUGN7kf0aI5eDEgQniYSK9V8LcW5TuNAS9ihwlpmedm4DX85puOSc+PVJYq0nA8lua6TNM4SAST2KB5QAJrEc6ALypKEIzQVai/KBikmw4qyYa+vseUd9hTBAnuKIDRnfjKP+JopjOvGfng5jysPA+MakVb9BZmuhs7oAI0rfNhP+864oltOv9CANrOKcmZWsV77Zvj1jVpAF4SZYcXGWol43t1zr6u5dlhDCNGlxV6eQy6SA039YXWUnIkGXt+V0EQDHTHKbQYaZTTQWKdL2EBJ1nOwqRMXbg5ib6ZhIhOhvTEKtG1tELRy8YdE3XqLaZVaRGwt6xbAGJ9RZGv0NoWpsVLaK/EnYb25sMMZ1za8mcawHlr/JKdNMItWqCCVajCHQeSA8gXblwRnLe5KMoy6cD3Ij7ikqwlHPmftEEEbwMsIHYyhZUIpxU29GK1J5xcA5cQlXB6IYFhbR4iMaIYC8+WBn7pYmIFWlMI4mVl9dDSC7kMebtag6ecknh/g6Q5u9z1or7BTXYH8ndMo/WEnB2+5VuYcmzYB7Km0Z0Qaxuj6Uk/QLRMYL5+Jy1qC3ELOanVwc+in7p6obPh0+GnhDELIrde8HE832Mjez7Mb8aQNJqgc1sqUgfXTPRqjDK2kBH/uePv+xMtvaPyF11qiDt1d9GJFC9jRCncBiNfF5HcR6tL+RJpvsPXIMkU9EdiSFJ/bOx2sVV7g8gfvbNpK6LyWIgt1XsyA1zWFw3xLBPNy6+3Brcus5uH/yYUgQrY4GVDQxU52vS4Lri5qv+mdTgR6nojU2ufUY6bVSO+bY6HViNodK4TpRxO2NBHmTk49aPMlyRxRsHxyRGHkiIIShdTL91902wb/uZu2gmxAzGN3HWbG60Da+IYSflHBdXf0IEYzAI9H4EvVoTGTh0PMrBJDhiyY/eEu2YfYMjJ36dMSFO0rciebahqXyHaAX0Vh3xIl5kAzDYBZoLOaQR2afjs7s0QU7AgMuuJYg4CfnJln2us3wnDt9TsF3Zk/LNclLczup+YZOdggNvEo4TD2mR/TLqPtG4fujNcHaIQAtEfTAl40LeBaWNMCUALItACfoWmBWIkuBpxMC7C9aFrAQVFA0wKug0G5DD9G0wIDHBDIWGitRVnJDAx4ZmAQDrEAdl4WKIiTCZRcxZbBIkKC4Ygato6Q0XjN6rKcLMTXkVJ/BQoB2nzV7Nw52wWlpeYgXM5+v8uGimVaIAsPCy4LEC5dfdqk9WmT1qfNGW3RIRgDscAu3p8NeCg6lpne9c/FtwyNO7tVdh5Ptudf10X7sYnwoyCnYZgSZXo35PczhKFk5HQiQc2X9EZzilWCuweKL8lTwoxISY9AP1TQO+pJYHZOJ6WUjty1RGT8aXRUKxn271EB2TkN6yyNuaEoa0m5bpbBttRHBxo5jLZB5VnC//G1ajZoCsI36FpE5rakzGKxDFRd/JBnsGQLcoewi4V6SFcIMVo3xhCX2D1uu2fVBds9aSNih7dw7w68nD537ty53ncmSnP307sDmqn5iN6dlO5IlPa0hN/BHTsTPqLv2kmAYqhD3PgQaB53aK7VjQ+N6Lvwq107d4KSdcfOQRmEr+VyzqpPEg2fMLYG/PEoKhGnmwjXynoi7GYMr3BkqGV4P2I6CdOLwD7FYVUWmgFNr5m1G0NrOywAAQQFjJEkjAb2OlzmoH7e+Y5dwXbnskz4EypNlGb0MTqRAVNDFBtBeB3t1dA4hOH/+9u8zEyrNc/CO/vHbt68YWbr5u1TMxObNt8yPjk5sd3+2bRty8zE5JZNO8Y31yeaW8ab481tt05M3dZsNsYnZ94y0WhObRrfsqUxMTMzfuvUbZPNsZs330g5bt4+tbkOuWea47fuyJ+PwPPGxOy2mW1Tk7dMbNt6S/O1U9smt0xMTt36htsmGm9748T0bRMzzdvHZ27ddvPmmeZ4Y+t4c2LHePOWmeZ4fdvk1s23zTSnbr15fLI+dvNm/MS2dsdUo7lp25bt22aarh8zI+OTdcwzvn37ppvHt49Pbp6YsU22yf8wPkM1b56abDbGNzc3bZt8y1SWgMyN8dvrE2+buXW80bx1ZuubqB34zez49m1bxptTDSg/S8xsmdg+sXW8uW1q0v6iDPnjmZvh1ZZN2O/NUzO3Qn83zTS3DA3Z1k3MDA2ZLVsa7S8bEzO3bW/ODA1l7aMnQ0OvtQ/eiOnr2j+7edvkeONtQ0Mj+Pc1kxO3NRtTk5tmp5rbJrduakxs3TbThPczzfHmxNDQm/H5m8dv2958EzxpL2waOj40VByt6xZp5cStO5pvGxoahT+v2Xz7L+bNfPNEA2bA5ts3zQBxtk5s2rH9tpmhoZnJ8R0zt0xBh24Zn9w68aaJ5nXPtbmvGd++fWrz0NDsxOahoTdPbF68gFtntrZ9/prNt2/ZtG2yOdF4y/jmiaEh+sD2dZF39PkNU7dPNEzzepzRb5yY2TE1OTOxyBc3TjXHt3f/4IUY7Oyzhi11aMiVv1j/xibfMuXyZMQax6qQRNj/DTNbLzQSr52afMu2rZb8M80GFv4m/Hv+MRh968Tm25oT56sC823YtrUxfhH5xiZnmuOTzW2Ut50+zbftgMU1Ojl7/jJcp7t+vQF43tYJIBwyw/HNsKzdQAHj23zL+LZJy0EnGm+5bXLLDPC5t0Kx2yYaeuZtM82JW/VEozHVGNKMsSkvYpcxxlwGV5jLsteL2DLG2JsmGtvGt2/7T9smt+riIoRCDnoRW84YCxljAWNMMcaqDBRNxnoYY70d7yL7bgljbCljbPP49u0TW/RNb7QT7bbJ2xvjOwZW3qSnJvX4pL5ptNG4Sc+Ob79tgl3CQLBQWX2MsWtum2lcs31q8/j2azaPN7ZOXePoec1MY/M12PdXbIbRm3nFtqlVa97yysEtv/iLN988/spfWr36lW+5xpF51Uxzy6pXvuKXXrEav5t4K/D1mVc0Zq73I3YTY+z9jLErGWMu/WGbvpTRP84Y0vFyxpBeVzCGNOnvyLOCMfYSxtjP2e+hLzFjLGGMvbQj71WF+v5zR/3/3ab/HXR22823wUTYMLP19m3NW7Y0xm/flImATY2J28cbW2Ymmpuyl5bbv3Zq5tapmQ0zW7dOzcIM23RbYztSeUuh0HVTsxtmts5ONSd2NKZ2TM2Mg4AGCbdhZuvNtzVg7W4BaYbSfGK8sWl8y63bJm/bsWW8OUG/8T+30hqanLh90+apLRObtm3Zlq8W+2T7+M0T2ydoUVp5t2Fma2PC9mViprE5F3dbZpp54jYn8rK8b55qTmzcAR2YnMKOb5qdaE6N3zzTHN82OTn1tomZN91284aZrdu2bB2f2bR9263bmm+c2LH9bRsnJydmJxozt23eDPIQFsH49tvH3zYzVUeBMjo7MdkEYo03iUQTM8b9csxsAvLMLM5wd8DD83BwXF9bxqe2zWyCFT47AbpBE4rbhJ9uGm9uIi3G8pCOp82p+sTkJreS/z/ivQQ8jupK996q6r0llbzLluUrR7JkWWr1pl4kebeEDcYWlhdsDFJ192112d1VnapqyzIQ2sYZhrBDJhAYGMzwwEAGwry8JEMI+E0CgSQD5k0SCJMZIA8mzBs+IJNA+EKC33eXarXaDiEf8Xv9fZL61F3q3nPP8p9zrqrNrG1dKFyhaMAwCdqxxpSshQ3Khgw204bKWKcUMOlF3kGMbclMU1v7aZVusof73x7if3tCgTDXOwJ4AoYJAPi2h8n5Jq5XimURv44sHZmlFDNR5FiRfgAb2bw+edbWRFAgW9MFXram5XxNRAz60QDaj6eoLf2uVwZOAMD3vTJwAQAqYELPZ2ogyAH2B4B2biuJXVwGAOgAAHSS/aINqlnMK1NILRTzuIA1i2I4ZGCrZGg4QwwjFU9U0vDBIk5bOJOfmmE/yDp7jZJppXsTOIMjioLDiSyO4WimL5yKJEJ98Uw8lcXBTCSVxjgbDvf15tWUoRhTvdSd0v0zj0o4kPPJ4DwAwM88zK538XWTnxUAgG4ASOAy43kAAFBQTZP4jayK8xk0Pv6WT6Y+4UOfTNdZ0vZr+qRWae9G9oYQ8PtZ30V+mfJpvBtZOWxgpBgYaTobY4JKv4Sf+bNMqZhX04qF7VnJWL9MfU7tew8ohqpoFu1zlPex36dq1MigHapmxaKoowP1oON+mfqwb/plusfqPqFwApEz/CGfx+5Tyue5slKIQ9UJn/5kjAYREzivTzDnrmQyY9Xd6K8MpnaB9K9uO+NDbomZ4uqTGjaofDjB2rvvOAF80AHWniBffumraEc/hyg9bJ4eW5OCgUggyOwWonMj1URK3sBKZgqpGjkYpGrMZCG6HfDvdTIViT8yasaY5nqZitOMMfYAfFA1LROM1MvUte7QlJKV0w31EM5Y9ezIGMAAoJoLRH0769ixrayTqZveXidTdVHrZApHZpyGbT2JwzpjAwCtHhmIAIBveJja31jP5hn2MBEMedj8PR4mAocA6/dLwMyDTTP8WhUQUDbUxhebOGPX0t/ZBjb2kgaZQqHtOdVEBQYPUUbHJtENJZ3GRQtRFAgAuKxBplBji84eIRNrFgDgeANb9yjWLFTQDYysnKIhXcOIRoqqRi0PONEgU8ixDaexegBnUEkzS0UClHCG9UQdRPTfbJApzJFkpmbnl0yLvCuDDGxi4wBG1EFRNVkgyxQq2X3PFK7VmtkLZb53mfExXGVCIwCAKACg71OY0NhZNKEvyTNNaLzKVCYAAElA01Ezng+cwYTubWTmbn/jHzehl/G+1zQy/TiTaTzeyMyVPd8Z0xLcaf20kcnca42M/2fN8+ZwvogNCgg+aJRBmsPjRn4+VZBAyWRmooHq/h4AKuO7+Phqurq9p6a9h7frWn4KcWk3EcFFZlFJYxOViuT9eaxNWDkUPDg8PDz8s1kydYX2HGv4HGeNT6qFjbFpZqHZMsjxMMMBABjkoRKRpZUAgFUAgNV0XWtP3H8C+K4UPo6T4JOAL6LlVVq4BQCwFQAw8im08IKzqIWZOTO18GezZbD25AMngO+95VV7LZTyllrMT522121V2jlKrC/xRDXPd36KNad1A1dOttcyFNUye5V0ulRgQLR5rkzf91ecP7XW4ehcpvG3zGXafCaNv3cu03i7z2lgaIYNAeAZ3v+nc5kV+ZTSnFJMHIv2BAPhUKCPxdwaCQPpBj+YK4M9XH6IBpZM9RCuHACazGENpZV8upRXKERIxaJcBafH7gIAeCk4s/AENj5udCmbxQYi79hkI7ntwwk+h605F56dPU+oGu4t6Bm677fmyeASAMARHvzb9GU8UQIBWLtu/Yah4XM2bjr3vM3nb9k6csG20e07du66cPceJZXO4OxETt23P1/Q9OJnDdMqHZg8OHUoGApHon2xeCK5ovfUJ/+sOnXq1Go2rn9gcCV/CqAgSg6ny+3x+vx19Q1y46zZc+bOm7+gibUvXNS8uGUJal36mbb2ZR2dy7tWdPcEeskS/oRXn72PjdXZWfQj8MgChgp3VIEZmmxGDHc8s4AlwHZw/ajOoL25QKbysYXYxXQOEQEmEEVqkqldmX7OHChpa26S6VmuVzRNt1BRMUyMKklThFStHyWaGELd2iRTC17Tt5J4yzQxpGn3q7aZuwGgerCnxjZfdNaSZiamEQsP4L/WJAOFJ8HkGtpRRSd5wozvkaB8xGeq6PTGhSzBaI+Jc4/6B1LQ7IgqeetRSn581vpTVTZWbd88sGFbP9qp5EsYFQjcJVtJYURLESTIGWWeu7/fxBZKlSzyrKCbFkorJjbRlF5CaUVDJRNPdzVwQT9AIirTwkomgDbr2gQiEGCqH52DLWq72Ato0s5EWUMvII4RSJBFFjGJ83k0LdmKReOtgk78cACN6gWM9CzSSwaiGXpNyaNKqt4kayKTZFRiITFL1qEUtiYx1pCCNF3roQEZiRz24ymkaMydT68qgLapEznCkMlue5vsnPNTSGfRXwrnlAMqWYOenbGjANquo6KhWzht0cF0h5ahl1J5jPKKRey61o0mSeioF1EOG5hsyjCmUFY3eECa1rUDWFOxlsataBdGOXUiR5w6zqfJ9sm8ls50lKbxCLVeNwu7FLPQjQo0D4ksGmCR4MjUif0g0dGkMoX4W3Qrh42AtEgGbuFs6ZdasJPScxazRJTOE+nVuGMvAOBiEh0BAMao/yuWCJrRUZ7ID2GLkskYdu4UzyCYWcOZfgROLGY26A+NTyuarqlpJa8ewqc9qJpHamGROu2TKxUUbWZ7Zwt7D69tbNd1KucVLcopxSLWAohGuKqJFJQqTdh5g53nBza2yDRysnlSgsxX2vTNnOaufaNi5oZ1o6BYn/wV4HiLTKMwe86v8DmHKGwlVh+FUUkrmTiDTFVL44r8oGAg1PcxMwPwuxYZrK2a+6Ga9f+whv4Bp7fhCWIiizpVV6rupXwegINLmE84OzJYwAXdmCIW/rYlMpWvJLfnfD00m2wSO0OWYy8PAOBGMo1I7HGr+Tjbr9olqTWIYVcbihk4TaDbFPF+SgFb2Aig0Yo9Y3aiHwWp6QkFALgQyTSCt8eb6oSmWCUDE9EtKNZtiPlzuz2nmDneBL6JZFpg4msaMgy6KlqxqNax8enx2/jyRsjq+LNR+5VM0E6TvPWV/G9VIS7SynDBBvWAmsEoNYUOYUPvRyOtDJ9s5fiVdM61yhTbMvkzq0pzBLMgOt9lrUyvbmmVgVDpSyAE6adqls46H29l/LD7UY3I6iUtw+Ii8jnJ38d9dIYWbChIRqkpC5tsOl56RQC81SrTZHaFx/hgpbV5KcNMdltGsRSKvfsr4cZKpKStkpJfmVjKMknbl7KMgz1mHQVv0y/ML2V7PQdr2FDTFa5eu5TJEj8kVCyliJeqMP3epUxXdmJDzZIAqepIvsvXOX1Y9gmYeslIz5AHpXJu66b2YEOvbktVnV3183RVURUPGQabdYycScGcGCFQb8gwLMWYwBZ9ukW3hsmx7Fe1DGfEDiubsKULH+TfNiiWMqoewjY3SfzHC6bkB5P1UvbO9BvZaf4y9nJmDhkGZ98I5d6QYcwYN1HDv9r2HNlnLj+aM0b0yfNL+dFSam0mwyWJRdZUd2NtLJu0so1nRdsYprV5R+VXL2KDJSOBynEu+dlHfCFp0jIh/jd8+rnRGeja7EL0fgAAtSC2YDPds5UPPNXGcPw/tzH5qz7j6fVoGR5UjHFoPk3yyw36GAkDpnPKFTqDedhdlUq1ZyFrbGfyO7ud2YDP8L+RdhaDr25nPBtuZ3aL11FpeZcsz14An9FWn2IplVfTFLAxw/dQO8vCztAf4nvaWWZ4nWKlc/zp6+0yLebzyZhQMLtGuxG+EL7OXsbsya3t7BwjbTIItsmgp00GXW0y6GiTQVubDNYsYzbm3NGtW4gxRgpK64WCgmhFkjrKvGJazNIT16loSDEMBr0KSjFQGUjQ6GROtVhqDlmGouaJrUvnFMJ1bJhVczJwShUKKQTaYGSWDEOfUCzcjSZzKgnbCJQl8Ja8lr6GIHcOYAm6pxmLDMGLO7YP9yQCW1P7CFIljOXwW+FGKmDzvqSp1HjSX9Q7VpqIktvftVIhhY1KEzbTShEjk5yjlsaBITsxQ2FpZYM0QUccMFLYetkup3vrPIbEKsGrSEHjllHC491oPKvkTfJFp0+J7x7/uLekqufo6O4Y5wM7Lu+oGkcYOznNV9S5YX0w+PPyLRuGh4eX/6nTk28Xz5ydIPkZ0yfY9Ov++PRktn4y29Zhctp5XHGNM1l3hmZ+omdo0pBOJeCMw/KqaQVoWKnnq5ZDXS0RMD7tp8RtJjYyuGefSXSBwLdgoC8QokMzuLekMUEi+G1kuUxtdzvNkq89+c8ngO8m6eMywfaICM/IfqLM8BZd6yHuf+3o+k2barcNQGsXQ4X23F/mV4bOJhfsbNuFXTL1zm08m2DTl/PrODZ9mJe217E8oWqiLEXab3XJZ3etJjbsxUorWC3hX+1awp8ls6xklCKxi71YKxWIZ6WScXCFTLNEIfqute++eAL4bmz5OMk4W3nRCeKPlPxYsWQUdRP3MuDJ8kufpCbh75bBZwEABs8ZVdNtVbTJJdqmX+aXq2z61Rr6f/O426b/o6b9rZr2/6ppf6+m/cOa9o9q2iU4s90FZ7bX1bTLNe3zatqbatpv5FUvm/5yDT++zC+82PSdNe138ksrNv3XPM9n0/fUzP9VruU2/d/5xZdqelYV/fU/TwXtT5SzMbOUzaoHA4ZpBWRwkFfUSExg0wHOB5tez8/Nps/n+7bpnbwiadO7uZbZdJrnSjcVirppqqk87mdZClp+zCkHMAoSgU8glpWxgy+GkNK5kra/mymBpiM7082SqObeXpnWqSppPh7nYELTYr6BlXROSeVxJY/9zV6ZVkjt9X2en5tN31iz39v5Odn03/Jz/H91brZl7w7KQOOVVyK3Nr2OrKWGXlhFX8W9WzWNqui/5NX5arq9ir6L88Om/6aG/lINfRvB7jX0mir61pr+t9fQf83ps1mLuzbE6mlX87OtBBFKJqNqE+CD0Mx8DRVFc6qQ0vOoG+nZrIktFABADrN4ui0s03l6wqzuOGSDaHywgq2ppCso1pNSLWTggkK2YATAxjC7GWS/i8g/zXWEWZxSO7dZFeuReKpU8+wAAGCcQH89i54Ns1iqGwHwUpjFLs/weey/FOWOT9O/DrNY1ab/LEggFAgGQsnwTLSCDxbzalq1UFHR1PScCDuTN9wzL1CzC6+1F6jR+BZdw/YF6oNVsfkUvYXELhezzB6i5XKWCNGziFuYrKLmcQaAkxF2o+mNCOO3jSpMK0OXSwcHDFOK8poZ5HUadqwFPaNmp2j4RbeBcrq+n+X0FfaEp9oNrGS6ozK9yVP7jkq/gGHmoiw/dBWXTZseEdgFa5veKjD/d1lVHYygvINVsvA5AMAV3P4SusyRX3WfIwCAKwEAR6vqbMQm/kUVT6/iduHqmudfqNrL9J0EQ5kcO4AJz9JKUUmr1lQ1fhnpYzX3aB/bh19gOVOFx+20BESvB/zRyxXgmpr7FKevJVuwAoZ5oo+dXUpgtu+dJ7+9/PS+B3CaS+ZyZOb0Uj5DgqrBlcTboE7VROOKNY7MYp4sjcg9fbgkxuTHHWP5uv/sY3rzFt9f2M3sGZU6noSo5uG1xF4aemGHlU0M8RzFdVVnev2fpgssyEaT9vIPYUOnBQ5N13ooQUJy3svSdWQWlHyeOOAs3RZi2bnaXnny9My9bJ+cUSdUqzb0S1dXee1rC1Q7WE2M9Vp+GpTPFix+FoEAAF+MM9t1W4zlVfovmv5+PM74bf9lusTKgh0d3egkf/5CnN1s/FKVzNxKsQM5Sb1kEduQIqs3+1mGBmskLqL5EVZ0Ix1VEwHw67hM5WhOguW3x/tRZT3JBF9r1Rl+mfu5O4jvJZ9Lvd3eboQuRZejyzu9nd1e1t+WCeIDLz4jTzR6Xea6BKs/qRy7BQ8Gg8FQMByMBKPBvmAsGA8mgslQMBQKhUORUDTUF4qF4qFEKBkOhkPhcDgSjob7wrFwPJwIJyPBSCgSjkQi0UhfJBaJRxKRZDQYDUXD0Ug0Gu2LxqLxaCKa7Av2hfrCfZG+aF9fX6wv3pfoS8aCsVAsHIvEorG+WCwWjyViyXgwHoqH45F4NN4Xj8Xj8UQ8mQgmQolwIpKIJvoSsUQ8kUgkk8FkKBlORpLRZF8ylownE8mkYprYoNrO7HM/6kqXDAOtQqEkAPa+/w9kNqOaZ3dyrELwyVSc9ZvjYTbTphd5GHYyFG0C86wSO1ZbAFgL0Rczr6apE+X34N5MsrP+bVKmkTTriamwkxm6+1ke025n41nbdAGJShPWMpQAm/tZrj7Vz3wP/P/8AWv/8f0TwBcRPvYj1nwk8gFry785AXz3z1e1tE7stoVRycr2sGpKJcvHdJ9xBYDyAMPitglhAyp9q5z19KivDbB7E88NsPMAFwUCgYvpS/hRquZMdSbfxsH7AyzHCwcZzxMJZhdSeELViJUnR9lJvixn16nIARJfNA5AcJBlRVYNslvP6wbZWdtzTGdG0znFYK9VjKkBpNKL4apm0hR8J9vMcrogez3WIKsr3T7I8vH3DDL8Zc99mhkwrUoG5eQgk2sSOy8+U1+eme0tGqpmkTCI5Rl+NyhTjO/l/7xl04Sv9KYwFB0Op1NwOd0uT6O32dfkX1gn1/sbJFmcNWu2Zx6cLy2ATeJC1yLYLCyZh8QVYo8vAINiSAjD+4UHhAelh9y/FT50/F74SDzl+buDU9dcd09w14XXXHtj87/WN5y3+cPfBXpX77147OdHr7v+ppsfePSxbz319LPf/7fX3zgFpMZZy0PReP/Ayk3nXnz0+psfePRrj33r6e8/9/zrbwCprp629g8MDW8695IMPnrTHXc++9zzdY3L+weGNu26aO8lYxl83U0PfO2xbz317Cuvv/FuXePQpgwuH/37x5948scvvvvLKz9/zb33PfHkU997/uV/2Xjbt//p6eee37Rl667dl4xdff0Nj379G0/+z6e/92LjvPkX7X3/Nx+dKhc++2+v1C/R9ObFY5d/7uFHrvjW4/PmtywZPmfL1gv37L3kc1f8j6d+9OOfvfvL9wzzBqv0pWWB3vsf+caT33v+xVduX3PrbcEblvyvHz13asvWPRe53A1yR+/b72h6fOXqdUM33jQ6UXrm2ZMvvPTTX3x0CqCxpUdekY5scC+SnI2Hv1JffsixxHN4kdjkhlKvFJVcInQ5XY3ekYZZrh0uUWr2ekS36BKJKvolh+hzwvq5ji2uRa5dLsE53z8irRd7RCg1Ohv8/dLi9jFUkPa1l59xHPmquNB55Pfibtc8zwLPHP8c/z6n17nQudu1wjHs7Zb8EhRDvm5podMnlr/i9Dp7Q+eL5Xvdg2KDOOhKuFc4jpxqXODubewRWxtaG8rXSkdubfLN/csvOnodAy6hfoGn/MRSy1/+yUK/o3zKUX7F/193inHP4b1zyt90l3/g8C4YEL3OhHvY7XdavhZxj7TbU75yQbN3nmezVP6C86F7/fOl0DHp8MvLXH6Ho3yffPg9F0Rdzs1S+Tqp/IS4SGyoA04IRSgJDpdLcLs9gtfhE+olGTYKsxyzG+fAucJ8oamu2bHYvQS2wX3SfuER8VHhceF54QXhR/4fe34ivCi8DF91vCb8QnpTeBu9K30g/Fb8EPo7BlZt2XrDXXf9zaXX3PKle/7+sb941OnyxFau2vmrky9IcxbE4jt3XfHgw498u+/VWVddff1dFWEksrhlawbv/fo3FjW73F7fnPmxZP/xB176qSd+403HXd6BVVn1hpsb9bEn335nT+rXvzs1uv32OwK9HZ077rz72N/ee//xv3vs8e86ff65i/tXD11w3/0//Ke7XU0Ll7avWv2Lt9459dTTEvpM+7LOSKJ/47mbR0Z37CSyN57G2f3mwcuv+MK9Dz7y1RMnH35E05+45ZKllzpEqUfMirA3UD6yWAw1NEttnhbHCscGqb6r/KCzTWqTOt1R35b1h+OeeV73goGhpJh2e4LzHK3iIgdck5DOc/RKXpfHtQZ1SH5PTOx3LHRJftfIpnikLuIKuL2Hl207b4W7a97CZc1z5nu2SG2eDXVNLq9zo7vDU/KtW9XlHHB4nRc4oUMWHeVrUi0b3d7yfZcsHfJ5nXWz+53eWLc0v/wPg5lR/0aPd3ho0Ub3aN0ml7f8/rB3sXjOprhY7/Y6ky7v4ViTa0Bs3gkbwnVX3pEt+crf/cLmdN3RoDzvhgePnHPsH44kXV3SXucy77C30zH7yFcvwudJSVfjGiISt37gPvqTLs89vzgcaYCLnfWS+/C1V0v7HXWixyXfPH6Oxxosv+813cW5w4eIKuzyNJWvOnyO+Pl1DXOPjixxOss/XuFY1QqLPeJCSTi8ZkljvwMePtl15N/Lv1m+WfJKwpWNGzavLP/joBNKOxyLosLh+m4p49/pLT+cWFzXLXlcQr2zfPuVL0mNYp04KY05/RJs8EsJt9fZ6V665fB2/2LR44q56yWPy+Mq/6Dde9T5B204/zuWUSwlYJjTF2DZJdnTxk2XRcAH65jPjPL7KXtLl1aepfg/6Y7qBUziiGpMdbd9x6ISnLAicKk4ZunsGkkeazNx2DEAwIl1Ms2djvAcqk3v5bkrAsSvlBC4yTEOLp59N5g1Hy3xo/El73TfvaIriLr1+17tFo6P97R8OB4AH6HYXafGY7+Hr8WgtzXeVvda/KF6Jdm74Fgy2Kxs/FXLsc1rosrIu/uOXbBVb9125+PHtoHnlVH8wrFR8HLrdvDqazse/rmy663XW3effPPYbgTe3v0uvGIPKAIX6IEQClCAcKMvOFeG2CU4BQFKn4Etiy7y9Xs8cIEEPVCEjhXioLtrAURxCKHklqDo8gqLYT8ZLrmhB3qFhVAQklASJAKQYIsgQh+hHVCQ4BxhnhOS3gKU3NAleoUWOAAh9EMP7IQijEMoOkQouQQfnZUsSYQOgdDNQlKYfstiuBFKUBAhdMMLoODyu1NQ8Phcm4RFFMHF66EDCg4fbPPArASdUBCEJkESZakOCoITNkAgAnGx0CK0CGsE6HJDweeBPSKEJWEpPCBKggc6xX8RBLJaF5lRcDu9AgwuCUlBF4QO2OnxC0gSBCgmIF2I2O8WhNtEWAdd5IWi8PQaAL/TCsTr4DgCTlUAEvQiYUQAxGrDJsEBbxUWzqqDy9xNvoAYhIRlHXC9k2BLP3TDXhiBUBQEhwBhl+CGbxO2QQCBLJPQCv4c/pUDiFBwSJ2iBP+bACQgjIjDvpB0KYw1LIeC4BVDkiC44EqxzQHdq6BfiHq8kgDHRMJKJxTgnVB0z6WchXAerHeJju+4yWbmE646yUGRQ/hPKEhOAQqLhB1u8mQfpMMhFgUJOoAHCu9BrwChBG+UBEGCyNvppCflFMRAHRSACzoh3DZPcJHZDjlFMqsLwo3kVRAIPiHqcJBv0NkAHAMuAFdLF0AggIAwH0AoSg63W3C1SF8UQVwKu2E9nOeADcAFG+mMjgy82wXgSglIwFVwgfHyu+wfbhfzf7y1f7bFZdAXl0FDXAb/EZPBd2Ly/w0AAP//sOUp4fNHAwA=", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "H4sIAAAAAAAA/+z9D5idVXUojO+99n7/nPOeM/MOmcBAAuz3Nfd65t7kOr3FmTHw886ehwlQscb+qJf6+H0kmrTwTkQYI8U+yIyCNb0Gxda2aK1GxQYUaLS04lXb0UZFRcWKGgv2oZ9UuP3QUqUWra3fs9ba+/1zZiaZTOK1vXWinHPed/9de62117+9ttj58pdKIYT8pjxrB8zPC/yPnN+h5vE7/lfO75DzYoeepyfBPH9KfB7Ou1/RvP8Wz5df5by8fofwVeQ8f7neNSXndwg5X9Z0XcrrudHrqdj117se+ef89W4c19PI8L/XY0fJfPUn53cMzDf+5PwOuB7/i+1dL+CtMKh2X3lNsPPFL5vbKzR+j3a9+LK53Tt3iQh/xbtefNmvzl2xd7cQ+LNFL1/6smt2V4Vf/pKdVwrlf125+9q9XLW7c9euucuu2bnnil079+7mZ0P07CU7r3zZlVe8ZOeeK35tt5BV2ctf8dKdV5bP0pfvfslV//WZ47M/c9k1u+eu+OVXcicj1eO53S952TW75y676hUvnt39SnEKvh7Yveu/PvOZP/OsRp1h//DFO/e+5PLGq2DX7he/4ld4NsnVr9g998rLXnL5ziuuFJE6rD6uBKwLIQ6CAYghBIhB4J8W8aCAIBQBDIdBKECAEAEIASBaLQAtQvwl4hBEDKClhDAM4vUijgUWBDgVggAgFKGm5vB/QJ9A/wdqUQBoDfTnusVfUkrd/yelxDdCKqkCIUByhYEATlNSSSnloIw6ILFpQU1IqUCoAHuVEMZCtOXSPyGkACElCAiRMGhUIIQEEekghFYQQLvVbkMgI0HjkgK0cH8QAGgYIcAECTaWJKmWUmiR6kiKDhYKZcR/VEO6X9h3B4TERgUAKBqz6kqArgyBhx+dLnFuILuhklE0dMYGoZQkAh7ayFM8U4GO5FXydnm7DJQUQ+Hpal7ahYVFkcwL+/X3f4w+H8bP6LNyIHzp7pe+bO6VIJIrrnz53p1X7r0CUfeLMtp97e6XvGLvbvElGRCSiAdk9NIrfmUOX39ZBnO7r9rzSvEVmc7tvvoVV8ztfvllV+5+xd65l10pHpTxzj17XvYSLHgbtHftLn/dDkNl6Zfv3Tn3K/jwQVk9vGLv7rmde182Jx6U6664cu/uuV/e+ZLdiLwvv+JlV142KR6U7csu27Vz787Ldl+5S8nksssu373zqstevPPluxW0DoMUVia3yee/4C3qFx+C98AH4ZPy/77s3fK9Mn/an8gPS/NB+SH5H/4n3C7fC3eCnX4f3AF3wR/CIXg/fAD+CO6GP4Y/gffJ7Gn3yP8p75Afk4vyVvkZdbv8M/kR+afyXfIT6l3q6/IFfyPvkN+Sj8lvEpz/Vj4q/5d8l/yO/Hv5tO/KJ+XX5a/Dv8jXwQveAv8DPin3wW/Aa+FG4Ab3A9bBBn8LfiDvkDerm+AN8Ga4GX4T3ghvggX4J3kD/FDeLl8Pr4YfydfA7fLD8M/yBR+Bt6oXfA1ecLt8EP4SjsDfAjbz1/D/wB3yr+AIPAyPw7fg2/B3cLv8OuCwXqf2qXfJ2+WvqzvkG9Wb1G3qPeoP1EH1drWouMzt6k51l7pP/aE6pN6vfk99VrU/9qaNH1eflVLNP01YM5vDJgFTMGWklUUuZ7rCxkZYXfRA5NrKvbky0kijLtqQSyNt/NwNubLzL7dnX5NJmDJaTxkwehxGDFg5DsMGjOiBGIe0IxMDVozDcGIAmzBg0yL9uDTQA53Rh5jRU0YYOQ6CejVqHEQHEiPtqxcWFq7d1pUGB2WkARvjoNLfUCJJ/4cS2LgpNonkc1KCm4zyk8HyRS6f05gO4HQ0vdS16ejadEBP4ThxOoqno+rTUW46CBNtlJuO4umoZaajV5yOWjIdxdN5DKR204k3CSN7ILIQ57RFILDDHsRZhIPBb3kLP/Q2fGFa6SC/biX4Cxc0GocYnwnTKuzmrULgUMRWoamaibhi5CtGCReOCptvFQJfla0oV2X2OVzHqDTtr2XAqPRz6gwTGmWiqnusZuVzuaKFpRXtu54U57oOoRiHGFFru54ysQnTvwCcbmxCE6RfhMQIE/dA6HkT25HCxLZDq0tAj008CjrXEyo1wnYKtxRGT4C2MrAioVIM6a8C6Hl5PcM68rAOKlgHOMgQO8dveYwfBOvAxOkgv44T/IVQCnGyAc4n7oM1VjMhVwx9xTDhwqGDdWDCshXlqhCsA4RmmvbXKmEd4NJU3WM1hjW2CEsreljTa4S1iYw2QbrOCBMxYCMEbFQHbGQiBGyrH7CtBmAjBuxhAMmAnSqQJolSDKRfAaROolDVg3SGiE31YJjnrOxIsUWIraLDFZBE7EM3LAobGGlTHIyRdoTI5ixqoStrJb+PJUMj0838DozAL7FRW0Qn/Sx0dEJPxOnjosWTUHZj0RNiXFDJ4UwaYeOiGohgYtZIwsr2XAUPE2XUKAwjspklyMbcYnLFGmNLaiRGIMchRjA1u0kkX6uj579jVmBiRE8TputXQfntfgRtL0f53wFQJWj1JmE0YZGB9AFAzuOQUzMeZCE+Gc4UYS4g/w4JdxHqAbH/bYTKQTpID7MAt4jASho+7gsm8DCnnqRR6Trqpisttg9WbsNtwZoCN0Yb7LVmNguU6wRqnYDvBHESK1adAHeypA/wDQc436ArEqIEE1pxQfo5QOzWiPe6jqvaaMTVaEKJBkCjCdAOVRH1BBWrnnFZ1xKhs2aY/1PgYX6/8EA3FdAJtroHhgHfI8AH+GQTA96DPrA/klefAPixz/QrQH11cRvXW0Rvq9iI33qwCbd+KoSLbz+4f1FYTZSH0oJjPVQVasX+bt+isMpI2ynSDfxaO5D2sL0tYmP6Weoy7gYW5+UX3IAd2VNkITG2TK55wRuzgrXPSi0/q1z6eQUrzSt0BU14QYlgtFYOyQIE/jA2vdnzXMJTHijhW0+MjouhcsidjsI6k65OiZjYSoWimxBFx4xGxOx0wGHkpqUYudlhJKP7vWIVzU65ZhPCSCrSpI8OljIr0QdWu18g8n+lEur+fQsagdHpF2EVksYxRDgnaTwZ+D3yCUHiP4NWV6DVxBAQtPgtJ1ZOoNUEIe2GrBkoAY5Su+E3QIvVTMAVA18xSLhw4ECrieuUrWgTzFp4LtexCNq+Wrm0X3vtoniGIDhJC4V98LWLwskeVKmvNelbg6WteXjTa2YSdqwwGvmCgPlK8horJa9zxqFHktckCzybuQrKOvZvXrOI2hMQo3FcYpiqk9jli30Li0UGeA0NMI34klAr+SSWRLVtxJU0tZI4IvuYwKLn1QSmkihJdDoHyW0HChRI6zohwQ+r91DI24y8CDllV1nBb4dde07GY1lx0gt3CALxLGQ5HhgdlvTuXc04pvw4SNQ7spoq210VVvaoSFM2JH4ysoSfWJlwk08QN3n8p5JhqSTOLFESkT7vW5WauDph8WRqM5/cTzTVt/MuUWW+s88pPSRP/B+hzXy/xNmxf+d7IMlX6buBdsOoByaX+NFL7wP83KSnjEwfJQQ+YXV8bAm7CDzoVQV6ki55kXmPrITP0AufYUIKgyxyXYqf/XskVjOuovYVdcKFtQM9Spi1VrTRszZ4LtexYZr218olafYOsaXVhf3nG8o9kyr1tSZ9a7C0Nb8e9JrWI6C1PdMIWjI9bwKEdlCHdmAChHbUD+2oAe2A2cUPNOjrySA5VRCiR1bQuk9LVKUimxY5YsE9dy2K9APKyFGFCgFyA/ymnibszXI2l7hO9unjsF+S8QOuN2p6YcG8ENEDt9RgWkx/9wNHPvb2t3/0vt+eTz+vSMmjx3/x1+/9y28d/PTrvif48f24Ny1TfGqWHvcXv1fgSIy0Pfc5iZ85DdVcl2ujLrnzujzEn1PX5cqEl9x5HTIDI3EXxCoa322/zuhL7rzuuly9AItPP3tfpk04Db9u1PSz991I6Da95ddNML1u343TH33Xa979hvfphSRXRk8vLDx86IPv+ODb/oGHNKpSE1xnpP0bURhp98sivQPxVxl943bSm78vCjuGiL1f2uHZ9H4czDADz2jsRWEvuS77Qc1xaTfCqP5uTFnnEurpm7WeJPdkgoN2bG6r2I2EgJ0mJraP7f+YsIIL5jE3Wtinm3g2/X2V4YObZbFJmBg3johNyMIQCxA5kX6MHEHqKSOIHUTESAcTe/9di8JOmMhOFnbfHy4K+8gfLor03Uokf/lTwcCbjLwccNLEgN/tgJ6H6x15/qtUNUKvHETLqhp3v67GRlVhP1j9pkonqGqg8K5LqQgZ7uXOTLMn0yy7bhGighM4OMkanKSfLgKRfVIVnCTDiYURkneeFJVoT5IO91HK9lejbERC2Z5xlmLWDFvtoREsC9u7bmpuUR+4qaHGBScCW5gyMKrEdlKRyG7hpF2wKe0ZEeln+O1o6+DAQN9KQJ1fal1Ts/azN5F0GqenUS0SScuXX34Nmdcj/xK8ntTDJreI851QquwDon9taANaZnGeX47qYhZKHy6rVmoUNlfJm3twG76U9aiLGRWOs1LCrr0LSSa4cMYhZB7U0HA5zNi8PGasAZViv/itZVHpj25aFKNCTAhWEeyHm6jUOjFUYmQaWYpM5NvcYRSKKZfywueSFdtSVkGV3cj0E6pL7s4XZdI3gj8vZbPlDtq2ZrrCAO1bCGXqjfSHBxrL1Kmv0sVsyaNV0h2VkKEUBTXhFHvRBXzs9j/Cyub+59WaY3ViXCcJKUdUpKnVrCjsIXCFCbhh2sCTdzpn+lSRwyY2lXgFj/zOPegMCYFwJ25HLmIrnPkcetDJELCTBRlGRpVAKRFwkVKEBthekWsDbFrAfvEdnEOTqKkKMKrMBBk72TrLtndg5et3pZTzrHrREFccHzuwrdoqNjGD6RWey9CwcP0drymHKchiQcoqt+o9dcPuc6Mz94wQXOKhmAZGqsksj8vMrgJ0SwA3ounFcAWBuIQA8CgcEGgDP43030br6ZAQyUIgT6uAw/EDuFKaHPV+fdzI8uHa2PL1Q0IY2CI254FV2xDj7TOK7FQD9ulFdpoBe3aRjagpA88Q/8GctkUIm+6dy0L8faYZ8b9jbGJT1sHJmGwQf23MujTDbIBmmLUYUVICRBbRINm4DhfoKXMqN5W1seUtGUGnlw2ZFEVLAk/bJHNZG4VhK2dZXdJWXJCdYgayxAxmA6abRSbO1pkwi00n6zoYp1lSrwRTJrJd5HkdC9u60jfSsvE12TrTyiITZm0zmA2ZThaYNGt1mAMI28WBqvQ/kB55rjjTKBOfK9YbZTpbxUajzCBFXZjuVjFslBkYh9Qo0xqHjlEmYRkyHQeNpMvkd3ZhQpteQxuKPQ1lO/qBm5Ce6SqcwSkMpTy0atvVJrR625x3IeGCoXTYPlecjiS9VSAWD43DsBHYe8cI7FajVs1ehA2Fabv+hOliGya28d45HCkqdvhgHT+IOyphpBk2DSRxvhELW8VISQXvAeFNSUv/UfzJQKfdltBWOgijuCWwBTKiznRbRjiL66PQaSWE/fQibvyKOnHtV9iJar+CTlj7pTtB+UtT75oJjLtBwB6jANumjlJAGsHkmT4Kg7WuRVkWn/JX/pbiw5u0HKpxMSTSBml26qTZJcbB+x3CXtYINGUCHWICPcUT6JAnSM0Eeor/HTCBhkygERNozATaYgJtM4EmTKADRlbEmTri7DBxdpk4lUn0lBlg4swS08oGTWDjvSZGOo2yFhGixh0wi4zMQtMx3blME2IhXQ6aAabE0P4LddV1sOiYbolxEjFOdiBZhgg1E2HARBgyEUZMhDETYYuJsM1EOMhEmDARDpREqOtEGPAPj+PORcw0FjKNRUxjLaaxNrYqsHHNFOdITZekFhNlBY7USqrZPyADRIdDcjYPNwmrs4gmSSCZLHyEFTYY4p4uJtSYlaQ24raOZcrX4agamwCNGiQ9sBpnLg3gO5sWaS8Db20ObXccxkxoH3jPohiHXSY0gJITlhwrxuFyE9oFiR08LIr0PxIKhlvELdLCNt6xRI5LxUFpiLlDutyTyLpD4z7DKEIO5y7BmiWhJ5bi59JHwYossoKNd2EPxjxKoMTtPDf1vc5+/86PoTB5htWZtk8Iq9OvylwiSUoEwoKccEE2JrS3oODqQIS7uglR4slj3PKd/dqEdp8s8pZ7FE7fuLCwkE7ArdKEKDgdkCWcNjGcTAmnXgknU6T/EVfGg+kCmqwusrbdmGlFZotbpbM3LDfJdjVDE9oDsjBROopFD0jUJKXRRa6q+ZHQ52dGVnc/J1Ijy9mU9ovbJEU0ZLoxZBMgZQOydB5hphNe3qBcXuWWV5XLq/zyBisvr5Occa45MNGG9imBHbNxDoUvwtqpCXUVljsvC/BjMiOLyTlZy0SISplSU/W+ffuK+S8Np1NUTzcWmcJZz+YRbVS6JmGGo+oqFooJO54qB0LyMJJyzKTcYlIGlNRUwkJ0NF7KpixOSyqEpCQ6iM/2CY6FLMkLG720xJ5LGHu2l9jzonIp7hdFugmmYL5OZWEPtudkdLokB14DpBnLyrIuQV4nNYuCJVDdFzGz7Ar8cSlF/KD6Ss1So0voaRW0pJbSUrCUluJ+WtrFpLSjRIEjTRTYTijggPEEAqOPlioi2kU0xFO8rj7Fa3mKSDlhDwij9lYEhQq2I6gdJT1BNUcS7f3sUPI2fl60IcVL6OnyfnKiYRtV0hPh/lW8gHv9Aq64cDS1JAMmGO0Jprc8vZgfI71Ak15MjV56xyAXHyrcRy6wlFxkk1wOkRa6qDjC5IkyuGod7k3a3n73Iin2HGyDa2nftrAorHAf6ffIAJdylNsIueQQ4JZtIRbGYYwsZ2QRcKYmoJlo1ETFhNrBcS7cerod29lxBjuvyLiyiyDiInkq7NVGE/aOJWymqnc5VXUJxDLLLtVRuoQlXXKYz9I+p1zIm0BaNYHRFClhp2atTL8vS7LGplD/Y7uKNUzjQBgoxmGjgWk5QUHvEgUGMAKXliLhYwNsJwCjcPF0D4YRLd3AyJNvYBDX0tBS/qUsY4SgimNHilHP6Qqryzh2yXHsCmW4izbkChGWwvI3sqH1Pb/56U0XWdjL3lXeSzkyX9qNeyhUf/kY/QBX9McSo/+/WhDOq3/VcTrK29H0Mna0J4689ruhN5TrEzSUPyyaQTlkNCtNtLt8SM5joorJYRNnr7BffA2F7jlAezMHxxBQGzCqRNammBhEhi1icwVctVaLO5Tu/8fFihEuu/IWm+9aEz6OZthXacTfPNa0A19RBuDsGvfRNDTtNS9l4BckXNbA+uXXNG31X3tN6U6mSie+vFlcOdsDO1KQ1QpVo2KauFCAH7Fpm/b0f3td3nqtab0qa9l1mUR0UFOo6xRGFqZlWtPthTyZbl//KnYxCsMChpWzmcS3l2ShSVBbnOkK5KPtafFLmo/zZJKiKbgtuwWpxA4b3Kt4bkxo5JEjzcdPL0w8aZUDicgvF/M8qDD7zom6cUNa/O6isJm943uLIv1dJZI6VlfY+6DH3mGHvRvr2NuVZRzVsdBsewPN7l1VnSlfR64YNyas8y6tEJzV6g/Oai0Nzvp4GZI4VaBeeixOF9WIMfJYHiExRk1ijE4Wp4s8QsdLEXr6G3/1pvd9731v/cB3yQFBpU6IHkLaWI2qgrxDF4AYciAeiqoogSGEFHkN2JEV+Tjvo3tnyjhv3Yjzdt3G6RdZKuySpmwUh10j+yTfhdpr41kS+iT3uobOlvalSJ6nDuLZXKFkSL6MkBa1DIkm9zW5NLxF4ry6RQLOcZFXTpKtxRaGJQpywTwmsdbE5NMIWeCs+TSolMZSTZ9G3O/TCNlf8NOTUY2TUWeetJNRd7VBVkEE7POYLNIvwMr2X/5nJWForqbhVbk+aPR0+MINVs4OBFqBFIGzNmNr9h/ftSisSr8KpdsEiEVCj2TTFKku/Tx0UF8hRynxY94QgY0qXAiBj42IoXHxfPoGnXG4mCv63n6AvbXK3rp6jY22643yRlE1Gq2x0Va90RvevSjset8ogWWtbbofl+I3X/pFvqsjovDechfVRSr/qBLpkJtPYACVfb8TMiZB5bUmH18nVxNqQSI6T8DFnbg+l1twLqee6FxYU7mwE61mSne/gQK9l57EK0fwmFjNjHa4CdU7XwI45UFXgkwZIPvHsTu4qq+DsA64uxBwAxVmyTViATW6HFXplV6o2otLDWwRL8KnsOxTuUIjZF+8cKYr2Qqeu9HXPcMXT6geljqPbc2TzsqIU5K1cqo3oS4kuNhH37go7EbuMP0vBBfbRa3O+VTpANhIQbqct2FQCHTlry59rvybZzVckP+53ukkBb8LWqqJ0qLBfNMtrHPZsm/9rar0retNpZPMwIyewn3Lqa8/n4cz3ZrSDiZENT2Y6QLuQdJA+jmVhUZzJKbmSExt0wK3eh/dwJ4luUnAfHmWW9phFNkJ3SWq9tJ+5B8WqRVpFx7Hb6nh4M30g+RxlKztU0XZqMjFseI/kDlcUsAm+xmk3VyMg6FvuhiHzVWjCQWHjhWoSpDDUpM5zdmVdOXkYCD2G45CNhy1xkE4K0tOnjZn5CKnmzNJcHgh6+2hAdLifbCFXhps+G3t4+K9Tr8kMP54w+Oddnus8PjHF+ggSRVxMFwvCbWSrzvoeNaYK0k+n/R0LqlqJd9wkCPz3eEU6Q6nuDZ1reTvYElc0E2u5OZ6yaA/Tj9ae5x+cNxx+vp44/SRK3kFatkqU0urQHXeZdkq21c4P/DYylV2HPUAAStWfw1lEEudF8jtZDOk1dmHskiIzJ3P1vJRQsI47U/zIsY5Wygu+7toMSE9zWh/zALFfaNx+Zidu8YXsGjsG2ejGLbuG3al8WFtsXW12HyI2HlB6outxqsjtWrNLbDFtFcd41W1Y7yyRBflDMoNGGt2qR75qdxfl/sPyJMm+P9rOHH+PLPcifONfOJ84x678SScOH+eKU+cb+QT5xt/YifOf4rNjWO396/m2O3qsPnIoBxEVrxQU2LziKNw0nLn/hiQkGqi9NNQheKMWTLrWO3Ety3iZ+w/iQv0lB3wAh02ln4cOPwwSheBglkIaQ2JxL1cl236do1rFzLl2s0yOrF0dRYbIL+XnssGYEotp2DPo5hCoWJtu/kCPWXa9p9xUBx80gXbylRnMDGBXbj+6kxZhShM7/SUTTPVGUiM5jGjVJZ+msZ8eqbwYwSH1qVtk3vIL+Ba3Eu3a9dlqtPlgO6ycloCSlmRBfR+ixjiygNcwXX5BHkU7iXt5DqOTLqWQ5L2ZhF+XJUrux6nE1FDMGUiBysCX2yD2QGQQiWmbW97LW2iX1BWXGDl3gynasFK07affuuisEH6BbWBgOzr11qgcypLW5DcQtRoITFt5GwR+96zmIGbGDWXU4TegNYKpAdbFiAkOu3EDGYxTJkkj9i08YQofI/P5LkGdv0FpNj9kFQjDrkiSKAGiU9iBEGrqu+G1V/fle5w/VbVImp/xmnLrXG4xIDpjsN2AyZGtTqa6Q56Bc5OFuknaGUuxIa3oe7fg4sRM3pwCa/S9iwxcRmrGeop07JpQV57XTqjtXc7I3sj37mczUNircrG12TadGa6qWmlj0InTUwyk2nWqQkrWFsmxXYU9nLwboBjjWe6XeqYEfBY5dkMwQj3KWBfcYldYB+nKf+wqZLunYBdTNns+hrHSjuw0rZumFTd7OIYYxqCM+eXDtSLTavbwtVvsSngXqJnv3ATOKyEtXn3xqHEhGlx8GNtOf68Wo4LWEuurQMtjl5uOVaMDTAFcxq/HJ2ZbofXoZM49z/vU8MFIo1Tn1vl3tUtlbbY7Xg1b3+nAe/5Et7bPPIanU4y4Ts8pzlcm7erpenKM0w7G3Sxg30FE0pHgkDvViaVoFr/pFoDtmFUi++XP2RADrjFFmaA7QElHtRX/1m8+iGuvqyh3J4GyjEuIODY1tKDPRyAeTmT467M2/Y8v2wxs42tvLorEg7yzQK3H1iRJaZFoZAG7JdwhnaE4gu5x4DtPDGTdJtJmtAOTGDja84Vz0fMk2ugTiuZNCWjhKQHiRmcMcmM0TNzc11hkspKQ5I70zOBBtlNuzTzeAQNHFdEMWrvHAWe+VEnzIi0G/w4XGiE/adbFoU1zsazNamFG6au6wUyuLy41LFIoTfAoZ+SXZsbnU1DWaDcePaOQ2wCoQebSa3vFRxCirryOPQMmwXSw5wzYpNIftCFVpUIiO0Gk4WRjR192UhotUVMWtxx/a9n5do+KGYHnqZluEy6z+ovkCHJhfnsQAI+n6cIhPMEyvQzgO3F1Dp+a7nl3bzNaPt1sW3OaPvPYttcNzIS91xV1pHsZheMdkjvFB9Bcc3iXBEYYTnkzUYFiosCRQWyJuCMsSpt9F1qBXf3buC6sFOzRuKurnowlUukYzqafb4/RLIeOxpwCjx5Gd1Do5GpS8fUFZ/a4c5ITMJ2tojMPiguKCdExzNQ1sJ+M1IyRrIIy21EGUrXjo+Q8Jh+GqzMQi9+sYwjWOqJlZcKOPh+MwdkfV1s64LRWWhxqGFX2igLUWd20l7KzTaFHyqAgg+K4tQgtqOn7LosZH5ksBrtKcZzIornhi3i6RS/TTHam1kS6vnjFroM0fdTYSYSl0yE46YDBjMqCaaF6xmYaFx0UCsYFzFK1qQCMIsPbFQgd+AQaA5U5uXTuHyxX9TD1aJuq5ayS0rSKJzPyg2Ziu4rt0EOwelQ8pCxakFJnu6SvYkE6W7LL2jPLyjOmlZyM64kQb9+XmnEi+g0urxVpopxy6qneFUDNVW+4mMVMa9s7GTlkOTkAHdpjaIcrlxIkm7QaS23ykMcWs8EIJOy1XxbV9p1NqWWt23Igk7kGbomxSGsLZ1fL6dUUDR0SCjT8rIyVXDdk0LCovIki8rn8MYyxnKfNuGMiWfmZnywFqnLNB8r55Jck1+6WzZV7YNjpUBhNxfLnNgCd6aqjq+B3wURQdtNBG1iMc2pnLBkyJVcRzvgAB+sbTFC8X5/XtY2YUaGrPiaJA8RiVumjUjcYiRuMRK3eNtvIRKHFRJPzTaQuO2R+BPLInFnNUhMfBIFC8QVV7G1MseksysDWChKqO2MjapwsTunQ31x0+HKzQRlM/oYg9Rl7PLyLUHZklxFSwkfgT3+7fXW9x//9vqFutWjOlVX2109wTBdI5F0JfMM4G3p3lJd70Hql9cF65CxiGzkrMEM57qrjOxKlGpIuhqF4Sw0Al9u5OUJa8sTkdXk5/Ngpqsrj400QfpVmeuZLoVZ4O76OUWWztISQbNgmDp7KWENxS7o6kF/FeWXe4WVVOVKgnN94Pb7G7XYxW9F0OXYxYeFh2ivX15BSPacbILfR+2DuEl5sBrHiomwFZ8jijnyctLAdMwnPUcKE/NepMstVU/ZOAtxmsyDjUIejkxJ4QtVMWPNzJjEla42SaZJ6NW0zRJLjMs1jpdss55nDqFoGTS2WXJEIBswcfoap2GNKpENGhhVU3wocXveRYaZTpt9B7OWGaTPjkkPZtoMHswiamJUXZoNsbpFe/E5RjFmjRVZUJpGWbijuNcZinsNXNxraOXevE1xr+1a3GvbBnvJlLKwsGAusmpvNgBTJKZrGyMdoTAe7KUUiO7UR8q2co571WaAThlz3KvugeaAX3IABmwvxyGgfO1CIcu4VwpYUt4LV4t7ZRMk7Qq8u0xmKjGhUTbYW+TaDE6o2GiTckzy0ITCwUU82u44pIwDDgyEJKQelqpOUFN1ajjMmtI5DN6xrHU0HsaHVXB4iqP/04Lsv0GpGgRepwlQpyHUc+FM1EstmpnsJZ1MOTwhAQfqe4OLcq+RqCpJNPKR78g7Kj4KS7YNOvDcOq5xRjW9ywjUvjusX/dF3jv1dJNIXg0nz+Usj+FyJgv+n8Ea3LruPEBcuXXt8EVd4U8XEVr6c5fH7dn9e8kn64zfpnA6H/N+1XSydOrmwMuryr1Bub1Bs2sz8HX+HMoKF7DxZCOnTB/JQi4aodICdCqqPAYh+08NBY1TQ8s2k/B+utEoFMlH+EzjMO+1CN0bbl4Udj3vmlvLrOv3/ixsmA+RyS8oz+SfkqVRe2PTqP2ErKzaSIhPyJq6wsbnv5elVZsfUXNd5sCPycJ03X7wuMy6iHySjCCPyby1ZGN5WFa2bSvc2ewt4q9RZ+nidnCGAbsIZOA+Ddvir+twpPx1xEI2yA0ua/5mA3jY3EdYqD/DGb9PSUyXjN/a0j5/hjN8DyWmxbM6IgvTchzqa06fOiK97Tt0umBp+w7J9p2S7ZtOdd5fq3+/bFi/u1Rii/iirMzfadnxImBFlunvA2ScPbgXmO8eBmaGi1CZwLE1ZwIvwaxtMDsQCaVAKUkRmXfd5EzVFDtKvvXQfuCti8Im+JAFHiw5KsT0N/7qQ+8+eNeR9z8pfqErLJAoZBWdy/Q60zKdRM1OOvSo0QVCOlqmg45MrEpQi66b0M/gJUqMnsvpgPpAEDgbOoE/65INvZuYtp4ySbfj8ObAq8m1/UwHKNKDcEXuAyLmYdzz+WvqYJqwXRIruyk804D9LShwlT4FbFh7M/4cVfcCHwW7md8eBhdT9QzxCThXvAk4qmoRxmE/cMQeL6g3Ly9CqdbbH0JRjqtUrQ7DBDzpgqaeoKqkXT0BbGSkADPqfBSeBLYx30Lt/LDWTkjdd8iMrAzYfUQ5HjQTJu12EHCDnPegfO9WawIVmTYN0b1wYJngwMZqRhVh+5mxDHS/qLB/u0N+kQ0QS2HR7Pk1jhKWyH8v1WNecjH5OKZm2bwdoiwJWQffTJUttlF0JEF9i7AZRZlfnQ3gi2mRZdMiy1fmEA6JkZAD5hKB4xIDpZusg5xCEacILFHNQOkm6yC3CHnck4UJ3XSfxfLupDcDaMeHSjOAZjNApzPoNV1lddbpDLCNpWyo8i12aJYDzr/oeAZVcN0jnoSOZ/wQMnLKPAWcb+NJx0OegDxixEORMKL67hR4uYqB1bMDgVRCgcKpcvyi5xoBzb8nhH3yL/74feEFxDXoIM4AEfX9r/3sN7/11bsfcVwjYK4RNLlGswvd7IIP9TQ6IO/6Ms07nhGYAeQZ2vGMAV6sJNcmmMsVcw0KKqbDsNlB5yUDH5uJlD6qnoLsrBqMulgYpky+vSz90bdSDK8vfWaztGmTt8acPg5HkAOcOaFwMcxZE2oRyF9D6xDUXgXjgGIl7ueLwGuP/XzsrRXz+qHj9k8Bm3aeBDaqPAG5dr43rH4fsK2fmm27ZjU1O1jv+axle+4kJf54FsXtOxfYEtbCfAcecSzqYapKLOphN644MadhsUeIVZ7G3pPHa03w4BICW+AYr5v4hIlnuh18lx8kzlUObb45tHV+IMKsc/6ZqodR9Zhbo+Yw/3/+1bTM8vqQQy6bLLtEPNwW40R20MoLPFrQyNy4TvF+1h6TsBWoHrIizWR8CtGQSmyXv1Yy0Wiu7ZbZAR0IIUnf+plZUlpbF3WlHchOoe06/ThMS2JqZyFKEelrOzZ75/SP5A3Z2WqKVfMw/QyVq4URmLOzs2gv2iKyPLBjF1WPAvus51S/wlKnPntaTLfTzyvOr8XMlugfRlWaZybwHV+Xn22yF3YFHQphh9RiRV28YSAKshc8G3JBB4Enu6SGmacgoOno5tAcwp4oB/F0KVEh6rRoNEcA5+r2pE9AbSfqdnhb5l2cjOcDvIUjbuDenZ2C6NYybZdvhsfuaH2CLQUVbZTU0T4mCtaRbtIhWttbR/H34+AI19HJYUe8ixRjSQWy00mGdsT/CGT+UEFYKs667iPkwAKOFznWtGklEcFpDAOOeXQc/NVWQeNR5FX8FH+NrzlXfAKQZk08M0dMj51txwQxrQhFGZAQdWYlQJ3CwtMAC04kcQ24TClehgmWFTjmKymYBY5bauL2LbIv2CRMmMzeIu23yZDVELU/CTWRmgLKBo05mK1nWedm1zA9hi3i5v7GI6KrN1UaUvnY9bJPVjLNfklJfhZYP9onc28CX5ClTBOTl5f9RK8mhxwKNSgDhGolAUaxAKOcANOpxfkMJCZ2qg6FdHZqcT7d0pHwlKj8D69kvLp2eQkmUyzBdBNqojTXxz6ihX3qvrGravPyBbaIqyvNp12OAZcjqjSf9U7zCZyU3mlqPp0s7rRxYTtszNBmvQ2QAwf28z4ux4oLSGvxrznXV/N1YgKUIDpOgugwtEjriKu8R+xDQwUFnE7qWplwxDnoqJziQJTbZwyCJ+y6yfkqz3QTGqwhcRcc2ZhKxI7qSoM6LqUhKpUGHk9yVGYVr9TjtvIkjF/OyxvYP4QiXjdT7ug3bBFX5AHtZJp3sqDcyZ7nlts7SHED4aAG2rg4K8dnSiPEjsoDuzMP7dhFZNTbehE71uJrSLukdu6cbl+fn30w0+bsabNvOweextdkQ0ZnG+iiFrKZcm9FHjzXGRmxNlKqFQntSj+SV5shij8YJP9pkG1wLqfDkG/gFt0SJWZDvXgFv9oGpMpwnMOQD5IDMUjM4J3Z2VZmg+ZsY6YXFhYWrrrhxpyYTeKDRzykf4mp8FLH3WNHZMgbymFxu7LxM+G9lVAJC5r14/C4E2ceI1Fxq3iEPom7P8pfkbv/DTk8CG89UqOKSNt14tRMM232PRu8PmyeXbLywAziCOfK+Jr9UIfLp5aEQ9SZLjZyb42D38uGFonfP13jrNii5901rnpYUha0e5irLjJXtZANkc8Atoh7Ku7KnvIt4kPIiVMKqCw9wVXcZJ/ZqIybxMo+ahL3JvLq4jt5hudih2S1hu+XHMZzSDaDJomXgtMFL+iKM+w6QkJ2XKjSNzzE299ttSZvq/afIZoOO1NuL21JVGd5jtpxHDV2DEg3cVVRXacTWhx6x0bIUWN3XM6xTMUclV5zjpPm6wSFqkon86GQpcCrUDfzbh5gxZu4a1JxV9fihElnum0UzZJu23FR9+qZblLDblKlMaeOWMnRuemIOW0U6ETUCPLE00pD9YqcFJCTjrhKxEhHKus24f3DwA5932d9ONWaTK5m9CSRHqgt/jsdPh2QzlnCZ+iWawcHkRAiJbTvBi7I83GnLRIrGMLhoobjWIKuWIIuWUIyY1IW+FxgFwmnw044TR2rSKr97wKOhFvKEGmXawzX7+0xZffk9oMsNXGWeI4zPF6ym3S8ZDdJnc+0EnPWdG/fwWzAnEW+ulPMWQez002cnYqzbpVhBmEtzICTXmZdx1GtyNocREPWNBxl1RvvsD5sdD+YU1FxJa2B4DpwrvhtXNvfbQiww+Nwj1NcbiH1Zqt4M23z95C5YRTeDNnZbGNji7oD1r7KRLhFvBGlaoTTM8RNRLmj6mYnXO+HrGtO1VNOEA9MPJcFSDAhQZLRsGr8z09248ImhTndxtfkQZneMDhXtIxAHW3MCFywzZwHsWeEyejYjjl1HDZyqsQRI8yZtKEMG2HOniB31ulbRWwE7lraCDNo8f9wwQbvECQloVuGO+LqdBncehwIzOE4vBk8bhgwXcLkNy2Dye0Zc+rMXFdUmoxXQ2rJMhHzRkEgVLC3LcKFYO9nlQZX92bqZqvY77rfR9vtueIm+iTYvBHI9WP/7JZFYUd4XdKtRlggf10VwbjRRzCqYpNI3l6etBlbIf5huQgI2gckilp1jz1vA4Zj7yTF9fgQiF4VArEp12wjoxM9Mr2IiSItKL3ORUYhj9bOrwVWbBWn4ce5Yr11KZaGnUWWwoAorRTi+qYqsxRJGSNM+xyR0fUVKXfDhIrLuAhTHpRx3lZ6XabN/D/auffG31oU9sx+596fruPjKv7iBmUnizyuJj7m4i5EBlWkaWVL1lZwKh1VP6tSPcXW+kPutojNBDDDaWZy4LiOuB7LWp1YqfeQZZSG6eqsxScfrZ7LEguc9HkF03zdibeseb5Vare6sx5pp+bIa5Xare4MJwbKaFBwEYanc4RreYrF9+A8eZp76a6jUJF1iT8GXAturYFxXeLjXBmK+MB1SSq+i3fdL3H+qO9zKOqNknFgQXprZkiNwRSdjLMq0wTWlg3dSRarrDBBJWdt4PCkwN56hzOfOyWYbO4Wuc57/ZsNrAK7RmvNAjcbNpulHC1LmpXcbNho1qnOPrCwxUtBqrNsOuzYRCApNCdNzGAWUp7gNqdUWpA1qY7hQkwKaXK/JCodcHDDBdkn/bGVTtY1KeMhmQFcW270jbZk1daQa6tbtRUnJiJfGI5O8ZqNw4v4UO+NcgIuYVrdzhHK2Ml7l3SyjaOtb5RZ1BnEYg/RGWHs1R2QNmpUvFZOiF/Er1hyq/AN89GVbhnlzPhDImsDU5T9Ydmqy/nqx7iXCfgJgTXHsdpVbN1OqsFUh1mo2l6emcaZeRiEHODnJzjRiegQiHaPb/WPQ+f24MdeYKdz3kcDoGzMbr6a3Ta/fgbSSUc2ftnbTD58XNQBA3WuIBukKMrlCifIs8wAj0KOw6Wc/NnPlyQ+KzMSH1eGd+InIEzCB9tLyNfBPVkDt3IQuK4EQA3My/VY75NTmlIgPzAbD3wwv49t08R1WnnI7Nu4MIR25g7ZU8N5kJbYuKQHE9G6Lcgi/SjUQUqJpTrtpGyo8X4bMYOo00LFg1SkGq+rd9ho0hUIUBeqPRcuaMH186eNl5TbFjFy6Us/iDhJEK+fIV4rsdvXSSewMS5Ix2+hpEi5isJuR34R78F0xwpTKK4cpxf/RTqajCLdf09oLUNCv+uYq1yb0SVte7MOnS5220bzVAWnU8+kC6ww7ZkMTGcmi9m6mDixwl80wyfuVA+2lyygBy/isV/K+8olmaQQQZZqKW0RMRJKoHCfu/rkC/VEhc8Qzz1X/ly9jz8/Zh/Q7CPkPkgPOLMw6hny585FFcCeXRjpz/LbjQX55PnHSIEapzs7Fpdnx6qsKQOlFMVnzNydBSxF0aV9LV6dgFfHLYtno6QV/HdOt3PNueIXLS1pOmM65LOY82ZeMziDsj/MzFFgfNvf7LIUqggS3OdYxgC3dgbmGFcCHk2LRwMVczHCfhWlt//EIGbxjbPA/L6qHZ5fQaRfdWhzKUKzbWGloGbn4zfSRrMDICTxn8N3uF1/ptsiUhsVYvrwX3zu9X+w/8EPPCJ+oRtVIY5yq9DeA+oboTuwa42Qe1D3N6L6GglWjuGMGpGfoySU1yOvg1rkNUdKG2kfwAFA+tK6jkAH2ZOmqkLKwdFKuwDpl3NQezrrrjvEtUFl0l3bfydUYZJRDzoZ3XEXZ8rGPmU2cmkbc9S15MhQibiBiHzP7y2KSq+h+xN/7H0+sGyfv68gYjQ8ILlfSpJLp4tETbQHTqAge6D5JhlF5/wlsbfz3b0VtBe4RE63yT1ZyFlvlL1X7insoiwyoOvHY04SnrenT3t+l+4MRZ34AMXHB2Q7nTVtjmlalLPT7pqe2+SsCbjUGQasYs0/Lt/fi+1TdHGmTGi0vU0WuebM2wSMuMxlFJuQmtPb6OaU26hmaPQsPrW3ySvppBykM2x1zcDdFkNttfSUiV0+bOlMgIK0JNsryt+oa1tT/R4pKA9P+Rsp16bVb1xslxKaVucAcYmH3D1MrNiCy59soMhlM38ycP5kuhryog055Vx67oZcI+gpZPf1d70xoEByyoXNOfudmollWPGsZVBWLpJcUeSvcpHkijMoq2UyKOsVMyirJZHkTof9VSmvr3M6K40YVWJ66FW5PGjkdPjCDQOBkKC0u50lfbscTIxIrxtkfbu8jMWth79AhnJBD1c3saRvk/7be2SSHFkmK7WVRS5nGjDVCFNFMFU1mCo7sof04K+898v/qcxJres5qbUdOXpOavljykn9USjxJfCB3sZpb6Fb1p/Po0aYtzIRco+QI1pdio4Mdcfhwuj0VuADAyl/dEyAHCX2GaoQQDYtct0DPhxCcfDpNiR9suRIIkmEi+xBB7XwPUUOJnA3W9G2F7gsa2WqfZeFba2UpVcgq4pgOcuvjx+PjCJYLiL4qvsPJOvKNrSSIERCti7sU39UJlcO7ZN/VGZeVkRWfBAI6gD2B4FUYrQHcFBCUDMEoQ5B7SGo3V1VBV8w48dPsNQES43LMmw0L5LmTPx6+tcXFhYeFrhXan9Uvw8YSyDXD9l+yKcFJ8cHMZhYacMa/gUOgq/XEHIy0IfFMgfCeHsLXV61XMM8HUIwGndfaWWHQ+6YJFFU/s+zA0qCICOj3NZ1vm05m4NLGV1kLkoP7NDz9JSi1ELIzFs+dInaGZvNA9t6TlebcFTF0ySRBLTztC/aQDfXSs4ZJGcR9bMIy4m8beI7r8tbpv3CLgVkAY9SJ2qq2a7yLQR3mtZ0+/rrKLMGjpOPMprWhIqt4CRB4OeKC0vfE865i1sy29FcLi41qkbIDloe2CWLwdBW8XQU3UQxDXy47iFR0BltPlZ3nlH2xg8s0kksenAJna67XxT+rsynFyys8pG77WTmI/1gssgh3U93+cwZmb4BiwxTOz3YzBpBz21+inIf+jNpdmqWSdZdX7lJJN9Wsj2/xGj9lGRxNWS/eJxVN47QQoZW7c0VizQxkdyePZmy81lk9/C+bLQdRrxPivQfmXVmoQlQrGgh30SWmrfp1Kc/wRwXWUC5p1EpNbqwe+iGG7DrxmGzAXehRM/rosCpIXuF1VaY0LTT77nlEheayH7zvrf87HPmUHKxj973lp+lPUAZredrdywYlX5VBkYlyFgVjy6w8WzWothXOr5K53pNTEk46DSWKrkT6U3IgbOAqD/TpkWLlSs3cjdCSsDc8hcGpd+TJiqNcZzscqR2gaDxZh/cMBFQnVKXq13WVN7YQ9b1wcRqR91u9zaaT9ss3koJ0g+/xyVI/zew3gGv99v++KfrfeLr/aCSrZXXW/r1bjfXW+J6a15vuqDGr3do92SS1ht3xlyadrXeqAJFRR6X602ZZmJ2s7j1DhFuIQoc1XrHvN6Hy/UOl663Ni233hLXO6zWO6yvt6yvt6zWW/N6R0Uucb1xL9G47HxuX5mIJkXrLZddb6eyxLQ557JvvbVRdNs3LTqud1hGVRxlvaPaerf7F1c3Flcuv7hfKn2OuJPjlh0alT7H3VNOed7pwNPUbB6nXwB3dVnsrigHlxV/u0uKn2sT4iZVzwV/yYQawzLn891WU5yZiKKfdPMWO7WdNkd/zo3vx/ovWCnNtc/ru9LdROEoXTZKd0I5E0JronE9UWg3umuV6t1OTaC0Hpb+QdR1ad7DuaQqlCywBxuHQlG/VIzMVHR/k6aLCXlWvCPe3wAqXaVhVPpzLt0dHfrMlAkQqBECNeALgUyUPo+PTTBEA4ZoUINoYAIH0YAhGniIBg2IYjmGKArd3jwVOIgGDYgGdYgGFUQDhGiMBUqIxk2IBgjRoAZR6pYhGjQgSpNGiAbHhGhQh2jgIPrJwEO0yrwzNdvI2EsZHcpcvef7XL33iipZ79Qs58H1+cCXJOudIku5L8bOj+WT9U7NdMGnuL1P9CWGPT8P+3Pchi5jLSXUvaiWUPc+Ucuoe36VUfde0ZdSF8orn5fvL13aH/K6LWKEDZ1xJlno7PBmEGckZvOFwWTyIbXE6HSQX5c6Sc6aIMJAl/kje6ANcA3wNSDhUuASR5KkXVXXBtwNN/giTNP+WrkmP5RPGYtK2F13lEoYVeprTfrWYGlrPpskvXa30Qfsg5iaNdJbM7/k7hCnZ5+9gw6mfIlNxFNOV6drvGtXCS2/AGNLFqCeCZizaHwIVc8+wy8O10rSgBTdPopbiNVF+n+5S6MH+x9Kfuj2dr6hxWfEZCsAuH3u53PVUFJ5Q0O1iqJFNWergBWyVTiboujrDtuvOqS9nTuSJ9gRz6u5Y5VffqQBqmQWchNvrE5K5Mz+qNP1oJNxXlPczO0YX5eZR5woNUgPqCbox8jWQjeRUIzuE2ffQJ/m+WSDiSegY6Sha2R8gnS+404iXHpGTlOCYuyJjCSmunMeYXCTQgWWr82VPdiUBfhhMuI+ui6W0a2zmzgWpsMxJXGVUC90aV0k39gSpv+NBp+HzMUla/kOMYNxf1ejRO1xFEROufAl2wbOoyctesJTb3Pi2o0uex67bCa8o6bFRpU25zdwoyQRnIzuERvd/al8SZch9N1u3xxfuKbxSTow6upOzRpXZRIHSEXbHIfmAOdCivg+Qhx8h+fFs8G5uhluco2SrUG7hAtQiV/S7UF3nAEbeA9agHr2N/vhDywK2zIwFKBaL2B++RgX5CiT+WmsXZ+XbWQmn0tzGvGaMqCnkR6LvMCyk/SF8PATrr+6+J1uM25Hkodti8jIQiWvppMnt0iK2WktPXmy8j+XwkVy1I6kwyKKQ0C60rbo4lJtoizsbKwiQ0gsoBAc6V8tF7wTVME7ZYotF/qMbGidTbnDDa6ZDStG8FCXnTMSH8A0VAXOVZ7tQ7Uono+46J17JMeM3e0c3YdchElSObRvkQWJw/9/3kfwZ4Q/jS4PuGPNW6SLfiPX9O+Ta/od7JrGkeHPt8k8GgiiMNDKXZQcZGHn9MSMZJWYM5APcr+HpL92gONSDtWCXz4iXfZFHvqgUfYefgSJOT1rmTSPqlb4VoJmK1C1ckZVu+VhkZh1VpihDdmw2ZB1TYcDCbk5vpCg2ZyqmltfNdd1zenEJFV9vqagWV9XlU5xlZKqyTgxg922abvkk4QOgWllsWlnYcckXCMP+T0vb+yWN0AA9z1yPYRWZu3OaSu+7qxf8ZXpznSHmZsMJyVu+YgTNyua8a2yKCdSChR3ywl4m6wQyoX4eBwaon7fVp/RrW4QB6TLBNBtQnPiqDDgQWXSyqxlZRbRxEcoFChprupEp5WYoZlu5B7zPRWcxjadoSiuGkpRPNHADC1/DV8n2L9/JqHQODyFKsKp4/Akfg6PwxP4GY/D4/h5yjg8Jvny9kfwc/04PIyf3XF4SLIH/gh+njEOD0j2z98vObzyPslRQPdKtk8flnwX/KJ0K0Ic1EVc1NaEANVaAVB2URbpJYQV9kkKqHhAklHAW9A5aKvm9lP2RtmwwVNYUd0Ir5zNYA+P/3Ie/i4e/Q4e/It47JfyCNzQOZBj0bMW/HGfG+29blkP86nCI8KPGjfIWx3kDjhIvU2aiObL2T9H3K2EeeX5nOzzGoz1eRV6fZ5O0+eFGC7TBqflJcEdzkzVSA80OA7ais6pTaLpJ5uWJxJhWqwvfaQZqHVLFVlWZ7wrEg1nKedHbfdohMtnAxR19r93NFZkKcUV0uMz3OPT3YhSPjlUjmi+LmN4limqwLIyqKxLjoWW/bagqPD6vvdJaFS2IgtJ5RlV98jsLCYKvnPlkJ9N/VUeNnaPMxJ3OuNMc9bB7FQrsyETZus6Ee9rlNMl8XPnkjGWDOigYXdljn3IRXDdI5MsYCnoUCO+8FAVnlmNlOqv72PSnVrxrjLrs9jwFZvLsXQ/WCuyTqd9PN36hmr7Vr3bU7LAJMfuts6Yk8QE2QYfdEbSlOLEmrXAsygLSc6j4L7WONyBTO/D5C66Db/m43CxUfa33ohPLmSc5SAdIn06q8BupbslWVJuk8U43CO9VWUcDmEzP5QFB2ko+5QsbI9rPSGL6QN0CbzCn4/JgpUq/snczC78AXZ9KT94mC613CqQp6NmhTx92kwo5OX4/l73ucgDWMTBXG6UfaQcKgOe+CURHPO8/coIy1nTyOAyqm6RJUdS9oCsspX5JLXDdFIE5ZFhEt46M1nXDM1kbdOqJLqBGZSiZrLIOBwFPWUG6VXS1Z2AEpQ4AjpAVILyXRYmDWxPcD3durYoDXxiTpkp02pvoGi2rgtd43C2U2dM2wxdPWPWucfr6PHpMyadMZGVL+ennBx7ZMYMzJgWPe0KM+DMlCiFt1z8fJWHm/Zc2jMDt2dqt2dKgjudaUF8sbnbBre6G2Q34pBPcznlFwC1pbfIPkXIgNWzAy0RBKCCQOogMbInhP32xyn7CzJ9fOQlhy+orrJ8rMXLGJQ2hm6jk6NCTH/r4+/57vde/7VDfyd+oSv5WgvppZ0vqK6wFMgeJGR1cOdJYKvQyVVSzvvwDw4s8Rp4Wj0iYKM6xxdwUdSIEfYcn6POGy03VlVG3KNe9WgTPkp2SHAhX7BJ4GOdcRROJgwYmX5UGcVObXcLuwHbKez+Q4sifS/irywy0chhmL5PZRxFgQ0mQ9QqN21k+mcq+aa7cupAeXCEVOvvIHi6XlWl+3IkSzwdBJMh1pqmz2ZlWDplWNkuJXGl6nTJtz1zHM4xik6tjMOYc0077nFfg3tcUiZ/ZU/0mPNEv61iHLdUjOPmJuPYt4RxnFcyDuf0XnCM4zrmG9cy27iKX17OHzuo54eRaV3IHvWKZ3h3OQs9kxXHEN4zX6XHNeVFPcqFbh0s70w+JKtbs/lsktEEZm/SH8kVG+w3ZhFbzXPJ9+kY1P0Dn1jdskUvaOiviMpdvmWb3w3lQGfvFZ+9h76z95JPcrlj98D9pR8Hf0U3//4MYFMsGdDXFh2/N6F9FnnGfC0DdPC+RWfuu8q0DuZx7Zg9mPh57oCqr2FJ0wwoYD7womrQg6t426PIoGuzFj7aS2dLTGtCXWsCZDl7TYAc5yoj7DfevCis4nbSrdSBISSgEpMmsGoczjcBFRwna8TjHhHJb8LrHODHLhOQSwWxIiDvCyJGYO/wiEghgoyIAS5vhYgBomiFiNTcxSZwiHghP7hZ4nC2iv34KcZhnzQBouKC5PfX8sdV1PkTgggisA+UY2RnBxJHgNI0Q62OjMGo6pXIGDBf8glI3W2UZElN2FnsPSiHCFH/EAAqDwoj6liRh+x/mpo1IXmAnU8v6MEUeaB6RY7gv6/pgTp/Qhkscw4j9JjriS7jq7uCzAThmzvbht2w90nkquZ9Smvep5Ga90lnEXuffO5T9j6p0vtEYJgsmj4vnH/ATh2yADuWF/RAk/+p0/A/qaX+J2eqv6MBML74bKzIAwSYJh+RCdJnELQ0Q0sztHQNWnQxGEFLM7S0h5ZuQAvLMbS032E1Q0s3oKXr0NIVtDRCK+Rr/TqN1NUeWpqvGpusj8xBS9eg5WyZmqGljwkt7aD13ga0yI+M0IrYZzw1Syax+0uH8RQ5jHtFHpiwBi5yGBO4Qpel14OL/LYuB7Lz3BK4Qs8iQgZXSPbvmrM4rTmLR2rOYk2uzbAEl3NtBqWzmK41nyyaLmq+pJzBFTguHzKs3LXlCDqCVbDUV+xgdRhYHqgTIl2kbRS7fadm+dlf0O5b/jY6/SIkS+gzPC76DJehz4d/e1HY0xv0Ga6KPlWDPhWDMFw9fYZG2jv+iO6xXIE+wxXp8x+ljObrByvSKixlxIelpJyHwki608afqZJVbFIjLklztOHwHjs8m0WGDbCKUtagVp/+I0Vlu5BWd1F+jMJZbJQdLjJlIjs8m0cso9E1dsN7KLoF6Y0ScXDkffoPfAYal6e8qUm7AA7TjM7xIRt33OpCNn5He1L73+wIG2ZHWMqOsA47wuLVOMIYfEf1hXmvtI86XJUT7NyGEwyHr6YQWZ1v6bzKG+bCYDn/e82zFHPcZcd7vjwfOF73Vq0/9lDVmicflXsal37ioJHov5pkWjqmqtu3uqvxT307BHk9RWr140W0Al60anjRZrxIjoIX4XJ4ETJeJIwXLcaL9k8OL7JgWmRh7aYKmxZ5TME15GBzuei9e6t53DKygmOT572ZjA06qbvWUfENKGwqM5wQFKwz8pmCD1BM1l5KUn1GleAz4JsSYhW+5J+DCQ+yGYrKb+tS7Mpm9ov0+IzrpmzQxDOmM4MCeezPC46qXtnkoAnJpNDF1gYSto1v5uOwPbYab2Izr0Hu+aZFYf8zjSLdyvsLbnUu1RMpBx1m1zFCN3Bsl+/oYHpTa6e3sJ/eamKKaSG9tY+X3lSN3sKS3tzTKi4jKemt5VzCJb2FJb2p46C3g2eWMUmyCo2kjXx1/8rIDy01hX5QQCXlaepwMja6I26QNzK+9CA2urD/JLYKQUmZwB0aSF0iProV/6mbyMlyH4UGXtXV3K5qtqt8u8q1qwq7lXOr8EmOtDlUZiCkwta6+jAfBP+q60pyIpC9fBcdJRqkIKYXlXWOiCr8ii0wPpIkPYvbgEbZh25YFDbg8571UorzMEMPe9oiXuSusK4N7bY3kCXoqxUUTnRoHFO6bK/3yurSQI4LAntYuPgWvkkyDybUIgIomIDzONXX4fLKSY544gTY5dCoZk+8clzYcvDnGbCo+XJClttW1+0B362vTMcr7lld5UN9lQldJrs+/LeJVdJjlXRYJQv7z24qktGK0lsPr3X6iUv/SbVrA99UH/d5OO6b3bg3IqF0TimDbeMi3emyNJ8MYnsUiU2dNGKjsCDkCXwjba2jG5ukBqvC57/evyhs24cu0tXWNSIKG2VfX0ZFxp7c09OPgvinrAXxPQYONeb2m9h118+NelsLctCQVgEVP1PWQvonSxfgHi9l9U3o9Y3Fmul21zqj9ET5xMBJw/RvnNxtZWVM/2wDG2qYfnljTfeUdR5DTL+BzDz9a7qUc1+OCLwHEbi7Js7dbYz1yBuI/E8Uc/1qdZITnywNYq07QydpdPR3+8i4gvwj3eBwub32vYMTn5bAe/ANlCL3ZAEvOVnA27e62S0cZXbY0T+8einw4nL/OmbzN/c3314rL6gSNRPY//YmiuSpg31Tf6OmWLbRrGx0I49qhC935GdEJFW1w7LsdVEW9oO4F+kVZCsaBc3khyvv6wSWSbet1/uv9fI930taAV2vtW2S0pbDhqVVPTJsZAaxVgJpr6XHpLyJ/JiVLvR12l4g6tGybRGHZfp5Tvg5wrl3lzJMucxDJw6KExIHA3/H9rHFukvrUp2uBrS3RLy+kZYCy0kZqVyjAJq4E/p8mIuNTLZ2SxozoTIZ7VhBTVbtY6sbsdVe45QBZ0mxXKYHnRmeXuwv5SbXz51lEhq+OJcSpHN6j9q5D+VPcdRO87tTH8rJBjwwab9zE2UFuw/qiUPGZpyl5jha3Vo1mn4FuBXKVtlxt9B6dhTz/fd1bvSscdFiznOOOx7jBPzz+sB2DoItXQI2zpdNdzm6ptPPAmdo4NwmvYIG0mxMY2NmaWP+JM3q507YZUWm3TWgwt1Xm3xoPXSdfReWsSvwtW5dZ99ejfzl5TpdCWEuYy+bCw5Qmpz7yoTJM8fRdlO2qzXr1nMRvFHgMOQKN2ZZ2v7paq4tQnAAQuySnZF1mlKQkO3NBOkgv6Zcc4GVRa7pcBfCMeDzSOzsZg7IyfKXJcvDkA8yCxxEFqir/RQrNfZTHlmJbJ+GckM9DLijQk2fXLKlvYS5qC6zpu6h+Rg3I+1nxNOlU1U55+rS9elpo2dt9FyuY+M07a81/a3PfO73fvfxr33gu2JC+Ns8m9Wlrw5Lq/sDUvSacJOXT5kwfaCJDQ4emapF8xziDOyHIY9MqOdNaKO92YBRM3TrhbvUr4WyKH/FBX8/FBnKj5+GIksUXZZ6tZ6iDEe5wg8CUUSoFjnSiUrSiRzpbHbXO3N27a9wFnngBFiHgaInqqEbtVU8Ijll8MOyxNCHZWHf9k7EfNMx3SInl/yoEulpDSJ42N1o+4hk523MGfnxWx6Tm5SSops4HeTXcYK/3OWnVEKY2GEpqzlyKZY+JJei6WOS8fQByYj6kOxH1COyMKqBol9z83zAhX8ImjqOku+r1QRY7QCrHTgJ93R5Y2vsKsxaeC7XsSpN+2vlMcm37mxebKGw//jqReGIhir1tSZ9a7C0NY+K9JrP6tX/UQhIWuRqVIlp/ap88KAZnA5fuAHVx0AGoDThw21AJzHsSJHucsn08Um6kyHIr1W6m4FTK/3LzpxWPhlVnDwGd4Vf6ZQZznUlO0N5q4GeMm2TuFVpW1WYxKpylRg3t4pDULGPO1hA8a8+Unt1D5QYeg8U9pMozcb+MC0NqZSZqWewR6CgqOPSFA6mNQoCUeh+IGc1W7VDRCZRzYU7+M4+sq8GdpMTlxeBd+DjazZh+fU2J3ndxlnV76EpfgRQ+PLwus0xlIoK3/5OCjkIGOYxEeFQtXdUJU3gJbzL/UgRWgdgdQRF+cKZoAg3FqDwvvxlqoVusk/1keHNq+xtX9Wb8leEEj9hbuJkjftlF8jiMmA6dkEWeecCul0rMIry+VtxQfo5KnlI+tvT3CUt/ceSr1gCMi414kox5hSuFPSV2lSksx6oqrQfNKfZ1F94mgcceM5jPYytKQ/JerWPNKDzgMRqi67a3Q6q+1bZ3ULZna4E8WNXu7msppaoMLwQk104Ab2AhUma6bK39dzN1+iSqPERufJo7ybgXOUGu0qlaJCVokHWNLS/0+PENI3Bfk1j8OiaxsMU9PtAPYN9QJpGuJoT5vXz5axpBEbaHxwg81AVkiZKFWP1zW11rVFCrvvI/y3Y3Xw8rXhhPeTAFgqFqakGFHSj86hfz4icauAC+patYZbUSHz8QcB57/8l9FBd4GheK9lFfvxgdcfcSw9hX+qENcC2rgJ2cl0dr3/3O6iPr0KZWMHlZZhs5GU4zydcmCzsa24ibwWHyTTzMkCt2PdvoLwM2oBjfcNchvNc0TFbo7aI85x3zo3nHc3xBKsYj+uoMZ7hElgrdPaUWJIiwA679a2SBVyFUvYEdPggz3BfJgi6nKCWAkK5rBFD5aA7KK6NQ8xZCY7U+4SyT2j2ud316atS1MJjq6q6o1mV1bQurJWMAj5IZFZOpjCyNJsFrBFSHLtAdZsddbCj3nJZGzg4gdJRbxLJU0k9ncvJoL/Sadg8HX5iNIjsXkzDq/LwoJWFFSachks2VB4W1/cD+513ZZmUKSuTgnMkOirwu0g9a0o/McRrXC6miOPDaD7kRNP7f/fT8RFH5kSmJ0BdYXI8sBlzsJmswYZGsDb6DJNaJ86uDfY8FNRPYstsrTmbcYF46NrarJbgB/u9f+FkLEFwXEvAuYjYGHRSFiFIltmg7AO+m4d+HN34fcf2ivSUk9mygXKh5Zob1MfPuqlKP4OA5R7SnlRtMWtgiNUeI0+A83OI19dPOdmc/xtNyevkcX8vg3FAmQIpKtHnrnc4nnh8LJ/9pOCMm1D661Zk+Z21svz2Glh+q5zeh97hI71OBr9pr4rfHA02J0Cs7Tob+MQ7yDbj9lqf57/MPxatuZcKdJ95h49TORmga/0kQdeqg+6LhPEoEZn0tJPasnPqA/uXeSWCNTcdlyvx0DtOptwSr2YlSvxqrsTpJwqvuA6vRwnDcCUmT3wl4qOvxMlq+dNvdYBxuQrZPuJUv5PVybc99Huuk7EGda9dEItKnPruSaXu6CdJ3dGPbeWjVa/8iQhN4fELTeFy8tGykpT6NypefTDiGxqe4AOWlbUwqA0n8MMJcDhBfTiBF6402Uml/cTb+/Rqo3uwo5zl6pvdWm/1X97uLUfYWlcajV92IRloo+1jJRlwBU2agtuA0tPKIegeTGaB0VvEeXwsL85CXE86d0PHsmhogYnSQX4dJYbzW+chDi7AwUWVx5uPkGr7eA2jdGlroqOnu3KgQ6UGUGSiOmZJlbJgEwnBBUlQk1zFJ+ZMi9q8qYWeuAKZhocM5VHBGZmQ5xT6OYUJzyN0fkdO6FxOUJtw1qrnch2r03RJre/91RffF467mrqvpvQ1YZmazsdIr5s+Rr6Fu5aEk1cysF86QAj1JWBA8MMvcsDEl4DP1fLDzxyoZRP1D//0AEmmXwJydO6gM8JHVrVm2/2aST6fawIr0s8TBsZdcbzoXJmvqbmxgvpsYkAHu+0twQBLOUucQVrbJ4hw36981gO+goQ6yhRf56CreA7p4jnCWjxH6KMfyLYSNuM5wjK/LF3U9GMKm/jOZz72jd/5u69+8NsnJ2yikeOkiUeUL+ydFC3FOIQPnF+D8QcffOidNdzBB3e/05VI+ICt0PPH6XWwMrAiGS/vQEm+HfslW5B8nJ3WLKjWzHEkuUaOVK7Zmsm+5Ym3vZR4c2kfeOeiGBW0ZNLGhX3onWX4AVU6EVbA59gpTfcDjc1j+4wn2i1CZBRLcUl1tz0djcQln3Hwy8Ma1BqTp/mWMCvx3PWbfoVIeztvLlvEpVvFxcxMLxmHC10p4vc+JLvPSUKVoVHQufbBn6gu01dTWU37FH6/EDu8OP0sjWCyG1i+MFlu63Jk18ieIotI+8xC5aapatNUfpoOvWvTdLE6S2YJq51lSMBqzlItN0t/+j5szjJYaZYhpQPIQxPR1WHIGx2f5QV1jnditwGKYppctZoMfn4bnJp1s3Bb4C+NC1vO5zzeMh4ra1XsvnT6EuO9JI8n1A6jTTzBgWVuw32omUXiEtwN6O1Tq2vyKtdkyfEPr7znnIcVelyhU0oJS7eIuF9IiJduEew0efhfP78JPIcIl+U3N7+zTEUurS7sm5v8Jvx3wm/ufyc7Ho7Fb5Ywmiv+TTAaN71jMpolHOaKn3KYnyyHeWMphI79KxVClZci9TJS5CMf/+Lrw3FXU5+Y/Gn8xYJIJD5rjCkMpO+me/0oyVgu8aPngmA21ZLYnbiISXEq+2XDF2Hj2YFQKiUUUG4G55n9gupC85rYQZfQ78lHXvvdP/n81z7wHfH8rrvAwDmrv6Ao+Z6rA1yHb3bYz670lw723/F6o+QMeFOFu4EF+FpDSUzDbnSXqgX2nMIG4z5J2LAJ7L3vXxR0EyI+2Mw5yc7jexEnKU1XrxiHkTKb2Bh9i4tx6CEobVqkhyUl09kkkiPy6BcAn9Rrf/ne2/TXOtpdmJv+Gu4ZirMYqJUv44XyMl55rMt4y0soP3wU+PoQNAKznKgDd6EfuA6cjLPVWlTr4yoeOXR8q5IcbVleAyDnm9eS1qKNu3xBKbwqh4MGptMXbrAwO9ARElSs4zgI4yguryad6dLd5S55ZC5nuiElF6VXYd+roHoV8BXI5StdvdJ80Xb5SlWvFCdlVLXum78kL6YrTikhKRUo0geH6yG54ZO7kX9CdSyIj7xIvi5AV3S8RfQIQfn7qEuK4nCUju58ko/u+PTzYlrQNYiZ5qBQ41rViKvuEoKutl0+TYCPsjygZIahlALpPv04dHRiB+iWJJ/Y8KIumT85WfQonFPdVslHfpgz0V052qF6i1EdQZs4VFfcPPKs2TunfyRvIFmDznLI9DMUsOxuHMCvp+fKjl1kFOVDLAkzLkzo752EUZWi0IbToSjQUYWyrPLNX4cSwAu7IqECMjFiWnIOFEo8ougIEN9QzQN2F1f4AfefDvqGgrDc9XjVCL6fgsoHbHLFqYjdtD5dnxZD/PTmMppqGU21jOsn+PJtKFNT6izA2j4xpaAzeLbLd6BVCDOUa15PTk6p+5JTkrhDPWufobLMsuUXwSelRK6YR7nGZdAuLSVfeUEpKeODmTYx5aUkwZnaQhHh+quzEClMm6jMU6mMfh6FV/ORQ2wG1+O3Kc1jPRsTM1AYhU1lvkWwmxtIJvg2p5XLqDI14/I8V5bmcOTa4RwlbuTr25K//AnsGr8hq23jN+SPb9/4VCD1sreK2JCS2ObSwmyOY24/b8NAzBdDh8xw+QIi8NyOs9HQxXsynTGSbvGW9US5giX6kkevvYGQ2bX7FVCq3erq6TLhr7uxr+Tknv8Oci5hXdRyCcdFPZcwvU/r74eL5XIN+w3B1DcEd0VU+qu+DZrjSP8cl14GKW1nyYxdv2DAt9yf5BhlbB7jUSbkMyEjK3WpkAePsQZLxle72Uqz8pv6PnwyppHlVwwbrWd1PgkAEdziYMKfN8XQrlJeMpVOzZasGMlgKg88I+5VjLhXUu6ofVBc4Bma48KLVGYTU6jJIivotnxKeAzTekKNMVuPeKMOK44wUuUxI3rcIk6nqx/k1VkbeZ7VWQxTytka6DadkK/tCe3XxbZuaNozXWlF1kbCjkp2Erlxp+W4h/hsI93IkwVWZ2FHJTbi8HhqGRvUU3YdPyLAROkk7o4XZh2c2fk4K4RQyLtNQOdOenAOn1RDRkhp3AwZj5yTRha54tvbQ4d5sZV785ZRRpnWRRtyZRTd3t6ynT2ZMi37vi+/98uCrvZEXIppj9B8kXZsO3R9u3Y5MVN3Fyxd364N3Yjqrm/XnEVROy0rdEefrOZkYuxrLa9vJzON8mlVa7dwauKAJCtllA1yMlOJiY2yHbrhu0NJ2GKjTefZdKN3wCcy/Mm8Sd4H/Hq0+Ghi7BL++9UgXZn6iHgoEd2vq0tc1x7XNeK6biQW55yhkcu5up7TvHWeTdn2gvEqNaJwg6XQW5TGeFXHsiDxZHAYqMzBTJnOQb78firXTA++sf+PvbcPjuvK7gPf9+v37nuNbjRAgAAI3NukNIRHKGnGI0Ajmh+PCSRPbW3txJU/vKn8kVTtH05z/vCwVLNOxYkgD5NADpNQu8oaspUyZi2XqB0lS20pG6rCdWFSGpvaaMpURV5j1soWppbegda0g7FpGyrT663zcT9eoxsEKc2Hbc3UDJrvvXvvuV/n/M65556jNbbChF7jpHBGAv9VR7raKKeMiTCgtvLCM4PDuRd9YdORc8YHkGn7NRyzuCPBx/eOj3niPzwQTFF+uhVzbfu670ptF1Jf981mesuv/sRzBPiGb9nAmz5u/qs+B2roNnjur/omlVdUBeRQHyx4b/gImf0vqhG+XRedh5mpdujnON1Eg5+TUDTcK4efdo9EuzExiLj6Uw/+jmBer6DKVCyFCou2kAKxVlzFMGX4HhN70fuWkA3q1RWfAi8Cla/5pAlc8XVuL2osrLpPlD7m9QoprxfV0uQPkIXFFGDjslPfZd9wPgSi+MWC94qvs3xhGSZkBwsSQLrjqxT+7voKr3nc9ont7vjAuJ9EsBwuR3bm0io814z9MAi9EDYIeTdRZgJP4RAk7J4CD/3Kp6lJ2Nmq9eshTRo//T39tPSqUMUFpv2KC184KV3qbYb1Nsn3o9YiVAI8w7ZY+lMyrLdV+KKKhIopzzCGCq88NUKzKVRYd06V8fku3kdsYm4yUNKCM/LI5ykYoK+9vFqP1gYPuP2ur2aEPKxGsCLOOkZlmOj+MtUdnXUsqHbp5wjPTSowj3NUBU90xbTKZRv03QnBU5n1TyUm0RnlS9e6/057JGi4vWnbXocraBeHhLssam2MLct8WTaXz58vO5hYo+gM/ZjCeNHK+zW+Wc9dRhJuUcAXk4sEL+Hd9peCm5SfDm+/NlqLdIMUSS8LbO0Wt7LN3b7pq7AY4QxdtX4vEXHdsGp8ibhx/5DtALPplCMAlWGM8cIp1MAraQmWd4su3ToTuFSEdLvXrgfsZv+8HqcNW3mw5wgF2T2LAIL0SAfRzHdD1CNj0iNDxxbg47aOaFuf9dWRs57CSDgNCtSqtftZVCwltP2/43fGBBGdkbNqBiNeLXiqm6Cqbx+Czm//1TBoaNbR/Cc/T1ow+vEE82GrewTTIrDmPyuP/A3SNxNz919vFRxMmhE8DlCp9Elrtdsmkel5FcoZlKKZnHlZJdDDVGUc0cksqP4lVegF5MmCgqfccTNS6QX1s767ovyhKwo3Uq5fT/Hrw/y6hRhg8BbU64oCCrkED/uvu2xAhq47jH7dt6aZr/hswqjx9V+tLzs0rozqq8K8/EJtxlij6kr4/YLfTTm9Zq5imYJOHZpq3/br1TZVDOIT+EOt+beRtNtkP3uay6Sa0/TtjJQyYQQPe3+Ixf6YskHme8eSqpQE6+/6eQp8Pa8aT8novAo1nUF1yRnJS5j0E6t+DspGy2UCsqCkpECISFLdt1UsSIjkIorMaoUQyarfzRHfwKsVi2meQTowr2hoIQUmHuqmBClShhSRAykyJndWyAw2QxGxOsGQQr8/ImROpO16PZlzn/4u9eenNKhIWMUxoCLRoELXM62TIdE/p3QoMV3jT1qQhS8XvC8aSKEf5nb+c4YVzgZIea4jWDepTJdlQqmlUha5EfW08s+LbqZtXlybu1LuLigyva9zIygwBnWDL/nrTv0dGqafILWBs0DhCMR2rdBS/Xo/AUM2eeoW3fLsMvtb1or3t2G+ywjTYmXDRTZUMyZk0+I9OaYSgc9HbbEU1DFutS0qwT9bQ1mYoXFEwDpPzDoHvmfm08LETc+u+b+JsWswvNDx4Me7JbCRQOV7OdeC93ljGdU6+F9ToK36X1Sje9LqPm308L49Mar3BMC7QygWoiooYlG1+J0/JUsi9LrXkyUP9+dII/xRGnVhKu8+UQZVi6ovvamqI1QuD6mUjp1R+lSRyouUlTdd3xkjo3PsUYo9qvQewAKlXf+lhdUTPLGjA/YBbHosyzl0MTTVRBUBTBg97nnVt64/99+nT1KiBn6HYYHcd5wnTW+jURomIaPz3UPc6wBaOgTL3KdQ/qT7XP8lykEKyyBDn/wyY9nMrx7dX5rRZs5pw1G/HVAXaQk8zrkvUQCPkzGgJn9Ls08jlARCTsqCC01iHHZTiML63ODIJbbN+2r1MbfV4UKfd+mgVxxEQy+Tz9KyewyHWmAYzgnMzhrIUczkF8gcs7IGMn3cexf/VpNfetz7TfrZ+NIJ7zdAC0TuiPoghZU4HrzHrW9y6+/yLNzgWfAHM6snyqBvDn2eQ5huTH6tuUcT+UGETRZsgucUAdCpR4xM+xTuHl+GqikTNYZGHyI4xMKILIiJAD8yvaGX8IJxJKzpIiWWlgtTLBOYtRg6KvhRgz5K99MeDgj1HnORHo3tTVcZcKdZZyUUHCf7lq+m+V2HlwCGO25YRp+RRq9tUcLKFHMGkknv7M+srKxseJRtXp/IJYJfbPlLoUf3VYEqIEK2iT8IUA9g8jrA1+gNjCq88UEpUTmXkiM2R2NU/f0vLkuxfF42l+UYp0tsOukS8750icYsRcloAe5nxkCVGAMVGiOkXzWeOm9GeQetNmYN+trONb0YPCQ92aFj6PZicEx6cmoxkJTrdoayWExKT45RTosmWdkoMS5i/1PBmPRk9q/gH//oAjuF62PQ275zDnrHyWYZ2PNQOWJselZrtWPRgRFrcyAXyt74P/h+9DSlKAy0RZ1j/x/vsem8OMem86p1zjXXHz+nTwGqY+ccy708V7fc69LROWt7f2SP7T1yjfnizUYwbr0KycgGcrl+/vl5e/65j9k9HGh2j8js3iCT+4/K4GxjSR8QN8jkHveZ3EFNWfAO47mj/0VFqC6ofsvrqbJqqDS0twweopzf/8kDBiXI2g5r29EvG4613dWPY0GW97AIRJWyxe9hr4KnfwU1gQTNliB6F7wzKqObTdoOH5MGegNhzZeg5H8tywXPsyX/JpX8ceIDf53s85/vNquAuelPkyHmp1QL/jylMEjXT5KI/wJxhp9QY/Dnv1HjaOMnrymAFColW37ItnxyliJbfsq2/KLyn+rmMpKRzD833Y1khLb8vHrkCyqSefXV3/ifxj9XhU+pQ8EZWVAElsVgTIayqB5BUz6GENSm/JBN+aE8hHHlyJQfHg8iyiiMpvyUDMlAAm45OsAwpnxcuhFepKqb8kNjyj9D2OZHAZKkMqoe+UKvizlXHpKhbFEGljZlYBmFbR8CL5ihROeTlM8cujCBl8VkAmpbdh59wYgZYRoXungeGB+zH92P+8JyISDX+m+JOcEviZwfD60TNHxDk8Bwsse9yBxFV2lPJlXrS8CYo+FGcn32/dcdI/l73t7D7wAa+YwMoJFHZAAtfwr+YAs/bDbvmwGtNcM1A8oUVjsgCEwqMWOjH9Y8B8p6pEcDYE315Dm4uZ4EJ57OgY2sR+e63WOe7FbbgctGeMd2jwfbgTYVdsnb5a1Adg0u6AIucA7xusRxNvCbh1QCNRxXPyy7Faan7AI3eUx2gef8MHMT+JINUlVDZbjZEwFPlYpJdfis7FYrYU+dkN3qD4OeerxqKKjlj4Oe+hFzpBfXVQlgMr78LCojn6XzuRRAxg8TnZNEAbQzaZSWBA8PM2z9MN3x6z7sfRb+eYI5RXfBe0wVsjsf/Ig6CZ/GtfM+VBK6wMh07S222XQXvHY3NjaWVMZV98kykd3qUgRf/5wPg3UpYntJ1aS6HgcK/kV0wvPk41XQg2p+Lnrc82RXdufDtWgp3A3g94L3fPS4dzuAseMubgc9pUBxqTwaV1A+K0/lZz11svJUWXlqvPJUUXmqddZTpytPdSpPzZz11KnKU9OgWFSemjvrqTNHvepSrhNBXk968oe7U62f87Xj9vWkK2iZRAve24mK+asp0OLt+xLPGP/HuNdN4MNfT9i192HvG8kJfz3m0piB8UaiUvj7LtSmZPSwvx6f8EqpqpGeTPjunarGOJeSMpn1FeyIDN9KAaxEnZ0AaIWprezijjF8JtrzY6BqJwRy39Lp5Pu844CyHY7XGi143wm7MVpWZIxKdFDlShS5IOMx9XzNtz0nqxm+niLPH/3NnvEbOm7z4Y1EnST/57eTxWAnlZE8uRTcTuVJtJGm1Po2dwTo3A6NHBUgQ6MF7/2QF2GTHjE9W1hqA0vdDGHoq80QPbu3wq7g6jZDYxLKUCUOscpvglKQ0kl7pJJ9jtWag47VcmMDmypaQqao8WcVBjjPjf1rqhgRUhCxN8Ke1DS9A41HC96NUFu+dCNk+VIZFMbGniibRamtK6DzZ/DPqLruVHfdjtgUdrHALr4VarV/Cp4wHesxFLyOU/VqrHL4ezkGeo4HL8WwC44H63E3I10lVmlRAkqMeQhxSPIqOtds+CH+xwuBPLo+2/r1sPKerPynVAagx68C2TzueXQF9IlplRW+0LXYegL8j4f+CXvr8ameuFaPkE0Q9DEbE3KaASGz890Uj7340EuefpnczNZjfcW39Sisy8uxOuV0tcQojGhaJNMFleCLxI/yl3wyEi14L8Uqsdvm67WFD4zk57OejKrfTJwLtw97v5Gc8NcyGc0Hbyfd05iT7ye/DNtjwXsXOMfpsyv/4Mug3kbVZgLlX43txYIb8AQa5urmvV+Ol7x3EnI6eBvPGfTsos5JJDfZfFNdiHSNzgWCl+Kl4E5IbhS7uKIWodxuCOWeKLGL2PB8cCfEtLVM2YXI1tPE5nNhhg/vYVxPelV0Xo/gUpHRkdPplyv/ST2+SCoTWvLYVledlX3Vrmxg/RmdOeFPy+PeCNkZlQ+d4r5DpxI2paBDp9MgKEBIibpL6Un0t7iCTeOp02mo+Qo3L0+qU8ioFrzXoDE8deJnMZ068b/0Jgt78qQ+doLVFmIW7mg+XA+7p227P909KU//Dc7EbcaM1+kSjCnuyi55ihQyJj6jFzCUeTfpyVNLgV4imSzO07SUOC0NYTd2/7cxfZjhhylUtqYFCg7smhUeL+DxfulXQgmQxUUBokMz4ktcjKU0ysRLDhuvPGZJz4XEP6Eaeog1KJk87rWkkqeWQpB9h0D2tevruV+26dVNm3WDFw2sDGhow7be5Jn7WqixDOIYhDRo2NatvGB29uBWErwmHAZ+JMxma/1vQe2jKlRJ0RSm2vr7koXt3hc8/ntfoEd2jXVbMp0tXiZ7dxQ+j01fiPzA90Ld0q8MoN0lsfa+zC2J9RchGaX3vvCLWBQRnaamovIRJrNqjP+KBLDFX8b18nKMcDVjuSRYLk3pziKTutvHml8xSMtOIIOs/iNsDNKRZAQAaxPY5tRi8G5i+BeeWGBHVh0G9CxL6tWQ7WQpC+IAJRwl5b6RdAnTuDhH45tEyCmFywGoICuq3oApEZQzQU0mCDck+kE3vgQ9EEag/FZdoHyTBQpUNh96NZkCjHrB8wiQvp0oweLFF2c9AbKv+pO0RxU7Vfpr2QnvA+jJaeBP8tTZlf/vz/5s5MsX5MkLSyF3S51kx7vHvT8A0OWd8L4D0AQ5A7z4P5HYP0lrxH6QnvA3ccZ20i4dYcV0lCZUZnAv0LCZnfDGCSenhJgnelSrgdBFT8YyO/+vgJ5/dAFYGiPmmPkoqgFx5aFxZ6Ly1EjlqdnKU5OVp9qVp+RRr9qIz3UbxzzZQF1yynprNxa87YAsRfSv94Nuzswj18wjR2eGaiuCov/Bl43jwVbUzbUuBK9hnJDD2c/q6HLAv5zftSqBjJuRSk1dvxbY90+WE+h45IMYjELQnRvVYwyqG2Tpd8+FJgQ8/ayB1Tk8YUofYVTdWPA+o3LZQD+Q48Ej3TnSf2erQM3AW3QIKdvwc161ZF7hlDYQOUXnB4JqF1i3EPOWBKxLBtaxAdYzRReAJQi8ssIbIrEB1jOFEnKOyJU9Oce9VKoFf6RG1dRCy54nt+g8eaaY45eqWUVqppiF4Zq0FVnH3Bk8/pzF4Tqs8TQW4OavxFDsOs7FtViV8PdqDIQcD16PYbqOB1dibftPVVPGWJ6P0sxUl1V4rin8MAgtrG5xdCbtroZIptXnrlYW+CUFQiJnsUCVAL9DVdYd0wa1kdbbKPBRv3uaTOv1AygPhSplyz3Si2m6hCzPd1FhaWrfM9lRKdMw3gVVggZON/2oM0ilLxvVtZjdyBrVVfqZ8njGQhaqKUW3ZWsxfmlUS0JXKEwtk1y0ZWtrCpnZ8ty1WvnQls9tuWmuKoP1cifqdRM6bmhUF+JeN6MzgEb1dtSTjepi3OOjvUb1Lj553nnyHj550eDxhpxeDFZg+1yLepjMgL57M+phHgf8l5xcDHYj2QBRcRv+thaDHfg7shjcgr+N+eB2tBS8HsGvW5E6KRvAQy9HslF9NbLypwFa+KtQIl4MXoK/IGy6zRPeK/CptxisR4bRfN1hNE+UqWw87P12BBvi2xGK4VQ25sNtbAxZVBN4QNRr/bJfHIWB2ol6tDtodLbhn/PB6zEoFEjAzaiYufuHCX44dcAPQUE8jKdExWFh9ilqRjTNLdqRDdCJzGTTTFBdwUtoTkN+Judai1BuHcs9UTaEbfYlapaIcjQsnJ2b6LOSLZcxDSfge15vS5WvmtBxsYzLjd8aJ73DQo4v43bgN7xblopJXH4hNPd61OtmVcOuK9DzsqplH1zEB5P2wfP4QNoHL+KD45bu5gnvfaDod8KebDJuavAqvB3SktoOee5CWi9bIS2qW/DvlpU8fAeB4FAiT75MPLoNnDg6o2XOVezM7bDXTbkzOKQA61PuDD64jg8m7YMb+EDaB5v4wOlMiq+uhDB926DYNr6EaeNLFN4hLlPh/D5SXy396yXRq4OiD7grx10tj7mrxXfW7Kv1NcuLh5fKuKBPgPMhou3A35diNQ5M+CMg62f9+6ELz7wOadommbaCaRPUwADa8nui7bNMWn5A0nIkDfbQpCYtZ9KmmTTg00ao+7TyPEbyZFJrFm3qWrVlICB8tRX0ISYfIcC3AgcyWXC3GVjM9F6AGO1GgLRvBt3CuU8AH9wIjEWy6VT9TqAtkuUADEWjYWR53TjZIgzVYgxVGgzVLJraONms0FmiNBgK7YoF0X896MmCh+ktoKOx4F0P6sbJvTCqCfvGWiabRQ7juOHUtWFHkbqaY1e/FmgkhWUKi6SK4Ugq40XFFq0MawvOoCCHVSDLqgT04ICmyntSNcknCV8Dw8n6XgvCMBljmFJbEptsSSSnpJSckuLlMtjLj4FNFzAWw5FNsw9TCIspxi2yachxR1aPG1ktWLqzrK4iEs9yHGR2SjKbBH6XxfpAyR3di+QuhJkSR2g270loFkZoanPiAYRmEzlhY7/mD8RQCsODyZAimDfkzBtS4hlYABda7kL2a7EgpnOLz5mZ9NQlMoUpSx1hmRphOd4nIaM+CXklsCLySjBYRr4W1ISkK77QC8qIrML5Pat5oe7vOPc3xjXnbM43eKNfDfbYNrDy33HxInWe+lYy6GzxssTBYAh5wnsfNLVlOU5+YWihh3X3fkRVag+GlMZ2PvBg9UH1C54HBB0PbkYqFzwaUzgaqK9ikjLLoS8P5tCvDObQ6w6Hfok49Bpx6PWAPaIth14bzKFfGMih9WnuXQ6Q9uHRo5ZHh/08us3+yg3MY5bz1D3HU3fpADx6pM6jcWpXnbpW+3l0Ezv7rMOjm4YI2JH5cB4d1/dpjLXZ06Mma6HxuWbmD9Zz+diniXeiKuDm5lbUNPFyrsZWFLjnR3sr8qmiuFYRc/14GNc350cCFFeZ3YPSWgxSWkHxtTV8/Rf3KpxODdO2hg7XAMAQFUNUO2vKIeqe5sl9q56oVnZYrRznHV58tGpluI9aGd+LcGqDSqWmDqgJpsvlCN0iHTmoOpoLs9jvW/rldel3MJWRBItA1c9RCvWFLtkpBbCIbLBimP2gKYZhn9hbccTeyhCx90zwfdYN8ZasEagjzm9VXxb3hUvyOi45gKJDayLRgr1gwS60koPuiENX6/0QFRyQKEDWUwiDkLLpfq0Vqtn1raz5wCe5tevvhRzAqD087/9Q2AMokuPLsoP4g/6FGEQsy2xZTrEjbfbR4BLUHHd8F5fs+ANxyXf8gbhk27e45JZP1n0fx33b746Qwb1TBaqw6GTLr19ZAbXU18jEsb/zdZeB6GRfbGJt8EXR0dik1W+DLwC3jLD+6/fkCM/xN3mON/06NmlabNIkbFIULRebFLTVbjh13bBjWWB3R0hVNvfEscyIxSYjFpu0GJs0WYQmdUt8olIZY/ngjExcS3wLreTaRu6zg0vdEt+CsWhy1hJtiW8V+KU1nntVoFpkiW/VLfGD2kj2WuKTegtFUL+tbi3xLfKHSYwlnvFMS+MZY4kfN5b48h5AzcxASzw511AF72jnmsZ8eDVWp2rG+Jq5fZC53lGNZ21TwjG3y1NLoTGPf3dQ0CyjIMEoKGNeM/PRoqDgozKujx4UzZR6IAtWaE8tmY8LkAP5XWoiYEEb7L7x0EgdD6X3gIcyRDzRACO5qLsVWSKZxGm9kK8zW8Gwrg2O50GsZRo3NLoW4U/Lat/yu03XtajZ51o0jSE0XNeiBrOjZs21qIExQka0a1FjwdvwHdeijKxifrfVbVrnogzaM85FmeVzvuNcBLvN50vtyJQa8+EVv3tatvb4GOEXgbCD+I72M8p4fbCfUcJ+Ri29l8XeZZPI1nmjO5AppByMSZMfNEwa9GHSy77FpJf9wZj0Ff/7jEmDGg51zy7m6luzf3PmFv7lQ+HfyIfFpDN9xqbSngl8KLLMecW90dXQdM32Y2Ws2kEYX2G0st6HSBFTs/5YLqsOKJFkL5BZiVaaDON4ovEgoyCe+8BWfU7bZFFS9MFWVOjwJJBN0QBhS0SxCFfLjwauIiBfc9b7Wj9YHSdLlwtWxw1YveSA1ecJrK4SWL3kd48QWJ1Em5IDUauArh03Frxn8SJ4hbEzCAtE59VcOMgLZsh/6RJ4NyfAmqNTYkhzVvpVRp2QoBMd0VOJXt8yQ8ya61dHqEMrfk8e4aF4BohrcFAEnA1qKyOsCT0B7JoRdqWa6NTas5X8ZN9wTgstSr5o72D7pv2tEIoSZL0VErTaDsmMdjOkI4+tkBx89FkHb6tYpq1f9O02y/DfMrYryJzB0cZ52Ps3MRDyb8l3DmiDfwLXb8YphgkSeKd8SsiRypPT03xvTusKJxntbYVO+CCHQB+RSqjOCFmoVIpuYr93MZ/+HgbgVohAb4I7nMASpkepkOMlj1HNQ0MXR0QGpRaDK7GtKjdV4Ba243grVFM8vi3se/2R/hQdDOQ4VlqqXM4KKC7zxeBqTJjw9Vh2bM9+7xf3kub0rG17NMNNdAShVYNzNWIKr8RLwR3o15mlcA1aay8Gl2JCoBdjss+twt8JRqopI9WE2YvEees6yvF2pFGgbFT+YrAV8bIzyDOkJcKDyfJm7+iAXAdxMz985A4NfUVrtPWaTxyIlr0GkjxqOKLXcFho7AyQvBkuBa/HdqkfISCpF3dbo5fMkK5N0tcwjlhnuWzWZ2uJO5sN6SwQhReqk8pXE+yJUdQXI7pni2UYOHeJk6e7PGkAqe5s31bBCB+abfyEZRtFA3BozhegUotF/063hVBUEBRt9UFRjG5whKDoybOeOgOAAdmMQYLqNELRLWwYoSgqFX+LkehpdQbDvy14f7ubEgzlRynBUP4X864bXk+edmDoj5/1fqzEZfz57kmM4cvw87Q8iS7uqagzD407nXkg/gGwYprNn6ETzCq1RvDb/UjyzX4k+XY/kny3H0m+148kCTO+zhvqCpuZXuWddNk9gfVZh9v1rCzlMDbw8+/W0eKmQb8u0tuLBfegxT148io+sIjTokXGiT4d8DiHuMAkrsVEO7KwnBgmszIaepx4XepIbY8+XfNG5QWM1DoLmAKYhPDzc9XvYdSFmoj71dry93SALZrwU7QKyIxJ3z9Wf9VNaux1SshTCGukPPWyala+mpaJGikyFGB0D0XoRXXqZdWqPDVNRYqW0FtLyDOA7s/g46DOl/o505zmQ56cI7hqeJTLlwiuulJ3AGOq2LBxLca5QmPVBL8sWFFHI38/j3J5E/EsYTyXPhzdnz0Y2eNMthB953+z+piKKv3Q9Dx2F3quxcStkS7NpQtNVZtfzTBVKHDPnMPFimCwseBVBPbO6FCsKkOcmlBkohhWT4xJbGA9qakC63gV9/GmlU7VS/jkRtibD7V+ik+uO0+exycbzpOL+OSqfYLCP1wKLoTEe1ZC4j13Atq3twM2R8FftJgCF3jq/GKwC3usYZkQBxlvLHiZy4NGq8egycvUZOjJUQyaUq07D47DgzXngYQHl5wHk/Bg1XnQggcrzgOc0t3APICO7QRLoQeCf/TsP1xZWbnis60nQGYzJuQoBRuh1xtcEwcbsR92QNqqCTm+rCZBG/PR2knePRMgMFTCzEzGGDAD81lQvAzS2MiacZJQL6iCqN2jgiTUFFSDCU07CP5nAEh3OEbG+LKcXD5ferKMzsjxqtVTcXhGxibWRawDYsSV7KlYlpV/rltiQIxZqIdOIIplKZblhAlhIvBpc1lOV96TMvnishxhdW8E32TsoYY4Q83K8eVuE3oeTmlFNCpiYGfj9tCkWdM+m4MPTWZY+2zaQxOhmqyD5ugk1eqpqfCMnDJdnNJdnIIuTskcuphjF6etzkFdnF12O9hZhvFrmm6PfzS6LNXRbys9HtyKGMlFZLq5GemzJQyZJeQoSMBIjlLiElzEU/Sr6MEQ8TqubTO8T7ER9455dNOzioGbKRnNh9cTvLSGmZ+qlVQvfYVJpqrdxD7AjEs7zoPjmJXVeYAplracB5M9usljHmAi1xv2wdlxvvWi6F7pUtDQX72baKzDd2MwNt9K6N50GapnRwveSsixUqIF75mwK/j+i9D3X2IADfoK7M/rm+Oxvv8Cr0HAuZfHu83Wz/uDWnOK8oV6XXXTXiuP9T0XUfnnmkEWYITu1QA+outaji8L3v0pJvDq37PWJyiGR00iaQVL0v3xCwHekNz18f74StCVbM7Ayy4RH1mSSSMGXhThaWZKsZtzmKUMzRlHYErp5zR0IeupWWgr76kRmP6spybOBurkEKchVrjJdtHNyM6R7bl1PlMcFfo2aIWRYnLnckxXSEld3PF7UvLgfAfIjfQBZRmwgaSb0oS21AzHm1NVh27YRHg8qctv+7VbMTF+seC979trMco0vJ1BQbpmfjujm3o7Gd1Gu5XRtfPtDOMMQMcwbjSUD87I3D2My6rkXDP2A3NZ5eKGV+UcldlTGSz9tPqZf8pPS5izDFZ6Wn3wZUzjikdnAZ2Sp9Xr/1jHYvaqkG6pR3jo7ODcWpuVJ3OnVWC+eb09qDivt0YTUmuL4zdnZEjMzcX12FxcjyleMwVs1rODwfrxvtG4cu5yUlhmWmlM3KM8pPqSenU7Q7PDKA95SqsPczoK2VJClt3M1sJd0rVkZMcwtczZ0oIrzIDdl4E8eTb4sTKj97rPj5qb4ruZ5lV4V3InWwpvoIwNZcGB3aPqvaRHC4XSxb1LV85vZXhXGQDQjaSYu/uHGX54RHCXeEosLTt1WraRFuiFmgRNfhqFWDEtzPrVF+m3Mx1QM6pu4uVGGhZzkR4oeC+ja5GbWBQv0m9mFNsuE5bY94hY6grUZupJNfkwotjWjcSM6JLpl5StX4D53cp63VROgDaoOzWBvzYz6l2X65mVI/zFLAi2EadEtZH1ZDofet2K/r2e9ST/vJz15Kz58Ap2+0Z9BDczKHc1kxEUWsvo7jAN9lb/pzDYxQwumpj7xjO0BGNeLlP+xsSsxaViCkP9+fyYFzrejEHJKk8RbdvY4BXbIMjQbkl9MM82E4zhAl00hJ1eCncSInCNVmYk5xaDl1K6J7ye0qp6Ef6OLgZrKS3H51Oarkvw98xSuAp/O4vBBfhbLAYrFOckvJ7IZD701GkTDIJ2z40EOCCHfcDIEMAhq6txT5bVda/1jRBzT/7PcU8Kc5X5X8VE8BX4mz7uvRrT3eHLMTW2HhuR+XVXZMJKetj7BoevQaDkhGZBYZvy/e0XfZigCOP7JEwI1J5JAeW64oT3DyMZVf846sETvlB9eilcjYimCxHRtBIRTbswpVu+ldBbvokp8C19psbi+AYmTcdGpwA7NDgqBVA1Ut+T/bvyiOUCR2CJO/vT3ZOPuXvSd/jJzTo/4S3KG/KQoE+Ik25lahz+vpfp5CnfH7LwOuiEJm2OSWsxaaVbvyVt05A2LY8wOJwGyo7YwKVY/zbzMurbzyC42826BZG3DzetfNSkRDEpkBupU/QOtsB8uJIrpONOBkp5hL4+Gl68w/Dkhl9Pj1KM4gWdCNRKs4x2+4FeQojMBXqJAXo7DtC7TUBvO8AR3gm6LQ1vglqgIARVAG8ClRHIA35ylZBdYa7l4Fz139/mkyOTq6ff5TuD9azRG4IF6/KdAWZucYCjoCc1ed8KKLIFXUwqtXrYTTR6y6ihsqw6OkjQplN+044Yda+kOEjGzRvLtCx6a1n0VjJ6S1jyCwckgEaAtQEup6s4mSyrHDBIYoFT5T3JsXzo9ROoSdRfC8ptIYxTdh82qgKKXgWjKHMrLrRcAGiFt5oyg5ww7n4+FCul5HtkUM64haca7VBGOuK2yJBNCAc5znEbmAefDYkHk7ePYIYNoi/pMtsewJ6fKKN7Yc+lMNPjgJNMg5M3h4GTa7yhr2JRBCdXsRxH+WEWc60GTt506iFslQ1sPtWBbQ27KwayO2r8MW485Ws50fFgg9fUtYwCUL1J1OKi03AzpsUoiCUCCxKWO8YugmpgNqh7EVUwdSiqrjs85npgRNVbgSOqzoYU/yZy5JMQRDatoA1WdK5lKkc25+zDd3gf3wj6skAFKjOBmFov+mcjdbISaJIk8CBjEzsEe0wdKheD92ANJrwWcZoApFCM5gRWv0zpLk5OMXYBbhg8otcbGxkwcsi7TuSQGwloC2R4acqTL6uMtP4NZ6A2+plxSgF3XGacGmZ81WHG14gZXyFmfDXoTpLWPVMFqoMRmAJH644oAlMwQOueYFV7rk/Vbn14VbtTjFlmHdVV7U7REXKS+nU56MlJHpFXApJll4MhqnaHVe3RqqM6xSjGz3HKr9sR7WDXR7HrXzHMGstMWmY9eY+qNpTfq2pH55qpH4Z7lW30eSW1+rjnUSbsJ9HndYBaTaFxULvuU6vr9ef1+lGNrte+V43W/q53VaPjvVp0B6QumhjuWYee3qv9pqiR13XoP7pow8XpWoK9mnhW08RRfU7vTX3Ge6iorAYHVZ9HDvghCGE1JctlNQM68QhG97D4e/L+deLJ+9eJk2E6cWLpcnTilqsTtwbqxHNGJ54brhOfsjrxKasTz91VJz7FOvGpg+nEcU355UWE6YYGKb9oMNnZo/GSDny5Twfu13dRzwU0gsJidDG4yBrtKmu6qMFOswYrFoM7CU3CbsL6aVLXT+mQBmNAufopPEb99OTLXQ2Pgo9KRS0HqKgg5x1aQPRrYQ+Pa8I+YGG/xjKMo91Zcf9CMFwzBYFCu65PTjuyu2gIjjyVuit0kIo4YTfgxFAVcfI+NdeGVg+nWT0sjOYa7rehD0jUz/ouVcFBFVdfTRWZuTk0WLWmKXYk4nMsUS/1wSboyGlGJ6dfVpk8eTb6ayTmiGmtIv03Gj3HnCFOeH8K6+nPUhcbNheDCw3aBSsNwoh3Ulo2u2zP2cEYs74NVrtpzRnf9E1+pJ0UVkEl6IiEQhxW0q4himimW1ZAz7hUQMCMVND+pFTQ/JhU0HpLKmi8IdXZsaXQw9MHboPWGeVYxHjJMKr+vogxY8SYMmLs9CFGqEK7n84sn8dTT322l9gLVMl+YNIiSAdXDgSTDStvBKWUTckqjC4i99aTmX7sW/lKUHc6y0D+JHWnQNJb2ENRc7Adpy6ao8qPqJMUurCfvWGc6CYXyTSbE7QeSqmALTcodrRZKtVYD6PL0xlfZmJHU5w8OubDrX3ddyN5OpcdYGBpiehEphxX2TdHdRu+jauM+UwjzGcaYT7TGfeufFTLa4qZj7nqN8zZWMbbLzqvyqF35V0k3iQk3uTtlBkknhZtjcTTKiy0CQQBNXowzRD9V/yenOEN+hpbla70HXo1NRJPqaFyBEOhI8u47JR3MpVS90awezZTKZbhhndSKEhI/E5KSHw3pTm+ndKc76SaywqsTZtNAvL1k1kVn2tGPsdVnve8s7d//2tf/aOv/ss3bnk/VvlPqVRfjW9Wv79qbrSndDU+NVgba6Fb8WJgLXwvXtRq4bjK2gSTaVydalwd7YHVGG66UDGoExpS76S96lcBsDQIDO+kFlLfSRH5tnhQYPvspgyGYUnJJHpaJjHXwsQ9auJG1mvp2NLjVKFgptCy7O1mQsaarYSsMajkApZBjFRd8kEuAF6LHTOP4TjAesnkzjimw2YeYDPdhHDPsEDQfbt+qg/UxAxqljHOA/BBI0LvpDURejt1jriAUbrAfP8ihP9zYRaoFvh2KUbVeygmaVQNgoca3m0QFwYMNEMI/kaDJH7DQfDvNlwE/16jH8ELBLMa4/KsLslxus6eW5zLy2aJTE2X0EcTZ2gKloZj1EmM4D7JRp2YcV7KOK/DOG/dEdjrVmB/pXanRxF6qy77fP7A7FSqCiOTErZbhgFXgDBLqarIhupHPq0BKH3ZrI94/5iXdo7Kqj767og/5o64i/zea9RmmyfAKkz4CW2zzQYhv3cbKmf9YchCOCBRhPw0VcEBqXIx33sN2LtI2jiThkh5zeG9LzDvXvP3mMpS8ujJD4gQmswM0gEIYQpE/ri9LZ5osJNbsDPUcjY10HIWs1AXIMynSJiLvrUip4xMb/VgCeuwtpzSPOLbNnVpe4mWL/3jOZ8NSjKltIiY0SHUwdynWn9PUjB3oX1y+O1vUiz5PwtpwFA3nQ9XItYRH/b+NDyBXV3w7lCSa8eLRx3iBB0xR9Id4wi7s5WnjlSeOlp56ljlqQcqTz1YeapReeqhylMLZz1VVZ565Kyn/spZT/3Vs55aPuupJ4561aWWTg613ezJqe5I6+8FnBtqu9ktODnUgnerqQR/NMLZNvk9JZb79yXovMGC95/R9Q1ztf5u84S/UXJpTJW006QUQLebKpaHZPCwv1HCLB1y83QcMnk6Dpk8HYdMno5DsoAJPXS2vTdPxwAHJ/RYapaFyLNGyim5m0DwbkZ30Sg71W5Ww2kjnJHyg6yO00Y4gyOWpTxYtzNMeQkaHXQw62a8cuDldmYwmsHVwYL3fqYEpauJEZg9bYjdNzDvCGzhBGGYoKByNijACHCejMjbynoy43xH34KmggVvK9OXq0Q944WAwpzxAi29lJAuwSwgmORv06lu047TCOeihsffzDQqG4EnTMcVAQUp0eU1QdmvrgpVwt/XBWXNuiK0fTTGuOQ6ZpGvhBylw6yyeuHLzmmVoMMsfI2Own2v0aZjIwzFNGJCIzQc6FSK893ERplLKMocXmamrLLNnq52iRcuxpY//XLJPdOvH5XBfHhVqJO2N5wEjLpY7TaZywTV7SYtbErxTMOj0xTagQiqi3lPBtU1Uctd+7pYCi7klKVqJYeimBNzJacmcaqggWA+uJAvYVanO/BPqI0FSTqsWco9doMnWucdv1HfFKOAf0v6Scv7naxb4tWYwPMiT8jSXI35r3jPBLwYSnMV5hSmiLuOTfGt7GDBu85NyVPqJKzkYMF7K+uOdku6DsNPS7oOw//SqyzryVNOpvGrGd/KHsXFOR9eybqn5ai9FnPK3MoeLSin5+uCL2CnrOWM6kkVeycwlaOYyxATh/162ZMnzx5ffbkLqKiLHCo421oKge/Jky9308XgeknpvL6Bj0A97caPe2+Xhp1+XbNTvQCAdRIvRVk3AtTsNNUpZqWFDKqNstf6aZ5QTOq1WfY0XMPWfhm+ellzzQDE20uFDICdrhdE4xp8cpn5INR9OTOJ/17RXuzI8g7JoForDEabEMx/5SHCaPi29dPFISEPEUY7RBjNfKYxmv5ynOaPr+/jOG84fOZrzLY2MkYgCXOlgBkx7POg+uMmwFHCHzQ7CfV2dDG405SBLBeD3SamUQPc8YdNSgrepKIaS4zQJJPTBFYDWKIQ8pAcwb4QhnD6IkcYQ6CEOkWPi54sAEOgeFmviZf1rBZORYuXr1jxUjjiZc0RLy/iQFSXSLysZfWgpsGCd8mKmATPAKnq50AsCQpMg/yiis6rzHhPIG/Y4z1BacBHSf6M7pE/CXRNUOp98p6w8icxQU2DajXjWIfBgvdsRjm0VzNtBtCNsBkgoYbKouqoBDTaoFpxyq/YkaPuFdi9Z4zAwTKFFTiFFTgxC5xR5sYpM7xEh4SH2mxm5UTGTmbl3/v3/+aryZMosvU7k1lZv+vLrBzT4AiZnO8K6zchyG8CTxpIsrzzM5xXOV8uS6CfVreAToKUKZeRH4OU4U8fdUjHakg4ULLZ11GmVlfpUS5kIHNmMMCfcr1BMNoc7wpgSmdHmE/loFDHzKGC+XC32T25FN4YwKEK8pu4G4cShkMVwsyLI3KSe5J0hZF0CbtN3E3SwY5fDHaaVtAOaj7TjXkyo3zAhhC38cfcxiMUGKs5MOHjwYVc4b8v5ixJrgp68bqgF9eEoASLIEQK+gmkC5fIYVw8drh4zAwnAFF0uaApRoZeMkMfYYa+07AMfadhGPp3Gt91ho4DQUtyNVc5D1CJMrRht/QHDWIJu/UUyJwGhpi6qDF1wSKMmfqoZuowejKQwjD3EpRHdLkgs/KBmb1gkOcy/eKATB+oK7CX2w2X6W83BjL99xsDmf5WwzL9mw2U8ZsNZPpbje5R8s5oWba/2TBsv8MVf7OhhCyA5U9blt+GeuinJB6hJmVQ/TvRUxNU276GYTFIIkw7LhodQGUImchFY9px0RgV8ih17kajJ4/y9L/TINF+o6ElAjUirIuGQInQRhcNTJ993Sl/vVFz0SjxiwXvrYZ10WibhmHrH92rgjDqo0TpV0S3o0OTQW39YclGq+hcM/RCPxRSWPaPGYlHSWP6FecOgk/AE7/83f/nX/5C+iS6ZoySa8Zo3TXDrTup101hyGo1Yxiyer3sljFKEUx0GLJpmhQhR893y7pbBm22Et0ymkJmxi0jpbARA8UOZaW0YqdhxY0ZSh2VjCr4FX0FoK4djXJUsth++eaXa02N9km4wpFsWqsCCSeYGSTMDIrF4OIIpc9fHSFmcQH+NhaDlRESarjhN0vgsysj2vyc1FC8sCheChaIp0gUMnRPSbICto9ZjDZJjA6Ulek9yMqO0JIMFqsVFlpKIbLEEWjuVUuaILXE3WrIhdkU9614Hq0rno0DiWOBki7Ho8aIYRDP/BKiMCeWmKXQ2Z64/LZT4gOVp+aQxaY1XjBKscQ6VkN9P+0mqKGGntdANaKuoXZglyGvSPo01C1symqoW6mjoebIcr6Vdke7idVQMROj0VBzy/3Suoa6mRoNNUIN9UY6XEPFXOQwWr+ir2zkWmcl1DjHJqH9dNZROXee5qGjYRFe5K3DUQtEEgtCxF5V8hQjkJQRSMwIpMkI5HpqEcj11CCQt9J9EMjUMARy+MAIZLK+tvtXd9uivfZQtHfUoD1hTJu8ny7mtf2ESx1HDFFPg1FPxqgnpYlzyRlonyQS57QJZsMRdBsWvH2tUf0WY4Y54AK8sK7i14QZrjVIml1toC04pqz8l2BeoqVwFeblSoPiRlS+mqsiNQPFrpAUzuD3aw01SmbJhzDVc6QWQOUKtagCKT1HUGCOc2Y/xOLeUw9R3uw5QPxHiLzL3B6aFhrWn7SK6LNgwXulYYwwFwti8KuFiuHtaC1Z9hyxrnXdBY9AxLoFA3N4Skw78ysWY5nHTNQa1sDKNY5ZdYlw1loDcxdXgXoQFWtLcYezYY8WMSnXDZ1ufIbfdIwV92mTXrzvFsKMRk3AcuZwy8ZVWMSiavE7f4oSTgboOyO0Bg2NgQZt8FKsNegnyqBqsf7sTVUdoR6Uc2qUsqMCbxitIvUgbesVp8oVO2oPYrdSUqoNhHrQZGqlbSEYQl3M1Swv9Ble6KO8X2JtxYWysFwInOLVSTlbheeaia/Dzs/Me97Z//v/euOXXv7Xm6/dpnPxWJ+uz9g4q9Po1aBrsfXoqPOjA+vh8/XRWj0cV2CUAdIMzYCwKUdruzIGFX6OhrlpA7hCv5rdGcIuALDXn+GjdhqbnMdG8NjM8NggpvGF7KDog4ImLBcVfIALHuOCHTuooG43l2GY5QOLwQZAn2OLwTVBvPyqIP77OkZEGpUzrW8HgLsRB20wTsKPZ/jjUfiY1BWaWY0D7BxK2eYrShIYZdtcUSI+uZlTvuLgeLDJJDaEnJSSC01CIWnvNTGBwLc6ZAMB2OfEEpXHyiaG9SWRxG95bJeQU0CfN7jP17h7V7l7r+PcNpnbHmEARlwV4QRCplFWARJWAXIpYFOimjhaNb6kYnksOkOBJ+SoEjJRnaIlULkkS9LFQhbEpVcL0GafYG61AH8vFaA7LsiimvxCr5vAXI3JBMhuyQSoLmQCRDdkAjRHMoEZgcEpKr/XLYhVV7upZZkfpED0greLOXAS5Jy+mitG6nN3X7P3mDt78Bz+fVOvmWA+eC9fCu3iKjJBH9AS38rVOPx9L1dNNLJ/uKVUIya4KzECVaxcU/QAU3SMKUIUvZNabvedlBjoTkr2BjyLjY0bDYkiXBuFWRusaBRCYBpKHKHRx72rQk7IUWNPm2USZ3hRPoiLMcD1dMJ7gyiVnWV5TJ9yj/ICG1+WzWU5Sm5xTbJVQNNdu9w2BLGBa5aeOVbfZFw1njpPn60WakYWwNtmQFRLYQKHCB04RFQteNQdxatfRc8+n+yRyeBct8CAIrjKzbaYI9jdUYWFMm86mwstgUhgc49eXaAsGAnPyBFD0IhueIQIgkcOOSNAzohLDnqnxBRsBsgoMC9ILpuqkOjsR+CssCY2B6PFtL3mNOA92n/ckFqo9bWUjxt4idC1QFWidSVktrnTlOmyallNW8YU3ibGgKRayaFAmBSYlIxZZc2YVdZPKATrrx02ZpVszAJFyRcf2TjygajMlmW6LFvsXpF+j61kuJCupq6V7Go60Er2RjrQSnYltVay13HSqssporcraT2bEGDOdODRyCupPhoZtXay5l0MYcmgo/lR52ikbY9G0ENy1DkaaXEan6BaTzknA4DUlOyg62n9aKS0RyOl8ZBMiO2vOeXX0r6jkRHs3gupPRoZMQ3D7s2Hn8UXdct4gbUFZ2TBw8caQHyumXkmdj5sk/e+zD6MnPYn0TCutEH1p+kUJdBgS1fE+YP8AHjQ3ooYxxW1ivh0v2AcN9p/5GL8JN0jlULIaQRvsWvj4hZrRyuOjaszyMYFC0um0dMyjbkWE7+fakn7amnZWjKqRRuuOrzxW2yoyhxD1ckBhqoYmIVzrGNM5JLPamTC9qiSj3UEZ6n7xjDjVHwPxqm2kPEy8oV97Et0vrzTpAtMCftJHtAkld//CVFePyE6mEmKDl8EmkL0yZzJLJiRf2RsrSS8XNA/kqwksbWSpI6VJN1zVCPYUJKwoaRkQ8klx1ByyRpKntvPUHJ4mKFk8sCGkon6iPePedNOZ3OooSSvH4vd1VCSaENJh1WdaVZ1YgKQwxbA/RAT3IUYPfcAyEasCafVb8KBalYdhvssM+zVdO/BFUHEhAFATLQNPcna457Qf5IFlIGgzjRwHGFZPb0sYxuuLv4ey2+0L6/U5PfKYPn9zGD5vZtY+X0nQfayk+BE7Sb6DnKnClRmpfhOYuwwWoJ/JxkgwSeAVYmePiS7y93ju8jzrBjT8rykg61RJ1CEvnsc4OW/SV4e7ye0PLaTujzfEyhiFANFgJZebTnlt5JaoAiBXyx430psoIhR0zDsl0krz0uW5wlLqnHeRQXtonGA+Vie8+EZmISp/EpPJwUMwzDAcycjjm3++6QWaovz3yfVn8HD9t3y3w9qZbzeSoGPPug/8Bqvt2Ay4CcmvqOLA0qNA8yBlwUCGP0jNxmd4q4YCgayPjHetGLcnO8LeeplEA+prYUprdUSDjw2044bwGRkYzF4foT8My6NkAzFs6wmn2UVDBEEQYQ90CAFPYflPECDuar1pW5MrOY0g4M2n1vNMEgoPqJDq7G7yHdCNjtNAgJs2zEBwrRc3hC9RwPvlC0N48RBWtmZEispDtqaEGaT3DeqmKyjiuyeUUXC0IGXxVJRwpqp/CdKu4X/PpEGa6g1H3rd02cn/xGd5HRPnj2+euFlNcd32try5Mtq5qyvTpFFl0gJrwqXFGcgnWHL+IpfH5JpaCSTWiQz5zqdmCWEMKbNMGaGYUzBMGYzsTBmM+Fg3MGC981kHxwzOQzHTOgDLxOjLLknJxRn1vvnfcKuk4mhYGLy3pCNmXKDcJp9DjAMBr5PZDX6T6imXXhzw5E/77D8upHU4Q2ay5ZVh6xMovXtQKZk+Eh1JpZYpq7BYyDmKfsO7LM+zIMnkhzTlrBOjlin833COqiXXE9crHM9GYh13koGYp0NB+u8SVjnKmGdjWFY5+perPPGDwzWueKsldd4rVy5B6xz2Sl/eTDWeeW7j3WERSH3inR+4cKGV40cAOn0tXFQnFOr/wca5zClfx5wjvgY53zPcA4vi79oOEcwzll3cM66g3O+sh/O2c+19r5xztjHOOfecM6aI3teYNm19jHOAZyD2/1SDedcGoxznhuMc1YdnHORcM4K4ZzVpDvedyazkgw8k3lmEMrJv8tnMuNsk4p7clyfucfsmx4f/Exmxym/Ew88k/lOXDuTGbe4ZvzDnMngQUq3gJdV8UR0pgjiIhLeXc5l/tcLbE6pn8tQZU0MAKIrC6Gyfc9m3Mp+4M5mmLgfpLOZ/M/n2cz4/aOL8Y/qbIZn87t8NpOzsN+OrbDfjs3ZzPvxPrL+0DBZP37vkn18oAjN7XTmQ0Xo+HfhbGbQArgfYj7Ks5kth/F+ixn3VvyX9WwGN9Zm7MrxzXigHP9mPFCO34itHH83RvZyPcaJuhHvuXZ6PR4ox9+Kv3/XTjdie8fsa7wcNuKDXzu96pS/2i/HyV35jfi7c+20gddO5z3v7B/8v8/+0v/x9m/929/1fsy9e9rAu6d7PrjfC6j/8QL5Vh7gAip/+t25gJp9fAH1L84F1ExHFHAk52UrOV/ZT3K2h0nO1oEl58i+F1CvOJv7NWYOVwbIij+3F1BxDtdr7H99MPv/ymD2v+aw/xdjImgtVvMygBlZyUFLjHty3glvc8kKgdKNPRC7ytzzeU89YoXBogyqN0VPLRkrmTpe0/N0MJyE49Q8RNKgX7sbAXSordYYDGfUCYaTCznP2inTjA4cPPGrsQ6Gk9SD4ZROMBwKkWn4YklbecWpbiWuBcMR+hpFbIPhpIYO4AHze5U9bcTWwXBKfY1CFA0nGE4pR6smZXbYAYbc5Gg3JYkIfE3BcOqvObNDPMx8TOFvBIW/QS5TiSdMBByua4mNK3grSjxpIuBE5/UXjzKDQQbGKXI1Jw0Ng8ERGMSEbw5jwu/l1k983lw5QD4YOkz4vRoTvrmHCeOuXi108xpWrxY6811Q7UZ2XncjAg1oEIi6McX4kjStMqhydImPbKX/YPjlLqeNBe9iUfnnmnkQRnGSNrJcYOf+nejBy39eEL+5JtDceamgPl2ltxcLE1brnxYnvDeEe60iqJr2Vgf9LOxPYX/m9mdmfzbsz9T+TOzP2P6M7E+cASRvPrhY0GXDDfhn9XzRf/cjoH3AwctyDmCWcfCycbxuRjepJipPTfKdq1blKVl5yFxmKk9NVx7e53qAA549eNZTJznoWaPy1Cd1wLOjXnWlca4bHvNkiDc557tjrX9Aa7B7GEFneDzYwuh7MDfhgnczVQl/PNb6tcB5D3wirP67tNct4MNvY8jXUIYPe7+dnvAvpbb08WA7VRn8vZWqWB6W4cP+pfSEl8nDFUAADnB2GNg3uqcfxrBm9KvBwWsOg5oeVWJobDOZ4Cqy8cxyoA/01TEO3oRfhay3WhQ7BpspRB1WCwDzeAy4VIgq1RgIAehTjCMCKgUMRowJezgzY9Nl1vCxUTU4ylkIagamhEZdIKzWEkrgs+95JUwMJnnotonvt/doA81iVAdBa9NppdUGmoAjWtQT0GYw9Ue44L0DlIQL3g2jDVAjudYGmjJHbaBVdVQTMEeIqo8uf92OYxM72MIOvmUYPZbhhi+lnMInPB68mKo2/F1LgYDjwfOpSuHvpVRfkIF1E2N51gjMLLer+Fwz9TBrg49ZG7694p5UtjF+Z3ULHgp9UtnGZA591+LwuLJNx5Xt+nFlfyNpvRHKMVFrAkY8HdAAn1e26bJB2hd9TbY53po9r8xNnDlKHaQKOWEu+mFuBxxLTdCjzriVvgyrFyn6rORxLWCN6XC2clxNyhnVxPNfrod7oetJKUeEqafkeiZtPU0hZ215c9fPKR/a8g9w+VlbflrIUDYXg51UhnJyMbgFf+VisA1/48XgZiqL5XLMcJ2va66T0OFkeDy4yQvmFi+gbVhQcXSGQ2k3ozNyEn+lVeNLakxOL5fjcrb17aAYh0W8k/ZoGQKLCfH6fDgfPJ8Cs2YSYOzv9mGKH4oDfiiby2WOZBXImWhDoNynoeOU5GH1UtIzA4j1cV3Bi8RD8Nim1VrELZRQUvKGsM2+mGCzRBTUZurJkeICs0DHNMDuncLKV2PQ8fFlnEJ+yysEb9hny7jI+A2vQbQvhmhoGDP2EOAEG6zmhAve1wg9hoNmqRLIcFOYJh+nCdnvqBj4caQ/LjHk6hjwGFNmhFn2YfnAYnBMHgbVWsrDcnYxmJGHQSeblIdh8Y3Jw7D2WvIwLL1CHqbo5odBu4iqvDhcn6L+SSr0lHBqKWe63Cl6zJ0i31koLyW1hcIzxvOTCPqENvF6oiZwbSWYx+b7Rhbm9U41aSWTNsOkjVP93yfSYN1mmrQHmLRpJm0WarnqyK03WO5djetR9NDdZFlNymy5O4Yn5lO4+uSsTmyeEam/k9r4ekRRQuCnzVwtZ67WxI0fcpy991NMbD4Gu08fdc7i6p5Z5pTuTkLyiWWZLcsxjP1v8plja8cDr8uMDYeHgsCE1S362WYOmeio6KmQhwHyRwSxcgOx2gZijVWNp2R6fjHwKkHs6Yqzm2GwrsS1wPNjDqJ5zQKntA84XXaA06s47KiMh8eDy3G3Q8BJOhgudNRziqoMj74Sq1TmAJnaLHWi8/rW1EDQpJXllPHMQ5RCi0BT2wng37EB/DHKa9sJ4D8qZId6sRb3ZIcXzwtAS7jgrRllWTdCynLVwoaemKYUAG5c+hHcIU5dl+K9wfzDBe+5uBbMn4kAYdhhAHWLAdQ2y7+bjK+3WAD7jBWCPbgpisIg8qM6bgoxM0xcx00wNSmBqZ8D+ZDpzNXpEDAVUiqACKfNtWbvaTurt13go1rLGC633i4GTR3QKieyTglhZYyw2pwpQOV9WkIqc5PaOtYxDKZVx3wwTgeuJORclGUG12610mxI1bG7blbNyabKNEra6kNZWw7KuuWgpJupmrP1ZUJOKiknukdsLTwetVpCW0RyLUdsxS3gLaa8i9V0+ch+/CCXn7FVFkImZYa3b1UiOyqVcyqXmWrLUsXFtBiyGONibPir0eGvRoa+knK5bMojgJ6awuwGjZ62TMB4FCumSwY93UyXgudTK6M6hJ4usSpbiiFqCVI7A8CtNoJLRFY3pnEZQPNWqlAsYUq6DnDzslGfRYwr5OAwA7OSGgAzGCsWexGx7jSO0dgeOjomZUwWnZFz+EtGZ3AYBfB8IL5YLjsUIKMDLaz28f1Vi+GeJQwX7F9vJUgKyKL0i0PiLh9HCtF+SBSEgv6OGRj34GLwCKGyh+RhObMYHJeHZYuwnSRsd4Sw3QOE7TLCdnOE7UrCdh3CdiADq6w4AmpVXBTCyLF2fUn1L6pELyEPJHlteblL6jF3SfnDl1SmX5X8appfjQMn/N4RUnlqFoU9vn6AXze1xgazMWw38govGt9jeiewRXzd4teT/HqCavxuEPO8u9NdyswON6P4IL8qmKoZqHjFkfnPMH5AK3npF5EA5qAkqFYeb4/xZQSJKqPIMInJQIUo28k6gemLgQghmcAZCo+AgS+wrsllQJKSoeUEKVPLcnZZZiat1Kw+px93ACehUGoM9qP+QYY4gpJtAyVza60DKDnGUBIVw92ozlLIkDwQSn4QDYWSO5GFkrcjhJLbEULJnWgIlNyO9kDJ96PvL5TciuxS+FZES2Eruj8ouenUtRkNhJLfjL4rUDI818zCyIuiILpXMNmP4DSiBPgocxucarkchiX7Gz8gmhzQMNr+ZOY26k/9pUGTg9DgvaBJE6zrYzR5n2jSRPr6EGjSxAP7gUSTN/pY/43IoMl3or8IaLJRzHyMJj9Gk0OJ+Vn/o4eT1x25/xZjiOvRXwY4iQtkI9p7pLsRDTzS/Vo09Ej3qgMnr0V4pHuF4OTVaN8j3SvRniPd16J7PtI94KFuZ59D3VFztno5ssbtVyIybl+O7nKo28ZDXeRV60759ajvULdNJtjIHuq2P+ShbvujP9R97qt/9NWf/1/+4Lt3qFtr4EMd6jbv/1BXH8Z+2ENdfSg79FD39j/Z91BXHy7f7VC37D/UHf+ID3UP0aHuoYMe6jYPeqhb3MOhrqBDXfHRH+pm93CoW/Yf6vIc0qFuc+ihrhh6qIvHQGtR/6HumoVwL0T3fKjbOeChbts51G0Z/CYHHeo+MOhQt9x7qJsWE9/HQ909J6f2UDfcb+XcD1HBvR7pcuv/xGdGLvug5GwNxHDlkiq+lfZgQnQbs7Qo0+HnsubIGBt2RM9zLLouRQc9l13G3Ix/aQ5mcapWB8Cf1cHw59nh8GfFgT8XCP7shrhgVvaHP7vhHvjzQfj9hT87oV1D3wlpDe2EB4c/20757XAg/Hk//Bj+fAx/PoY/f9ngz1bYD3+2QgN/vhX+eYI/Ca2Tj+HPDxL82XREzzdZdG2GH8OfgfAnQYtyuBf+3AgHwp93wqHw53po4c/bIcKfDYI/18Nu6VzqZfNSaA4Scwf4fG0I8Pkwjvw57H0CPTmF57CgJwdeULL9KuzJUjs08sq52gd62hr05NQQhufI6fDwilP+ih0/6h4dHr5mQA+WKS3oKS3oiXmvtPtAT25AD4XnSHn4cEhjjUU4YHrbYhGOpZHrwBxti0mmVU6BOfgUTldjwqWnA6rhkBxprRoh2wOhS66hS7QHueQgFDM1S8jlHlDL9F60EOsYbPvgFd9+PqMN+rZSkORyhnf1OO/q6RremF0u20PwRrwv3ph1UcbMcjmKGx/wdrast/ZdgUG8XI4QOhk5KDoxXvHl/SOI8v694sUwjCBnKLDGfr7vl/fghMsWJ7zi4oTZGjqYgTrHtaRvC+cTjQlmNCbACDn8ZdNggiaJ/xkS/+Mk/qdr4n8WxH9MB3J2fO9L0pYf1qV9erj4HzTt90PUQcW/QPlsgElzkHxed7jkV5jLrod7kq8jm7m7GI55w7Z5w+Z7xbAaA4k7o2NojNWF7vL3WuTiMfFaWD/EXesTt+jwQRLxheEi95Ijcp/HoaxWSeReCrtzZHEo7P5ZDZ1IGr41aYCwRv+dzPrvdO5iaziz5/50nx9PZqNqYFsT2penXUXkT2Iia+D7Q0LOsR0l7Mk57dqFQGLBWwnr96j3+vNQLWN6CcU4kj7pB2G1G9g6d4PaWMfmqwXvg8BE3dBP56x/z9xw/57UyoIny8ZeY0R0rtkIrHC+B2vEcc+rdjb/4R8kT+5riOhr4ICWiHrlg40QGTvqyLZ2yzFeOTOEF9EnpzPUJyfp88lp8Zh1rBdLKuS0yuRstxjqkZP0eeRoX5ii5pEzgU4ct9Je9arOKxxWu2bnVrftfuatHfOMJiCMAtQC8ErQEAeY1tBX9lC4kOly2cL8W3TDkxaP4wuT3JMvzJzxhUGoIYY7LgghJ8wAvqpz/zuuMOkg6rdSXu4OsRd9+qI7AaMSHg/usAPCLjsg3Gadboe9JG6h8Wc+3ErVSRDgs8tlOthxJhrkOAMVOSTuMom3mcRbmsRygJNNsr+TTWqS7WXGTjBpTtrHqM3mctmU0ngv7QR1/rwTGOjxnYCdbPatl+HImGyWPoCQ/T+OVAIUhERBKOjviOtk8yPkOvMY2R4+Q042j9BZ/0PkQXPc3tFrkj1D1u7oTRKgmSBAc3IpaFQRsLiUeWAmjOgp6su2f+F2rKdGZ6inxpxxG0nu4m+T9LuMGHi+z1bUK5cu8H2vaMU4AjBYSb8/iVFKEEc48ub9gGTYdkD+JKEgmITcdVwLYuszkjjuIqmcQKk36XiGlB4uD3QHmV2WxbLrIjLjuIhYA8MgH5FkXx+R1PURIacn3hKwWNluF5hzC40lvhVYsOIAlc3AApX3AmS/NwIEKptBN63ZBtj8EBio0q48BINofghAOgFUmbVQpRn22wPQT7g7ToBknAHJrAEkbdCLcgYjyO1nDRhpA+9K2aIR9GSqnYKg5XDBux5oe4BuhO0BbWqobFQd1WavGqf8hgUd1KEGmTsM4MAyqQUbqQUbs7z0x63IwwXe1uE6c4rgUlAEl7acrVKQuOPVPwMRkHKIljZFcMHXT2Akz/prZM42qOYsDRHK/dyG+MopxFdMet1a0tO1LIEAxVA2ODIqh64Cb4+NYyV/6bi3YkgMLdIdt9bMCFzQBWkcFoOXEisgX0xIMV5LyN5IY+bI2PY9ydjUyNi2UXj2UY9J41hLrD9gWmc+bZ1UyjCf5lDmkxrm09bMR2v2usd9rRrmM8PMJ9P8CS/mOuvuDV63VwPWsHKenAAmPARFFtsYXwzWTf2gRz3uYXsUUe0X6SeoVP8yETLWIQk59CBpisZKQ4YAnM71xE7ni4ka5CJbGOl9i3G0w+XHyCpUqARjJre+HeBvnJ4rfTL6ipXRr7GMBiksM/ThQ2GcwaqNWcbGDPVYxs6Qgp+Rgh+Dgh8yNHkpIcLWEyLsxUSNyRhUQJeNpgPY6BgxUFTIL/fRezmo39lgHvdKMPS+xrrDRl8KgKZqjdjoetBNBt7XWAvq9zVSYJ6pVd761LmnbckXgm5cU+pQdAGQwfsXbSET1kKDnky0v0EAgnnBu0SyDm8btIRMSw8vdIyIqqNSTiueUZQ2VPJHQCFETuipDOtHG9eqU/WqlTYZDRmCwQXv2cCWbCq0OiWWjybMR7f0oTG2V2hYkfGCiwMGkN22tiHKtsxa/9Sn6K9tzg1Lb2J8I6R7GE2qkkrNsR3IplbwtBnX+v+erl3BAAU+7ZbNKPC90PCUxIYH6qMdqUgM38gtBXmxx1eekUkxrF7kz/UKdY516zab16HZ0MqYyOQuRKa63g7X26w8zcXuVre4S91FPzQzHsiVZ32Q7zq4i4MHt/KEGof/y+D/AIesOKt0hfDBJBovAhWbgKSxE2QO9gLHfvNliaCyXcyaZbvr2/o+8GlpLni7PrE3XVFXR6sDXQQqaSG/aBcSFRinjh3fZTTQEKgxvr3GNLPfjilneKuUvFUKrVASBKD9UMJOKUC5Q7YaCeZq0C+87VOquDgi5Kx6QDZVWXlythyZImULaiiwBtG3/FRaTAyMTWU3DNoihi3s0T2TSUnkZcxXPjgQV/WNZza8aqyuK7eNZWDvtZECYfuxmj577RnOvRXWDNtG+wWc2W8jWbLaSz/tyfBN2dizebTuMXyPp8Ory4bscbYkDxmRLSOt7YWf+2m0j0vpsCf3y6f27HlUx5zd8L5PImrbJ0RUTArZsjCt1QfTZCyon8+7g/AiD8IaqsofojieDmbFoQ9fyXgx9mEr0et6TOwPm+9WldAnoge4oedYAUsGfQ+Qki1UITM1J2dUS58NDrup59yx09bFOdtELuS0knLcvanHm3XYTbv2gEt7wDBMeWYYtfJxzTqpy09y+QkhHyhj2aHxKvmmXgtv7Wm74hDWI3CCZwshBrEkVJOi4a+Coa+kBDZ1xECbg1xes5WU0Rn5AOL/1rDLa205uVwWaLlgk5K/x/nHt84/vpZm+9Vsrq9Nlj4e3u/7caRSoCEgGgJBf5v919cmyYg2QUa09qDrazkZ0Vq162sdUhpKUhoeAKUhKFrajtaGTo8vKylb9uoQnvjyLFvaJ5ZLOtJ72PsXePvo59Kq9dR5tAzBXpPhfLidLoVrKSmHsFIWcStWjS8JWDDz4VqqTpJgpNDzJV1BAkIEZzxK5MmXVS74VlShrUtA3YRzxUjW3FNmHPcUeJo5V5QK7bQye4DLSMkADantGppQGG6aNYKuO/5ALemb/lAt6YZvtaR3fdSSrvuoJd3wtZb0gAskrvtDdKTaMdcwPektf189qWOw1YYjhL7GQmjDt3rSqNWT2sP0pPYePQndba86VV/19+hJBQ7ZG35dT8oNZWuJRX2syDtQG/XfjPVf1pNeTFhP2olJT/pne/QkeBPjGzLvxzUgrdg5YSdGPemY0YdcDakP8N2Ou4WjIRHVdFCxnnQnuM/FHLb3ekLo6ArHfHs1IWhwOQHRoP3m5sO1RJ0snPp+zR0FRBzQEUYcphMyZ8RxJyZmvRsTarodD63M1YwG1VnTjO7E6pNc77TWjHTdVJjq3ondujPb9KrPTc/qcZkSPA5HeByaPA4tWbdtTFo/gMFdyCwVi4O6kAthFKRxGVZXnOV5BZdnOYZmGv8gClLBCtIRs14vO/W9YhSky/spSIWjIM2hG4JTx3pdQZqi63mOgjS531YpJ3kcGzyOBe8QVpBoIzRgiwxUkI6QglSoGBSxcXVUTqtjlSfHy2KKQ2HGoCA1nK3kKEidYcF7zY4xKtKgFd7aM5WoImUyRo9ZUpHWkl716/9kw6vGSUWCzhmc8lJCoECvoLWkriJNkIoEdegjSUdFgseuijSObAWe1lWkQbSne3ZSn3rh7iLaQWqcHTAOtNlxKEKrrQzq9poxDhLE2cOWyul75kfBkG2OPd6zv2kBHnhjD2JaijiHsydeYAm1ptWkMSGPscNP4MljpF1Yny+tEtyOnTG6E9MY7eIIfojirCaNMxqq1pNeN4bqbsdQXUzV3Ym1bR2l4p243y2N278d3609QU6jtYX4KA942mfn/qS1cx/jgT5KJ3ukwXxCzqiG1mCc5V6rL7SVNLiST9gm2riLQjlbWq9YvSEfBYZInyW2RG7ri7m+FOEmwTwJe/JBYkT7bGjBmmUpBm30FxPK24SNug4XVyw5r1pyLjvkvJSoFG/VPyAbwAc+oWEDIOrnGxS9+BL8fXAxuAh/5xaD1QbdALkAfycWgxX4e3Ip3GUHsFfh343F4DL8/cRi8BL8/eRisA5/jy0GL8Lfo4vBGvw9shjcTp0bJi3rQLbNN07QkWx2MdjSu07rRjxpkYZCY0N4IShUrX/uk9PCq6hP3057MNKYugDd6F5PMeOJfXANH0zaB2/iA2kfvI0PjtsH7+KDR+yD9/DBY3bhx/jqJe7wOnf4Re7wGnf4ee7wJbTbMAxHc75V0p7z+TwVTTGtf+6jrgO7qaVy2aQcSqRcVe96uAGxy4aYw9XbXo3cw9WbXq1Dh6sfqfX4cPWZ2pAcrh6qjdnh6lhPOoN6mLs7Y305WWvLSWubJK1tdjFoVD7HENV9aRtFo6jraseiM/Iobp7Z5TJHifCw94fII/843qOrrSdL4W7MB3kJ6GrAdKyuthuTrnY7JuW9sLoaG91exC1CQsTuzcu8wF5KHHsN7eHL7ndX+LtXea/ChsPwHP4wVXDWOBrMWkeDFvwMzsiJZfnAMqh5NRbiIQsZpiCSKlkMc0W4m2KIGiSqh6wcIihdrSmHq37Ny167TD5rlcPcvaDpKIYXfBqfFV/9kAwrbzHYwAubXk/+EB+kVYEqXTD1UwhcPfj5d1WbLilMQLV01PMwiGy6r/Apsv6oR+/qRGm9FTLSIDPeXRPGW6EEyUveChld2Zww3golqJc/xFc2mXSg74t06PuTdV8Fc3eh5LsLo1VHlRjuqdp2Sv+EGdQSXRVGcVD/jobDWOKH7HnBD1lPBX2app1kO3VLUkflMsXywRnZcT0ksyo+18y0/2JQv7+ALpIZBYCru0iigbpd/TE8LHW69IxcJLO6i+TeFjp7fSQ7e30kO/Xa2Ucyo9sOHfaVmNC+Ehn7StiLmtYZogROM6PaxmUyO3AYs8SaE/XQZkJOq1TOdvMDBzGb46J5zfEyNn563FFdvNDFd5PBluBwJyFHl3XyDL/FVxHWyDP8pr298Dyf5x7kQxSW9TdUrkZBgdIqXS4LmVvrIq7GQT4gF4cZsy+wD8gKFkUVaIX9MHKHkAs1Qi469bSR6CYmCU3Mwa8eyyW+RRnZN0bZQdtgGdg3RuFBpY9G/XoNvYYbCYw6ej8gJbvO67lFEvApC/icBXybBXs4H+4kS+FldI9HoZ8t42C/nlgxbZEJutB30xPeV6Bbv5RQStNuwX73+Nmr7J7yYto9uUSOJMnjnnYkQQeSjBxKrG2ZpE8J0qfJ06QvpCx438ZDpYe930YHv/lwm02amPWmbUQLSKEm36lpPSXj86gUXEl6rUuMti5in15N+vqUnvA+AAj9J6BRuz25kCCWDO7E1AeU3W2U2tiHHSjVcGVPw0CijA0Vg+gLq1WkqgKNoin2/8ZTKV6LKg2CktCLC/VeaHgzKQ9XIzbR7GHoXEmOnQBykse9gmzZDXJridhjwtkm/b6SD9vjo4cHuivRNnmMt4nxldQb+2J9Y/OugdX2vL6vepGPEFb5mPFCqsZJiRi2e++RKOu/tT9RuC3wWCXtG5SnHfH8tEsNeattOaLyb9W8+iZlzJHGFry/Xf0WQ5C2fsoycxPLEwz5m6QO/bj6DBZHILKdyPBstBRuwba54fXkZwiQoEj/vDXusgvhX8NQmv4X8disqCL1CXgZ6osBtdR2/wnX6QNY/oEiFFWq2sBtPsMOj9wYVPujpqFJdOQT2Njn0IsQ5QibGbYS6Bq2A9VHZ9D/Ec0JZ84R6Wi+XPDO1McKv1nwKgPVzFOm5jEghobpR/A26CM4nY91j0KlAQVpe8SQeYRTeT2IsVpDrPxTeHvB/yLm93qQPzjCqMzYm+kuSn8CwJZGYFDXpMFfsaha/M6fkkeJ1OM9eZTHbZ46e1xDr8zm/QuqFtVeelNVB1SmSYWH+ZkThhYXo7T1yb4gtCl2TFnbZCo0FbAPjjIYu8hgbJWdqi+wx/SK2VZtLMuJ/xyYFJ5rJgCQQi8UssWJYH/hH//rzdd+2/sxC8Va1X9e5RCvFoq1qt9f1ZBqPyhWayMe0Ab659VboHu7tfoNGGu5qQdbNFtCh8OoGUVjgGiTNCf2IssxlfH7B7tHCU8Bqv/2qg1acZG9LFZ5YC+k6igPKDk+CtlQsex0W7Y806/LP8TlYy7f4vKE04Q8Amjgk4ogkDFMZGyYOOpeRcXtKB/iT2L+pMWfUMSJBvNGPWaajAUmI2UyjjAZkwh6ZCgXuNqUqz3imkRgAwHWSVE3pOVKC09z7pW0m9ES+5R8mGXWp4BxA/d2+fZOAsXI7JxAGUx4+6j8FBd6FAp9yhSisbiZVijij9QulnIXl4BNVr6KQdR2apdLeS6WKh/G7kGDmQF3req4FoS8bHfuq0OPuR3Szrx3Eh7UcD64nSyF26nuDjvz3mF+upuQFfF2oh4kO/D3lhxkkr4+3Upo0e7y4cbtRHWszP0eEqWntdBkLTBZn2SyjkDdLcs228SGW3TlIhGwHFQsH1zutgH2JlNoy5FHStgnKBx8NKOYC6UtG9fB0iGPmltN8jPWUaLtOkp0WBcuWBdu4o0fshzFIFfwF7qBTOK1IPKX6KhMFqoF8i+jdyhkZcGgI+mpB496lTzX/fQxD0e9qPxet7NcelUkH6wivLj6icp/qlvIjixk57+Y7hayqKL/crrbro59QXVku7r5naszn6uCp1QRnJGfiM7IT1fRYjAmPy0/UR37wmIwKT8tH8TpasF0fRrwyJiQn4b65KerVq/173356eNBpAr44wGve5CyPQMJeJUEVm1RPbOysvJTeHyHlwrkp2kdtJ4NPdH62dCDymXvmEcYQn0CRytRhZCfkEV17Au9bgcYkZQd4EMzsgNsaFJ2gOmNyQ7MU0t2YJqAtCag3A6iXNkBVok6IgxQQYCqmrTQ5jBBqUk62ECE46s249ObsJD1+LvTiPxUxo97sBzwQnKsLySjguAumpSNx/8/c+8aZddVJgbuxznnPs459556yCqrZHuf6wJXxRZWr4Fbwg+5dsGV7SGTFh5nlpvhh3sWaw1zy2TZjqeHrHFQGdtYENEjpk1H0KYRjTsSYIMb3LSYeJIymEYYE4sVdyOCOqPOcoI6ESDAHdTBHWZ9j73Pvo8qyQbjyGv51nnt/e3X937EHIVsZVrG8L8JwFsyNZfDpNDC13tmqmdi9rigGLG5nnltz0w434rXOi/7UyFwZ5iCnGbK9HytpDTJKEwY3pQFjWAtIU8guER2w8zY+l13pkCMYP2OJ7TXn0voDBxLPE/81Lhtvs4kAcdK3bs+JUcyzdAd3Mxr+EpKPR/lnp/intfYvR+494w494dqfXjDMfEB/KEMnjj54hImcLNM4C6GnhzHzny0GAyHyIKcvsZMAG1pDOb01fb3alWBeQKk6Vf/IAvaD3GSKhS4KWDiIxSDToe/GjsFb5mhDL9bx2X41VeKj9QIAFfau0azsqAEyMcAzDYhSLB6sFY2U5IGG6TyjqgorBcUbdYHITEoBWupdru2j9XhSFLR5JpN4fwqezjtd2IzzxIoFlyex78OuorJi/YpQZXcqbAzVS9ebfaLPanpGrWgD2Lt+S50GC9oJA8Kjslq02ynRrgJKvb7z1Nfc11QDWLAU49jgeHDad8B07mWigGfbcGIAsjOtKiU8IutPnbKFEmZLv71Qssoe1+7b7Z7wLlwOpXtfqFVNgDqs63yWqqsXtaoZD0Mq82F68vYKPtszrkIFMz4N3MqW38MfhtXiWfgN+2qo7lRy/VFvZYbZU+1+qYN1EPNq1MtFwCjrhTfb0HnP2y56u0L+kyr3An3TrdKGM5a3i/upnrJj2GlfF9Av2YS+KqzcSH9BhfST7mQfp0L6Z+KqkL6pyJfSP+vog0K6bfWK6Sfn3chfSwdfSaoh/2jiOb/TDRSLz/HAvJUYn/dsvmTXDY/4bL5+UjZ/HEbdJ3S+VW9/KCK/i9WOh9X7mQUls4/GY0tnf+XVZ5Jf5vL5x+PqvL5JyLYmPPqeFTOw1npqsegi2NR38yT1uCSIQFIccUAEppr3N23ojInv7eMq+a/oaqav2iUfSTrl3NVbf0F3gvRnaUxyj6c9csZo+zeZr+8fFmVyy6VlPvvHJkkzuM/k6PQlpKQnqLKLTIZCeK09DB04BIeT22jzLLLU36szDzN3FGeFhjx12HEirO8I012HXRcB1h/fqjhqTLL/g6WIw/aOkJttOHvL0W2c31euC4PZPAaFeM/kJFOfQIuHs6g/3l1MENeTM2rh7JO2nP7EgMiViUVpYfrFK+Jm0qRLFCdfIc9CL5sHpfzvmZnc6uRpa50dzoyDmDg8rLIFkYfFWWWXTZy22wFuS8ML3MSNcEMu+ED97P9IRispO1BSSJxlLhjDtKti1JTKxfMxWWKGTO4nQ/f72r9V+2oqp3XcjsLVTtpapogPbfK3MyiK6BDVtBUMthUVDV1BTe1uWoKK0RfburlHPlsUDufvZ9VAUE7cdXONm7n8qqdudQsL6u35rG57lDVzlP3s9850MSMMIprrwZSwGWYfXOq+uLP7me/iuDNetXzNPd8WdXzTGom8ykQeC7xx9R+537WRbjXOgXVI8CWgJHYyS1lZqaXX0ouGZemvDPdywQ1brMx960s56wscyvLzdlrU+79k/ez/mHcJzQsNGTjp9nc+k1nnXXAMSkNy37R75wrPR10OB2GejhziBxGDei9cIcwu2iw8WzrOp3Npv5co8qjWhdcs33Nvl+drhIj50gZtaAeyhbVfc3qdM8X3eo878q3DH+FoNzXDEDZ2yx3whRP4uEf6gKnnVd88VzTDuxpG1aMV24OTz+P8B4J4D6clUtunniXXMTjnuzldfMGMxfqbOZCjmtpUT0BoGVddQSDbaZ6+QXrgMx7fTGbSM11h6y83p0CnOtqpnfh/ccCFPxYQEazzanNfeIjtU38UdRJ7baVVnShEBK5il9bQYV148ZcAoUFsABhL8vyumVR7swupGuT2u0rjy7/XN5bLmno8jB2+TS+CC0f5m7NUrkz24K491PQ2fYbq3upfeNbqitHF6K+WVoWy83iX2lck2g3jGlBH4g611Xd3t1ZMte9LZdpml0wipIHtuv0mOchylnMCsZIE+u8yIdnEaNxkZyNfY1R4SJwgLO9PFvnNca8aAFt9vLmOq8xckBzaA320vjXPuxgS9nSOv41pkCYajbDeYENbrKygPk3F+GGH9zsFyOD1wYhphJw7N6ij3vZ39jf7ps3k4ixSCIGzM8b8M/VwihjF/VenrLT8DvdVafgd6arnoffy7rqJPxu66oT8DvXVcfh9/Kueg5+r+iqY23iWZ+B381ddRR+X9tVT7WJZ1+D34WuegJ+X9NVR9o8fPg1XfUY/O5c1Ifhd9eiPgi/IJXCb7OrDrRJFliF3zctauSRtzOPvLyoT8Ev2jbMpSBdo9tSi0+gk1gCXIfbrz2EV0C8Ke7OLklHBaYt1C0KR3FXoXC0nYQj6B6Fo7VAFKESNLmGv58ckUXWci+LvGZUFiFRCYgJyBwPNEmSvH9kGyLCmBnlglqIR0KsDTxbV+1rDmDwTech7BAoZpBsDBOOBdeoMAuAQwMSEpKJHSGZkGNRwiiZmMD7+5rEge1tllvpPUqv8SpBhdLHBQ6y1zJkFzNkaL5wzTsyW7G7xiwwgTEA1kJlJHCMsKwG9l4JHx/OOk0kGweJB3gzYtustPD7WFbugpceych4GQAOVDIY0TjWRJRNRL+v2kTOYvc4kVfwRLZ4ImdR6NyAA8gmX03IG9g9Qr6NIa8z5GhmHITMkfRBPmB/wAfsD/mABAnyhwJR2lxaYvYUpsJ78UsSpfdFwAtiFQeAI+pk3OQqS4jw9z0gNRYgJ29fVuXSsirfNJx9aLywCr/bA5++VmoKtCnnVsM4twc+fXlqMoLvrO4bB8bfaBJYz+oRgXVXLtGrj4TWUVw2VeZZNrok+H1ZoGsaatbOBN2d0QNegAVQVLVN/EhXboBNDycKrCzlrjY7OQt+uKwpL+tltHD3NdHCahXC24b3LrNfXF0Ttl08q0krkbtMxZfZr7ons6gBUnusos/EFivMpcGXcAe+uTT4Ji1zcxlIzJeybXg7zXpa+qAZEKzv7BSUolhJoUXqBxTgndyx988je7+vuSF7f19zUZ1g9v44NoXs/XFsZ9cok5OaGfjsRBNO2QydsueDLvKuOpjBvngTSZSjzA8IPzxuZKWW4EW9zotfdC+m1QELifuuUY0KCFQfy2AHfDxz0tQ28VBWFuN2Fh3gglc+453QBpy+tCwAuJtmy2XzpmUBI7pptnyT6aFbWGF6y/N7D5WXmt6hcnuWVxNYoabjfjUurybt8tFJGwCpQlVZcQetaW/cKBFw7PaRDBHB/ia1hihrUaH6lJYDCNSC3t8se4zPlsIF/28P3pqD91qG903w2angzP8Vo5hTLh3vcHcFYwxV5tmoUmmDPRKPIiXFeGWUVsAfBWmqUY9dOFWvaXfVIxnJkof9wJBnrf/W1eIPs3QduX9BH85Ikf5wFkj8E6NDeFO5E+QkJ+u3R+EGmFuvJsmcylqOZE7zCdvEG2EK9cualb+ixMX4S15VLLORy6yWpmYOkOLlLh59zuRhBHiZk3dzE6+bvXKzSeF6gWzYPVTWlW1zETBieG/SmdFjWmmCf3NZ+EFZVWbBlsGFAmZ8m3igWa0SjJD0l7QxoIVQp8TCW2omkQCihrq4V6ZmU89c0jNTA0bUOkYlzI2Grc/2TO7vzuLdiZ5p9sxmf7fJgR6m1jNtf7fmbHRxz6T+LuVAo6PRTkdMAgNWgDYKVwmbLslGdVyH9oDjFd1NA3vAd6os0GlgCzimK1vAcxpVXEc14oFjutNwycbUNnG0yv2cunILapv4ui5TLrcQ+MQtkd2lkxP/ko9UVGgDMqGKCqnFGLKqokIb+KsGgbem+6bByOVJ6Eq5wg+wfGnlGiftVJnCxxywizExqa8UkBIreCRo7kg1T20ckMbWv+T5kzYGmRIcj6XwIfEnT6TlJPweSUkB/3haxmzxTF1UbZJFzjOOtputA6OSLwix/KP/+OHf+ac//Pbjz4ubcCncC8CLxiMvpHS04qGyCKF1xNRMykUSrMI6uHhOSQGGeu8zrb79CWtd2ASVgpRy3aGcR+ceo175SAoo3o1oV66qYQaWUrSbxbAL66mfIsfxVJPhFJpPpBWlUgvq8XRQgdnwCkzsEpcLOmBmSLAtNuCckB6N7Za1e7zYmLFfDVTUgJmcBB4xpz9Zy6c7OWr5lBCRAPbWafl+nc+N4g2Re63eTtLqYVeBVo+7MjvLa1mI+JTuTHZy0uvx3Zz0enzFO22/7pudgV7vgN5NPO0kbtAFvV93rjOTlX5vp7nubeSFMomzCStFebYxBB6O2KRb1HR0AWtmEjEJWhafzfvmWuCfOoktfqvTQKK5nJBmxVx7qFNjZUviLNXAdHVislMP26XT87NLZ17DUXN2aVT8VCqfJLBJE0wmZkN0jQ3RCRui9+pK+7NXe0P0+/UGhuh8PUN0dt6G6JTWj9W/OM8HA1zzCUZdY8oUEDIuU2eWTgbM0smgWTpns3RSmaPHm54re7OzQocm5/Q8Tc7ZVUIQ4lwdIDGreqzJ+Z6KxGQBiTmrKhLzosLlPqOQxJxVnc1VLh/FWbKJyExyoz8COS8DAgO06UjaL7dWVuRNy6pcPh/j8Djjr6ZVyKVtlJNIAabcwiCFMymSo0nM9EZDOaX6ZrPjdRXzumqc/Rc+pEZ8oNwkKUqOB20crzJ4TnJlQzcV3/GJfXEmNld0aHNFhxKmQzEj6JRx4CTIz00gw5U9ODZJcd+APRiuTTxsD550zOQwf4XcLpqG41aUxJHG7EiTmJivSM3OQ2jPHENLLEPFdW4GaYkdpCXke3GmZWbzAjvkIQcIPnlJdGWzpyvYfXZuuhKA0IaBzaJRAWnoZ963JuxmslygJSThBx99H5lIzGyOqplmD43E8Oj/fh/T3dkcJHBc353eNOVGFy6cBCYs2CVHB3cJSE42pz+ro/N11UmQeMVkokqGTFSTcJA3E47auSxKi7n+YVclnphdh8RsDbtGYoYo2mWeNteVFmX1beJJ6AxJGd9LiJTxldusqm+uC0jZEbUbdfEL+jHV2Vn1e3fnOrMTaBjQ1yFmheczpGotpmq5217p6FbKTetOLxTjUqakZijYiDHVVfvaZHRBY8aEFWZ2li0dDb54EC4yK0xztqv2w0WNL/a2x3hz1YiCBn5nSCPfTAYLuI0Gi+VDVsDuuWm2E7NjV/xLcuzKHQGteeIJRDOACOgoQATSL9xGIhozEY2ZiJ5UFRE9qSrl5V+qDajoxHpUFGW4hA0fcVftZRPKapOMUvc10b2qxDzc50lvWwOYYU+o2GUMkcPLx4JTRBnhyRb0LWV/IOCgDaDVP1UD31tRXoI7smKIH0/Ju5Dev18OPutcEn6vtrhA+cxce6icsrJsmkvKWhZTuYZLYDMTHgQEBK/uVN4Xkf4cxopWlE0zmwe2jc2hjpEx41aziW0bW229bzYNONA74O8gWHueuU+cu6OaV2vozekQpT6SLg6gxaRivTee/8PB/B8O5v9T5zn/jWr+l0bnf8fgo05jePqXcPonzNKhsrCynAXECVPfGJz6pYGpXxo/9cggL+i1lOw+R9JyGbk8HqFlx89PMFdwkNOle05mQDcROyoUE3+XXO25OJN4p8udbGBlFIY8RqNnip4vOKWWTLNnangjw8p+bb1k2uTLD+d0Xgkk7W1buFsWNUl8d6ZftoG7WulkucAYB1e45/w5y9T8gk6NuKQHVMhhHhgsseQ4zI+ogVJWoVPj/oDLfJC4zL3EZe5XnRlyZbw4dGLcW/GaTpnxflXWiNfMK+fFzSNOiKOZz8fznLXhqEDgOXPPc8IIcjNZ1rKLnCklxlsxVbVyj2bYRKL6ZobP0j2KRNpVz3vWgpxl0AhWtoq5shW2tBVpq6waCbI6IyjZrGc+q9zOODUzlSviDDOfD2fkN3owI+bzoaxkYycdv7RiPuGwxqZWvE9W+CfF6yHm07GIxHz+MS7Jn6S483J0mtomHk87k6245rnPJNuSmqKcC2Z9wHvvu8B8Nb3vW+LYK+diZyrvPXaHA+YNq1dfZGBIzaqtf/++AT+6xDkVOk9EbmumagukwtKYS8o89AT8K2hnarAdXX1UNyNOjnlqpsrXmIny4tCv78X3cbaFoJ2o+uhibuc1VdObgEuvGnj/A6MNxKy5BhHWbOqqh4HrubirDrLHCPJHdWaicmaRDHNHKTNVFxGDZGa66j74bXXVKnusoBi7mcTY5Yg9RkixgE4krFAY7zZC1atCt5Gc9+JktRfZfcR7+tXGvof7afhTnK+alWWaXbjuY3TqWOfRptT9OfLKxb18GlO1Vob+mdD9z0s1T6TD7n9sC3A2HTg/MyTVuBMz6TjkarCVlpJqve4c8Iabqbzh/Jk4FeCGU1UO0NxVvaS0tLnN6ZIwxV/JToxiRyHEpEhNPKQzS4D9Q/wRD4kZJ7G7Ssw4Kb2YcS3O0Tbxl9A4ixl4L3ZiBl4xWjomB8WM43JZ3JQjk3xMdnZWHVdyhjO/uCOAFs/B7UKnADjqqV7eGDxy6B3W6OW1wRONdUebPRSDA4SxCNzaLHI+IU5aJCZqjIfTXFc9l9MxGfB0YuUbHBuUFs7Kik0/Kys2/W/kBp5OW9bzdIIdD12gr2XcVUeYbUd7Uor2GGTTc1jR83RZ2jy41Yc3++bKzLV5rJmLtvqOYeKw7lanuF261eJbBfO3s8Q0/8LQ3C9fAjjo2VM4kDK+vZVBatIW+JVOkKuWQrfrfPsShqhBeuBfLUSybDm7XDVXm/jxBEM2hbaudTD6gYxUYQezTKVO7Jo01x5KyUNtptJ7oG72KKM6ZLfUNvF1SfzUUc5VCQwT8oUxhv1eTDYYMlWm0ZKZeVl8dgp8dop8dqNXYgS6MDPOZtoyzV7ZNjy4uV4eUapxrDw0WwlCO4kPKmup2cnj3HmojNPAEbuF9sipnrmYitOSOfMSNGemvcCYiaXPxfWmjXnJQIJo/qISxNbK8FugpbQ1ZCmtVXbOZAB5TPdB0mERIaa/vMUzdxZPVBGtyVBYWJNjhYUn5brCwhFZCQtPSD6XEkMgBCkmMOXwZQNiA9qQ5IjQ8EcyFBoebA6EORkOhrqIQxSjO8tLK0+vlxLUdH7SxCZi9MdJE/zoMpqBwzw8lMZ59x+W5ydNQEsUwxA0cmBYmtjipYmPDEoTl1Uy/2WVKjvm8z7J570WCvMZF8Rl55hJExcPyMpZpobXZjIQXtFrJpAm/gJV2f9fk6UJ8rQ/0exsaiX1UJy4MDWXlFWuEWfOnups8sLMAOPtIJReE00+so8jBrNHUicITJS5KTrNqpWPP8DZV0OlRdXKa6uvnZUZmA5vr33q3koacZ9HhpU5XXW8WTWV+KZQ1N6Iel6UDt9yywGoBVfdNLB1wLh1fA7H+CTr9k40zdbyYjPbaVUDDeOPxgz0imqgF3NnrUpOgQYef4Cr/gUN6MCkibqvOE+9zB7GKq1R05NVh25II9MyftjM7497yPz+6CPYvhf38inMz5VNpX67jzNjPL+eGSN0ALzMOwDipiaH7BPNYB2fbxIUJ5tljP7oMC1+Dl0sT6U5vQxDc+bVGkMfnMFaNUNkUo+WzJy5iJWKmHr5ojBCZ7Kr9vMGQCVvjZW8CSp3kXtcRTaIoMWSTEM2kMsqG4g/T/sD9LJ/nEDSGiOQfMgJJC0hirECSYtR0LBAshe7qwSSvaFAMkkKogGBZHJAIJn0mO2sGBRIVlEgacGf7x4vj/i9y1sdY14GDyrt9ixFUaIxeLTQD5PlkQA3oJhS9LxZjjEOiilTJI8E6GyR+OPH2310iXeLa59qD8Zj2QNt2K8nm+F+1cebixp1AIby+qG4j38+0TbKPoPfHMj6nYYPmIftcpgDVwbUDC1WM7yW1Qk5qxOarE54DasTUlYnbGKrOOkOaqQ7MNeiGuFMy6hljXqGxpAqYSgCZX1VwvQ6clrKctomltNqLKc5q45mOe1gIKcdDOS0T2wkp12wnpy2ieWz59mMcpJP2nE+eSea7pi1zltOG8JQwzjqUoeRhLmUmH6PrUIMtWOY7G6EoUjgfp5DSk42SQQ50SynOD3BrxIa75OJt1/LtycYIvI+HYAo9NcPRB1EZ2dEhbZu9x4od/h0folplbGB3htUxITRxin8jpjS2wgXvxNdXDcTWwoLDbI/kvaTom9yYk8TrFGkOJdgjmaI3ywTylu3DSRQG5UznM8P/Rs6NeIia5zPbxv73olyG+X0w7SsOWcLcD1F0PAt1McW+Ps3mAe+UnwHuavvEne1macNTZbHm1TuIxnI75dUa5wXex0ZqoXENPCqS3p0Uo+klDRms5ksW6ZWTqKjXQ2X7am0bDD1alG+GAbDNHd5vrFZ7KJNUc7wEjdTM2Oadua2ficFxmbapHCGCpPC0cpMSomBUiznalLKM61M08p+p0lLghkWc17vt5IVaDeXPHDp+zAtp193RLTrcBS11Eqq/L45NVhVgQCumSZyt2Wul0zuxbPcCWK5F8/yQDzLQTzLAdyVThPFM5wT74nKpHYS5sFt8KcU58fZDCJX2Rjc3s0yM62yzrM+bggGmm+8LDEygLMFOLLBSf1DeGowi46TcBU3f/XoYrZCYFfw7a2872eBnaxUECXWFtyI6yZ4ywTOyWXDmgpGJk5TcSMd9RtYT7Gp0lPgQDozwOG2MQRkXonOZpjosqWXTMuvRcvNesuvRStYixasRctshrXYjGsxUy0jKyvS8mLT6JVt0ouQtD/VK5um6MHJpFGmvTzCBESkwphiFcZJNoOeaI5TYbRZG9QMGdjVJjlpb0WFwsWDCgXMBzmgw3h5my/QYdR7zsBqJnqmCHUYhVOlTPVgu/7D0F/8F9Rs4GZcWgkUG0tj3ezsWC+7HZVG4xq0fm5H4+cO9LDD9HfKpXKBd7ZzLnq1Tfyac7CLA8e6DZUTe7xD3SQRkskRB+9LgB8mB+9JSjpfOXhfkk14H6H5ykFggXa4T3yasws5u9NdQm7keWGnyktQT2hN9XGV5fQSdKQrcKp8llP8YLwP3bAvtzNFciUgkIJi/J4tml4hM2mzlVZTUUZ4raUGkJmZ5pzz6HSVO8abE52iI29u/xxuZi7R6SQlOp0cTHQ6pot0sIsMbw10AJOdDjbPeU4n6bymQ77kZpK9x6uk87n3nL8kw3wmpMypMS0epwaJh9QgrUD9YSoXE9OM9phmPF4JEg/pBupVG1MsWTPP32KefyvLCHWWDaZYNsjYhQtlkoIv9rarnFzjcnGZlB2Zn82D/FA+HVfCfL1if+iU85t/c7zr1i5gxc7bdWsicL95YsD9hokXMv1nWpTmAHjT83kbHYZAfE8Ic7M33ahTZf4ynSoxHLFxXk6VOXsPYRziLImlZ1p9t1NRiG2SWAq3nbRqZvMmPKqh1ISPnMRqZnPMiz2azCxwGK+NJDFL2e0tYbc3xW5vRSWmFZ5vn3jFHcfD1Rhej03Vim4ay7zQauwIV0MGO2lfc2Bv8OLQUnBc9z4O9d7bJF4PY+f1Rpvk5QClzhMo9nA7l4dZ5jzMZioSMFP5l124oXtZ5tzLigGryrB72RsHH3WK8HO1xfEuGfAuWyv3sowiuSr3sp0D7mU7R9zLssHFqPNiTPFi4P6uV8NsEJmsD0YSAIYXZc3M5pJMJOcdS3AJe164mAJ2NCscN1XYor8+Q2XGmX8KjvszU70gGK6BwXATQ8FwvzI3M5iU/UV/TphoQR9NOtcuT9yUKxPZ5xJsPzbRvDqWUEBGZL+d8EmN4CD/GQaRpSa6UvxZQk8dtFtMZI8nCO21/lMCmBqMTbRNPJeUCXR8PCl3Uitlw0T2SNw3kT2ZVC7Ekf1czOkII9O4WjwamwhG8hj8JleJR+A37qrD8Hvtoj4YmwhVl1uAbdwDfe3lYlsRFjIiQ1FkD8b94m7Lo6MLUW6xUQrjKs0WmNGSQkPK5c0wdSXM6Bae0RJmFJN+ljCj8VUCbXFb4ISVcAy9yzF+1jDouNVx2Lek4hIlDKUwJRWXKGEgdVNiPBIBtupGAmc92iZWSV8m6Ooe2UmJ+zUcZtGk6leRPZrAhx+TMOlHsR7jLuT84DE0jYDya51W8TG5rqEtbAA6fSYpXQet4muqen59nlOIYS5NBJx7C45oVPHtogSEEAOdiEK+He+0CKAd0OoafnYN9rO9Dz3s6LS5se3e4oiKlIiKEqQUERPZUw1i2Mey61VtgrC+cMRqIGTUsXR8jasT6EwxRkGWG+sltgnOeSaOEVUoiEYqFDQdo97gKsbTdqpsZNMwJlN9XDHqDdThT+OQPKOOH3CXx+rw2VGc8RN1GO28Ol4vm/D7XJ0PbN2lDY+xMRd0qSghv0lsstKKpaZKAU373g+i882z2orrrbyLCgwoK03T/s29mG/qWT2L9QZcE1UjSimBgsxoI5IaiQcaSUln40I3E5pmrPFUo3QRzG1XOiIs0FygLSMjXhunwfX4Bh4y89qRPYFifrmVpwQ2xPE6F2aCrQyoxeTRHpPG3BIDONISfzbFLeW+ceQuI3sCC2ZO0cVxaJX+fC7pdxrAhgO+Ao4K8FLtKvEw/iIBOkR/1n+rk14t/hDx14ISnesYqTU4Dy9gND5lXw1O2a48BoT5zQT2ybOYpBbOyYI+lpTX8vmsMUr7fQm7Oes5pEw7hwA9BpcL6rk6oDZEoc8kwFROI29M+/Q8Psnaqd+ayBoNbMLIvtDo+6mjSaEW1OkGYbhTDfi0C9+daviiBb6z0w3sjECB1nw7DYQ4p7iovIdI/ShV8uRFxcRrWQ/Xk5/wxlk0ed5C0M11i3pvRLRjNaK1elHT2p2F3/Rq8bf4i5j759DLTN+jthlPWi5kxhjwGAbu12EUZzWsgpVlbFNSzrp72eTgxA1P3SY3UcxVBpMYTtyOcOJksGgvNAYWjeeRZg3YbHyFTsqZRlnA7+kGqVDGgpW+JLDeyGCl5wlWimDlDqyUwZpisOCBrVdYs0Eo1zF9NUYYCov4gLgRodXRrdK7hwhQjEj2HwUEKPYE6IyoKNBdSIFOCYT89k7Bzb3TkyDMcx5tE/8biJWU7XdDErQHPYzGpALIPAHCqlYNJEBNqyj3vyNAWMmqIDhPir5xAP0mEAFn8FCp74IpUJNVRZmdKps0O8eDr28ZqPmICuRom/gNR4Lwi6IiQUVFgjImQfkQCWo6EgSNVXH/TZPZBOP+K7pgxfVYU9I9xqj/ocdDMf8ZTU9qmnd2GhTlvyuXpmExNXEyHhOkLjV9AyuCNVITkJNxREBX5CQdR05oS1tRof3YpC8D7W+E6fVLwfRp6hcoQMTNl4SIC4+Im0hpzgsRNxERJ3kd+bFREF4K5igGMYc+X8xRP19yBQv3UnD90QCN3OCR/Y3DyD4eg+yjANm3hzFbjTEb0brgNL6VzjKbzJgXaiCu8aVmW+baQ2UDCyAkzE8DHVutm8i0uurFGiH6szUa4ws1GuOZGo3xr2t+jD+FDVSQjAHdFn6IE4yZInumhsNib2KWcNp9bgFkmZRkmesW1YwpAYJpUwIAINnUSLJJSJAC0RRa8a06lIxY6V8nfdNgIZ3Wr0GCHxXUiIDJei7xWy7Cyi5Xi28lcOol+aImIJ9v0Utmi5fPtzj5fAvI51tCx9MaIBZSBkZXQkMIhJNlUzrZVBUCAQJBFpfumaSMB5eDEvZkJieVA42mNjCaGo0m4dE0eTQNHk3NjSb3o8lfymisLLdQlaacLIVwA/1Os57Zwo6u2S9nsNTGMG6aV88lZYsF/YbDUQBJhGZCFK15t5CsO7CR7DTXJUHputF10jXOG0nhAOX+Zn9OmM68OqPKmuks6FOqs3N581vz2FwDMDfg3llVXms628QLqsxM50rx16qMTQfP89VONI9Ng3Ml7VyeeWuemI49Lvv0lnunM6+uMa+Dw96xO/plk2oG5Vwz6HVW9jsNqhnU5JpBLSvv6sSmAc2/ZbYTmxhrBqX2sLwNRdU/OrAvudHqu8pYLZkWrnIdzkxuWvBOV82Y3DSrqkE5Vw3KoUXcEsWXpcnnVVTGaPJGpRLpzwAIpENkY/JVgzC0LIaehqoG5VQ1qDOvlsrXwc+OckdqdpjXAShA1BJYrhhwZmFik8Fxjk0NFi8mlVIMa+jCNGPgjnEaeQKthDWiiXpdV8E01vvmvwN80wFGLoafui8dhLbbjv2pYnVTx4qrxV8rLOWnUyPgMjbCRjBYYWv0WpakRpjOgjqtFlVkBGyajn1BOSIlKDFPDA3ABgPcjHuCuqoymw1tnJQmpGFeh3bUWC+ZuOiZ2B6W/TKGQa10XkeIBE4I7BWfGAspOHR97U5VZwjgCtWfmRGYtcpkd3ZVBIvcwWwasnhKuQel5CP3OjhyNWj9lHKKGGFkF0e6iSYi65vX0V/1PqwO0tRzTwkOTJZCLxlR9IzAgYmBgcHGkTiijj0Y9edE+pVInIeDtrLRSuuiLE/zKBZ5rvNE5nmeNxsq53+1PDXSfu4Qaw96ectI+6S7zGvV6PRVImrDy9+ApwU8TaunkXv63UOYj+JZnTerp7F7+uNDbCiEIdufu6vw3Rq9668T/nZBiOXvPf2tn334g3/x+e+Lt+YNI+1vH1oTRkED9eqDhuts3+E1YRtDw6i7px8+zBk186R62nRPH4anBp7G1dPUPX3qsOs3XH739MAn14S9AJ7q6mnunt77SWcYVdXTlnv6qUPMdfdy3JJyXgj7Vyc+8rPketjI7v02T5KRRtljh3FB3hXOmhqaRTl0La4SUfpvpNJ75HsInao5QVp9OZD/pu7NTg3bAcFBkgGjgBfJYl10pDOSbkXOXKIVBP7S8Hy6E/XwuGgjiw9hTTogwfC30SgqUFmqdTGL8jgDw9bVdBkbrOi0tYunOMbTBadRkA1+TqSn6ji2cx0RGxuxoMWy+sed6JCJlttvm221hFQ6j+KkVm800RNWkG8GDGJe1fEgChoh3ZqmW/PKdFQvz4yw80iGNNovi34pNex3xz5Ixz5IYB+k0XDUNR51YefgJUxBX3xP4ZJNVx0V3Lepbm3lW9hjCXtqe9X3+h07txMZuJ1IOzMCzhX8nuJudlQ9v55vLa0U98r1IN3qwZr7ZYJlhsC6oup5PoS0B6iFQMWYU7dGYnCNfnGAeNnEIEQd2csbbkngT+kW9RlRQXwDf3I8uHcz33u9u0Vt8N3ngzdv5Xtngnu38b0Xg3vv5nv3yb5br3q/2NP227sHmJD2d3ujPd/LYyT2tLb0wky4CwF3neMFTYzA+l0wQvgV7yg06LOLn58V4cFrp+60019zcPOIGsGiiBwrt1xCktp54zKOddiVXa8Rvar10as+L/T6VYkTi+j1q4heI0KvEa03os9FxK5F37XIJIJYEg3MkEPGDSOWgX9dw4oRwqYBRsYHJyXbyRxaxmYRMzMjFGNvjlUawNGvBv35nYD+/M4rSH+eiM/BoMH+Ea2mVJopjaAV8vs94v3ujwBt5ZAC9MgP5SV8trVf7Pdn//9yf72UPvHu1uDuFQRJLWv4xhiTRA6TeOxMx3+YlBCSO5/hMuJZD+Ie8mPuu5cxOEBMG/aw3meK8NkvZyolbcZfTmMinPV2GrzUToNHA0/Sn0gxPqeMUVavtNr1mtKNqNEQjYZsNJIGoFSuUwPMuBUZ3uIKN8AJW5nV4RbXxgG222Kpbemq6gCvbXH6kdf/8dMf/MzvfvMvPv9jcVMeYZF6I105H2wQrezSlQJC30PMmIss8/ef/mNgmaWtZYjvOdgMfQ/rmUxtIy2lZ4cNsMfpw9Nqao8CdPSYdPjolBhE5YNuP++sQizmK6Q+71HWgv2ZCJC6gXfIIXaubJCrkAKGpEYOsZNWkbM++Q1hdMOFpUa1Ojoe7pdo1mhtGKXrAkT1cHQu/Na9kSPJZtC74T1YpR/msu6NHEm2OTU1j2hrPLCJUjtPNNSOUQ+akx3bwmiOx8028cMywhDWaXYYqoVkzwfmRpxbo1HF5E777g9K+IwQ/SOSPNMPS0LsD0tyTToonYK7XkYmxe/VkqmHrrGxra20Yim0Vjo1mnfYF376je98nuvzk9uGtt9/Lwa8sWtsDFtK2xfe6za3sArLDluNlYCDDTHYRX1MF9BWfbAD2J71webZNTYG4iRMnU0udVqs1MR3diJyjXWl/qfK2LTL1GQdTb6wB2Xf/vv3VtX9DspOBCQyMco+ItmgghHXPvr0YVnq1BRlZKbLOg4nd5610BrDPNCarJqocxNBB5HzrG3E3AYP0rVRc0Sb25jgNpq+jbSr9koq93SfpGi7VfiNuupucrB9N/lM3kWhb7eTj+ltMHEzRgGPbRTwwJ0ojBa8pk8Hu5PY6M5OHIaNRvjXm40CNmg7NIc3Xm8S4KcUnXlJUymMWtDbiZcyfYq68cwUnGx7VPS5LjBzW0sr/hqdFHfwc8x0guZS3OXki3hGILf2sKQKXVFX3UYuuRu/V4MJiJwWfmPBMwIGOHIBBgW5HaAfOx0752h5UAL3St64D8m+XyDvjfuwXFQPcvj7fvwUvXH343e7cqrEQnA+KLm+MS7OQ0E7mkfYpOympwSaD3nXLFpZRtkk2iGT6invS+dmoKonvP8xvNhxvrcFa/FCsFqsjUMeVdntIB9RZtzzWBK50XS13OQI06Il9xMXTtYbw8lSQccPDXbMc4czhZYOjuN5SJZtjCKV5KP5oCwz8rmsAPtlgCbPDzRMttBwkBUM2TRDlg9PmYes8bIga5wnZA2ADDZR6iBrMGQTDFkT8w0xjZJE7FxR9YjIGclRLBmtkmSkQsmocd67LQFBq55yOydhvMAPpVhS/ZxHNzCg5b1y0mS9TmTiXq62GF18T5lmrilP9k9E30Te6xbmJOJ85YQ+NaHPBNCGMhHav+7AkL8ITqJMTQO99M4JUQMgaiBEVakNoCM9M4npIAtnTNu4nQLaKbCdaWgnx4eZFdebCAOE2uiscc522tBOu8ohSVY3ilPFBVlQorOJ9gasVueCRX0LKek3kcx6AWntBct1j0kQ7P5DqvI9GrjEVc8lbg+lVhXEMxEb+GvIBnrRdb5iA68oI+IL1bya78TEBjbD6CFVamSRqBREWWpA2sQNHkdEV/LOX5crHOQHfZztMD+osynHD2qq31XxgxoTCxD0M30T8xG5kI7IzCA/WKv4wRrxgxpoSsUPakz2hIFnQWwD8YM02HZKcQ7MD+IHcRWSHDM/eBfxHbdTmO5tlBzinQ7BJdiQWkIvE5hHnIW6jVdaSkidmpo9cS8LI+w1qZ3rZS30mtTkeql5Hl0L6Jc62gL7XSYDLYRW7pCX046Xc6xcVkam4RgvoGTcwRtoaJGr0Uz4hCLEcOCs/gO2q30o16bRQ0aKiaH3rlH2Kdz+Z0X/DUrsJPoN3yIjcg1la7mtq3aYqJfnxBBgKgiad0fh3lnxA8+LQfymGPW9nUNZ8TvkBm4hIoI5HQiK5we/ejtBoLtqR5bhOCLf8z/GbmFeWgsaSxwv6NvLiWVJhVvGjmtB3z4wJs5JESHn5WYWU1IoM7God1AIwm6jTLGoYd/kTWhkN7r/7+h7FnAHsYDSCIN+/sK0F/WMEcAQTBNmL4yARupIbHCvdpGtpLm5hpiHHUgt4N413j6IAwlJRcGaJViQBi0IBjft6FeeVcngCg2tUeqJUUrk1C9WuEQ7giWSDPQ7PNDh0lCg9Tto891KqarejnHhqO/zQSE6DAph+gnniPRprGqjEQ5r3IjK0iNUvGGZpTqBU+vCABEWmMerBE4nkrjrPAm7FvhB0+iZJiUcI4OwWtA7yjbMOfPiuk6r5yYbY4UQz/+tlHoPKulQ11zvv1yDTjRkqsi8/nr6ZbdZDLU549s0L7vNrWGb6b5QAwQru9IqXNCnlvh/pVMrSFlT1Qd6a6630L0fPP0XP/vjR7/zxE9Q9kWdlnRVCVD2VaSa4QoGKPsi+oxGVTNfm5TTey4V9qAnucfEMM0dVlSRAxdR4Lfa74YU+KioSPDfJV3CDZgrTXTVrZTS4haKfOaEFtFg7HONK0daENKBHE8REgUeF7YPkOW2jcpNVpRaO+0AEMeIyG/EaS6m0CN2ilJcRID0ch877RI47PCes4mN6CW1TbwRtQ909PAE3lIm8CgeyGoRUSzids6XIehMbvcDidDdgwbza94X19/NPcOSj2VYmtCookaNB7OOoAIdj5lpiYlpqfGD+rr6qz1+oobqjNYCPmW60lshLqkFfMpUapqeT2l6PiWu+BQX911VRdFBRRRNcl9RfTzMm0wO8yaTvkuQS5rMmzzEYsUBSdzJg5LCxfbLKow7MjF+z2HcVpUxbpUJq1daSgpgG+aFsGe+/K2vJMhexBWD8sO9rNGcxZ3gPg4+V6lJhz9n7iQd+Jy5ExeEXRvRNLmokHiQhyuAJzJJh/Pg7Zd9+yf7qsxqD3EawwOsrnuQp2K/0x+lpo7EGD5keNyHk/xhiz+sVx/uyiOT9EquGPpuiry+i8jD7SyVG93LJzGcD9fLZAOyTq16kZgbWjjH3FRLpOw+OaylIIlS+bo1+CnFHktyGa6nZhqjSFGEnSaauy9oIoaOW6hz0RWPxjOwaFp5CwhgQtHF/JQnltICw4jfTSO+i0Z3O4vesJItZgZyr7GKfGqp22gX3kVS+e1lZrSPe6SSF+gNR8bYtNSmKOvEvVPFxnn1dtPg9DWibxqUvuYWyo16KzABm0wDk9dEsDrT5A1bmAhgzciNtG4itDKaCL2ksLqJ7HcaiHthtnLPQsSehUgQd0gWDoIVG16ztlshYdo09Q8Nag9oxXaEK+b4nX2S5pUWTzt9Iusy9vF+3ss6jfskl+hbd/+cJywfkCEwamNgUlRKNx1EkwxRiyGqo9rV6zDiQIdRKTE2sHWm3tbZrIoqApN1+7AuwUwQfDXahHpYgVDGpt4zrd6dueQrl4I16ZmYuLLEpca8vVPtsHfTab+LZvu2MmLhkWpM0ju3lDVg5YWpAYE12rM42rE42jNJOrD8azvTJ4uK01XAlvZHgPXadeJmyfjzVKX2Ja+/ZNjrr+GN3Rl7fQpmuT1TH+h/iJtvoIT6C8KOgVWJ81egIyboiDkwAcsJ1rfNifTAoGGPPAQLGcE/EUUa/1BoWOOk4GhrQ44cDWv/6el//3u16yuGjhONe4bOaiOrfCC9XG4x0uU0RxYvAhoUj7J4nxs2OZKpcSpScaxj+Cdi+ifRFFjlHImsIOtglXNEW5lFqVVsDPwPH/u92i5kTAPboLKahsAZDnEI0ai5EIlmMgrwJ3LVIu+FM2JdRdAvqg4apwqKRlVBx0gVlJ2XCigh1ioZowKa3kAFNHX+KqCkUgElTgU0MagCKs6hAiqG2azCd38yUAHdRrjinYQV3kEq3Vud5NvAhtQS1roYVAFFkuJvExBVXvjxk5/5z5/52JdOi5sG1ECJ/fFe1u+MVwNFkgJwG2NbYWarMdAKEnaWRzdUBbXLSC2ZprPpnRR9+6f7KpverZUR7nSgDHpHySwFKYOqLMXwPcPB3zd8mQXR9zlx3oE1w7jFFifav4HQ/JtJQbJEvNM1wGRNjdWMxEZQCIqArwsj4GtATTmhpohQkwZsOY3lmCVLZaSpIfkccOg7vO7+GhP18glUbpMZbIPXATpKwnZyQG11a6W2OoHqotODCqh3LKqbiTAfq9RWuwO1FfVyM1mwEABoKLRgXQMcZY0Yux3IufGkL5o0z+FMUdFzfsgruujceFgZ5O0GT61jpYqANhCTBgwfcrqtwQEPDTnjAQqTEStyelALdKzSAu0OrD08y28PZ/lmb+q5hhMHvp023y1khrq5bBJftM7snx8oxBXtDoxi54AFuAzJvNrbiSG6hTb1zWXt/LVT+hwWntqgySZJsaICAv6VAVvL0ooztdTpCCVdZ1q+xnNKFqE2NUyDT5ySZGakjQW8JXFKTdZfqWvKItAUsuVamGLQVnFGALX/mVrXCc0owF9TSaMuGw3R0I240Wg0olpDoefOn37aO/OMOJWjducn3hX/prFRAp/7NGt1ennNSPsf3GXobe/DAr7zaUfL4zEhBX8LT6eHvO1dWID90GecL74eCSKQ9qB/qsbEAHz008ww9HKN3vb2D/37YiSigLztH/kMskXv+m/Su/5rgXfj115B78ZP1FWDjGAnxaBG7muqco/aXfm8HhWVf9QNftA3olrO+0ctrXhO6M3ACc2rJTRtiK66xajl+qLeTeQmIa2c9uoxyrH0RqdoagALYetO0WS8ExRp3RqopmpkGk5bzdZKjbXfCYjtvvnaoK4MX8LkhDGXz9tdpn7cTymTYqSQNOkhWpndLt+nIERVSQMnAmkA87dKOCVI2gC7kHQcShiRlzAkV8aOWccHA5gqNaXbnGfYubz4fAB7nNq81Oo9buctcE7yGtVmHc5JXs1IlZM8xZzkBvp4WpnUs6a52kJXJaYip8vYvvEt8BfPar1v0iD/eLGMaEMt6HonD9OPpybH9OMJ9b4suETNzSaijXRM9MuYzpTmAMDIyn4nogDAmAMAa1be1ambyESmfuNsJzIRBgDWrb6rjEzdAv6WGADYBBYJJS0MANSmZvVdXTVjtImr+D/N8X/aNE2E8lnxZQkCW1RGKLfBGYxpnQAGQPmCYlB9/B+AiB8Px/9piv+DLUPs7C0g8wJnqO/qm2xRC9rsPFI8DcCEJ5V+023XGU7zu8F51+nGG1I7GbZCCvPqZlIf7SZ7g8kwfA7mpE7MnWPnmOrPifSPJtXEnug9A0r7k8PelEuhN+WtLrCOdEsOXdzi0cVvDLpTHgu0+DcjomAGYXcnqjKMxg7lsA6dT/GNpTYJ4IpmpbIfb0Hf0H7eRMEpzi5wqUVr5EvZRKEpzjalJvLILeIRWcJcS+fyo4xB5tI+72VMuukdfd/QDn/AYxwa6abf6IQm/CCqdNNRpZuuDSlmG6y4Sp3glJgUv2fhya9TzUYrLS0w8acGafoHX/7jz6CnrShr5ED5Z+91/rwStmXm3nRhbFaVNXKgrA06UIZtNwbbhkYagy1jKuvBdtlzskaek07EarqkojWfVNTJWJNeaZ45o/t+2bffem+lxWZtHvLspL0jJvdB8nY8wD6Uqdm023/PcGK1cef5tF9iIgjgZOtVT98d7KnpIj242bxSf7vOsXZxPqD/bQeuj0kv3+RPGglltxIHUQMusau2khg2Q/oiENHaJKLFRO4TOtPTi1rArj6XVxXqR6lE1oMSeZMXRN9ML/p3kWDl52iIhDXao4EaVb8kNXzk1fAoMtQCp8P7BpwO9w07HWaoi49IEnFrspi1cHMGC4vQBbDhpthO55E1Fw0rqmTGCpPS/1qnZrdh5rbiy4rJdFQ8rejN+eDNhU5qt7s3l2W5aVmU0yBipY48199C5JlOBL62Z1ka6GC2c4FJHSV9TznlqHVEBUQ2BaokM1VOo6AENLsGnd5Y3UypgAhfRZ4hnTJTy9c9gCQcWAmL/q8zSM07m5ave+CmXG8xF5iaB6EztSz+R7PJTJlNd3em/v4/7GF4OfklwjzzKXGVDh+UHUmZNvyxkXhux+4q07gzWMAm60Kp4W+5BWykLEezuMl+uacHheo6cbcZJfOgLPUgVNe9UF1tzOGt2ao0/K11NfyRtzaMeFHuGzwM9wVelJXVoc06/knW8WeVG+SvHqrUQVUwVHlgecCkMuNFbJcVNGHOZKISrzXImFOhA+V5rRkgrAEHSk1FAEwTEGHWKyco5QIsqamTP2QdAwsxSUjd5SX9iQjzksKYOS9pbcBqGJOBg5KS3gEIQ3JWJDJsTGKOjwkS1zMnrt9WTqGnh3c5JHF9atEzUJVy/n0jyvl4pVUI1MlL1sxHGpXz31t1YTROOW9PrzqR3Svnn7hnxNvim/c4YbrytqhEYwMifrp3nJFgUoWAwL+XAAmaoY/f/xMk5gzJs//EaevXh+T/hOW+poqD2sH+LkeDuNY38705HwVlgiio7f7uFcHdqPrc3SqqW7h46XvW8/95qbGmW/3dmeDu3MaOQunvnCvDg1G2sdKaElmis6yRZllWizKVyayZQfu/+4DLfjCqqJD2y+9bE/bCodQLTr9jf3Y/a2sQ6hP3j0npEA2pPLzi57/exxoUDHe2X6supZH20/eNyZzg9THf9U9rI5qeUd3Ofvc2QvmDe923o/kcRnNDHL13DBw+v8Pn7x2jU/L5HT557xidks/v8M9h3mdDndL77x2jU2qFOqXnH8BcFAM6pXicTunU+Lg8OqEXi3o9Tup1WYvqA/8U/E/X+RwyU12zgiLyqtOaWEkRecc+tSbsVorIUxiRZ0/DrZLMbZrMbR/0WjtNQo+0D/iEHMrGhIOqHB3SJnTyf9ffEhYzE9VHT/6DeoPtDwzJSmuiVtf1JI7qQrpxYtDhB9aEnVkve8mL73cbPxmjajzx/jFpP7ya8ml4OrmeIvLRD3Daj14eG2kPvn/MHvI7/V9/wGseEyPtP3n/mKQgfrN+8f2Ms3sg/Nqf7vUzOiZzyVc+wOlZerl2++vUB3CJ3zXmGL20jCFHpRhZidpKKxFaa6lwvX/ycbam0jQ87S7DkXlEc+LjvPd6uTbSftZdhiPzi/Olj3P9CKS8NLJ9B5H6vGsMKtp4JJ8ZHIlRVq20UqEchUPidiUcl38rrw+X0KPQpw9uNLJ/fZAtyL1cERr4Fwd9+YtRWHEwxw8i3/quEWBPD0+7s44nQkU6kkSIP+h7jIy0X/19Z8LWo1sZNfin7v+dnz5y4P/B2MTREQCq+Hdf/tJ3k13QHFz99Mvf/E+YO3J0aX78QZ+2RrnRHP19vPfSl+bVUJz/bqA4/91XUHH+6GiyiFdubArZlF3oWSKE/c//9lufSXbR2YHTth/OkyzeRaHrmygnlwq+ioa/isKvpPsqfeWm69XYCh8OtsKHX8GtcPxVGNtt1dBue+VG9v2LVL6nhp4xyqt+5WhOlJPkz4nalcOy0vgeln7Yn5KDOt+DstL5Uvg3lnym+MFkuPCzQlfmOnvMfESW2tQxRfCyKotlVU6Mzw8cqHu9v/ZwjmB0BK6jyjciX5kqR3CUTXhzEgjpDq4PsclqvzyX5he9HEnzW0enb1RD7A3a2isHnLjr+AZWV2DlL37DQBxR8CHtl6cUWVTWFO2PJxSXKVTOTbSBrVVeMxEpSEEYjQXXfNL2sx8cjHyKnNOMtl/4IIseMBB0momclpUaUYqTzI824n1mwkbSQYVuRhOfmujOTj30mVkWZdsUy+om3FJrCqTu/QpjmzjMT+9Vi/qIMkWJbqRHZL8TmU3szyH7nTp957+YWBZmYlndNLuoH5PUwhG1qNek39KkYz0pXZYeVIutSYosUQv6MUmxQRxkUvRNnVvHsPGILkhDSuvkFKBHVKUAPY1jeUoNKECfUIvqeUUanZP4KSpATyrS6GBU0GmJqpTnFenOXkBF6mk1oAA9hZmLJ5bVW8kfWfbd7FO9Xngg+QGvGOvWMmpckqIGtRynvXJVLCuKjpJdVaegpWqAqkrN9p4KI9AmJIxwVlS7/d0eIfwj+wNM+zuws6mODu/gXC8Liog6wy0sY7wYlT519lCKebjDxzzgnaSKMUx82VPtYkbn1TspU4ciA7PxBU7R9PabLhgEtuHUsiinN8AuMR98xC6asUs6WAKjCnKIUnpWlcCoVZVQXcDyb5Cp6xaHW+IQtxRlg7rJp7AGxlTozN8gw9KxoLHdAzUxXNTDW6uaGJMeBth5LkPHaVU24feUIseb5xnJnFTOJVpj1EODLEs6jHpo2mSlpSV65aWUPOM73/jiZ//Nn/yA/Ol87ENa2YFGYh+4EXTK02MbkQ5LhY2gG5UgjyqL2caHIyBcqo1DeEROqr79xgedM96CPqVISeuOnubBS3bKUmF6gGoylD2hhs8jH9bn+FwfUz6bwjHKPErnGpHbgnpOMe7Cdk6ogSCDJxSQkelDuRoHQzP0zaiR28CAsZSS0aMzZE5/ElNyYydH1wElRILZawddBzAhP+6N3LsOFGiMWFoxNTJGTAfxVKbg+rPbhO1oMkXwLU2mCL6qeQeNInAl2LGbDLvouKUW9PbOtNGVQ0Fhpt9GaW01m7KfV2xniMm+UGpeQTwET6m+mSRcCVOsTcx2hibOZ4sY5CkyCbk5rWaUTELzgxM6PzShOphQ5f0xaFJj8seoJvXGXOKkRjQByxJxCwa9jp1k03eTPBVafIqyzZNcVpPcHpjkdjDJxeAkz/hJjlKy+EwNTvKUn2TFeN5Gd7ojgtk5Npr5tpv59vozn6dmendeo5Lw3L63IKV+cqaXBS1kkG4ojCMJUjmggVBcJT4HAxZXi0fhN+qqw4qi5h5fj+Y+osjH9DCH4p7Pi3XGAwO2Ydh0IdoQDm2YybLtZ9IkzGQEDAG035lAw8ft95Ip5in4bmJ59T33IvUzk4v6Mei/vagPq2WZwlvADRllHxvkiQ6rRb1XcRj14CpIzyQ8wQjpKyr0cYR32Mmx2VVABEzaVU8p8tl9Qnk/xydV6lmrAcABdbHYgsyo5jEgNzexLFLArADH44oAOayQL/u5vNe0l1f/689/3r7XFPfdB7ONRF+uM8JTkkboeZD3BFyHd1RbDXjs1YrH1sBDLAuWJO6RG3IhaBrWVpQtGAK5ZtEr14ZvSOQUVbnJyrK1LMsJOlywsu1ggt4AK7vJtA+VLRjwe+6lEoHnfk2e12s4v8gXbqI6gMAxtvBgm8LPMMxvxS3i/krGJ0qps9SigjijnOTKumcJXdFJCvQ+Py4SGsAWXRstuIFr/kPZN3W/J2EAddqTWVe9IAnsM5w56hT81nFPfp/C33HDnJG4Mwu/ZU7JTntRH5PEsxc+zt8NAveaAnH3YSmrRMM+nbA8ZGXfCiOX1c2zLSWVCFKKqoFEq+ebC/YaTg/ocie6719fvbrd5+StUpdeg/akvz2H5umV1z/95OkvfTLZlSd09e/+49d/EmqjXvz4mrCqeBdadEP9YIZ1w0KVlG8oGm4oChtKhhuK11dzDKSl31jNQbs6UFiSjiTUYJK4GnHCGdSJ/Asp9R7FeT8zNCSONUNSTgB1fkmAlJUrHRXmBCCbtqCFcFbLl9NaxHstJaY4/eCITVivtGIVCdY+f/XjzgysnBn4e5Xq3xmk//oep5QOosW+/lH+lKPFfuCbWj9a7FmlJO3mpX5Hzwkcn1HFn1cKJj2vCuB8NPw1DdhHYwjdNiGuEhl9oG29bw8CUHWcDiPZOfNi/DyXwWuffhSG42y7RtJSuTcVbON56GSbyIpvUMJd2OkXdkWDcJyGsyJEV+Cb0zimer+CyQV3ZBjrN88fKNFBIqyNXoBztagNNcf5eqNFKl6g7Y51v9g+8kXqc/Fqu7QyJ9L7IxVV0Wx6Tti/efRJsU2ILW5C7YVWFt+WnTha8s+w1oRd++Ka4BHEtujbI19cEwtCLOJ1vW8fC68P+wsbU4MY6JzYqG+/WjWU2Ce/uCbcdNmZ/vL9q6urx5Cka5Ogq+7yR1ZXV/frRZUBt4grDEJsJyqeVUaj0K7JI+Ug+ureCohXg7zTiYwOXEpwpt6xqHHT3EyRmLs55pJLj/n39NKivhVddu2B/WvCTlNPxevgI9OJbL4LtUB6QW9f1AX5r2hO9QfAL6i5ska75QpCLrVFH6mZRamV9kJ0DrbSxviH0fYKaOP4AMB696Kao52CsV5G2m/89pqwObQ815H4FexUwGITicCYIcloJse1j4vvKXKP0Rwx8i+V93oQRhZHMPhMFl/SpEOWxR/odsq5r+DYwXJh6QpldN/+XPTtdrsI9P2OTmSbN86aqE9EWa6UyohOZKPfKoWJbPstuWBPpI6w98hfR4S4Ku3Z/U+K4kEYtbR7P/SksIraXkVqqlaKj+kSdgRmaTHinNB8W/wqwUn/Vymd18ilwm5f6Yg5YmqWmb1BTzNhV7++Rm5M9uuiq+aA2HTVFYa0guSQKewV/a4yhvBE8ScaMcZ26Eem/7OUewJabgTlLpzpoxvKgiLeF2k2J7hExkbiX3UQdPr2hc+tERtQPASDIEplRPoRzbSqYmrmlWhFUulIBEmeo4EkzxulKz5H9vaXmKnGpWrmEgnKk9KOpHzHDJ/w2/2VBGS4CgFzd/Pnmhdk5Aiec7wnPNzpP1O4NLggSNfHeCYVhyTI1/LlZSL6xTPpn1dyIgb1sBzbxNahJubc6sqqhICsiinUg3nCuUvvlGHtD6uBLS+WI2DLjVxO3jbbigXuZwKw+H3ZDvsVgauW71C5lP9tGmXxEH000y/+UDp/sXE83a9inlMtZPp6h3w60h8JuJyIRAgZzdcWOh3pfy8Vf6Sqc8QfBfC5jwZWFVubdlCmm8SYCUgvF+vO7HDZjvQ/SSlHHJx4SDZbAXnK5is2vXG2lUqlE/wXxSFWohzxxWvaqV9+mnqQURVq1Tqw69SvV2IZfpqrIPd7LoOM7r08SpGhm1eRldeju0QlyTHL+D1FggB/IQeuqq1JlSPwzy8SsV1XfqNb14QIKyimwfNCGG9j9DdffTpXeVAW/wc1cZv7jpJU4PaUpUJtokcZbs1Ute2C7QmEp1SD25MSEnowEEufFSGcL4phQMdJvSO1TtL5cdtsnAvn338lUrilHxpyHULiGAMyGaCO+ryoo690sgGZ2HAnIV14mJLV0Yp0qsHKFbv9H5TaSKOux0M878adrbhzXazw0FHKnneKA2nnVrAxujArA/VtpPs6WqkmbvvwxM2rKEQEd4ZA6hDImX9QKiONvj5aehlYMRRch7r8j2oAnzhGJlJa+Mgj/GhYQ5MgeFmFvyvEWQzWwsGFCgrGrPdihC+mgd6moOFXH4xdfj1C55R7K9gY52IwgoEqKdZB4NWSEKXNxlNad36zgeOb/u9SVywpbKZKxzGvslKzWKG5Bo4wekKgdFLvRJi6e17NEKqZdmmBMoyFoaWWKx2JJTZFKZ1axcj0g1LG59Ft5LqNgm5j1y2lD5kuhes0diirZ5IeFu0ULs0O+lWuC87vKVnfU8VFe3iI3dRutktfqASL5hCHkIRw11BFWNbDWdsOs1Zj8LdTuvPjososr10ctqrkTUVp6vUNNPzExDAFbParT9QxCOmKTsPqXblSS6ZhFecKy+in7hZjeHHmMOJmXhmeGZQkXjNubjAi1Mj0Y4rWinU2shpthEfdm3EB6Wjywqn3AeIJUprUO5g8RcOS1ZwWRROoicNhPVOjJZMMmOxRdAtiCcCmqVHkfTPUuMSFxiQKqIQByJTTrMx4CR6E72JRb0fZG1UJ1wxoEl6/qI1RlbQN7xuf9j+qAnFcvgbWwXxGklC3nWObAW0XRyQpsVg95WaMYRYEsb5KzAVqo8KDag3pQELQBTmkVIqsoh8otFzAAo4YeoU9QsBCL9AHiKDps9If9/FrKceupQymO3ZrSRoX2lg6OIDrrVnQyMiKDTSGU1/3U895tUZmHzW0LaSsgMz+X2lFelRJBeMr/Dm2Pxf/A9cq6xBxp3xgumjTWUV/a21lHwV7nMO+kVcJDroSXZWpPSCaFb+OhGx1NYI/lJH2ujvsqrzzKoG2Lpv8lr/RwhtZdSPHG5O/ZWt32DNwI6OkVWEr/qOT+MJwm7klW3jwRe7eWaMmVVpKg+Qj4gGvvMV7ERbVcHmQCtWLWKxXAB3vc1xTARP7vwyoKli39BJUFU63sYHG4noQfBTJCeNgVmNghsNFACsC2Io0RR0sbYBl3+bLbu6LJM0ACfDMhrLi79EWjUgdSSQ1AlwKtN7nPkZ7BRxxE2Hjx5EPlHCe5Ja0UsEqI4tvy5RMCi51RL1vVJU1iDzMB574AxDc80rhfyNlFNJUREXSyn5HvwXTLHiBw8q7AAEabaIbZzvaaEyzoO3MbSXgxT//9J/9nRutojLLEjlvzJENm20GqyzTonGWBcVZFhQSKcVZFtS8isg8LHqu7C5JAD5XgayyLCBvInGTDGZZYEPMj3hshcNbLJ2PCJ0SmSXM864wkl0BObMPra65fPxkHjGy2IduD9JJzoQBIyQn7juKARB/D3mOavGkiYtvS2CyMcN1hIcIaA46zdEPkmtaHkLfuGbTPjkIbyEkP3ji2jzi2Egc/95Y1SgVw0nS7VODETUviOJEaESp9zuJ2mNUDxPEiauEtAB6NSkgRF/uXayUlbtyJv6AqSnIS/ZL+sQoW/46us/O98u6RlqgqNq9zwYSAYlquitsf/tKJ7aNt+SRiRb0zLK4CV0mO024LO7uZKZ58525NrGpmdg2b5wtG9ypU+zGZQ3eNZ3cNB69u9M0+c2d2GQmM/Gjd3fS/8k0Tf622R6FpSoaZJSayNb7WGDaQVEDKLSJTNOkDB/1Ey9oga6bndTUsIf05kfvLtNQFElME9BXgqNd1IJCn31/Ev6W+HdK5emBrAKZ3Cbq7LGNbEbdp/4iU5TjQ9DoA283rhKXGW2fEv1l9PLU9oToW037QWGiNnv482uiq3bQjZvREnZM9LsKzWP2sn5X3QJ/ddVuYmokcj0dVewDVjG608jit+HNaWxkXl1BKGy+orI7Fn2BR7ctXbmjlEwkcyKdYBoLyNPI4l/q9PvM8wzszMzvf6QKRhV/oNiiZ3MmuljHcjBLjvblLMkg9oxgrbsGsN5stD31RzANSzQNb8exH4dpuAH/rNM02O00/qWVseNHOF5P499ejX8p4DKqwk+YKeY11QTco18dK3yCVni7uurjdBKj7fuqS2+H37d6Djs8NhUNNhWNNBWFTf03ZYn/xHktwSuwDDh7tZVWQzTon2zAxnjxMz5grkH+ePc+4kqT14bmrZGGzQT5UKOwmZiQWdWMPv/pr/npT845/a7SrH3wEV5oOW7+lfG6CtxhG7zNS/ShV3WJ1EorErw6Vwphf/jncpdbmv9y0PkmrLs0+Dmviv+cl6T6/JVektVPvJQl2eDtVzES68EgEuvBVzAS6yOvNkaIhccGj//2MDb46B+4oNiNsAFmRyZMEDTB265q4pXedof/4KVsuw3e5qX5l5OqRokGD6qVTjwnTExxN5jkjdjsBmuEbwrWKZ5XJ1FxEmMcSWwfUn3vGBNjZEhsH1RYAywDeTOm+jl2H93L6R4mMLX30b0W3avDrdPSCaoxZjG2LwQ3Zvqduonti8Et0zf8+XzfcOPbKbebiTGDLgJmYvSD1DxM4DTtXL9sohxY0nI7iTExdfrr+lyY1NSBr0oovFgi94d8O7Ch4WvNca+BZEIOIRzJpK/PJYkF0k15JzHR8pMfzd4W7UEVEXFWEhipaSPtqX++hvV6pH1DV11hpD2LN+ZRcJzvg6gnUd4HjipBdUEltiRGklxjZWx1ihkRydEhAEhRusDMRHd3IpO9Ldd2/xfWhN1qz35+TRT/FCUezOsb21XyM44WcbWfw3tnycMzo3vP4D32+swXefL1KdlpLao3c2yWzz+T+ZS8OeVvaS0qx5cTNoJNUPmwzvAe8SlrvPcVeq06jj4ubs7UL/S1BCkvWtSrsFP2yr6p2UdgUjLDp2LC1SGHqdwrO0mEf+2TZdPEGP8mTQJ39sviSeVOV3GHWlLvCU8RzVSZ0SSVOb+JTRRfUbxQdXJPj+fVaYliknoetRYxaqVpt8P2v8HENu+qJXp2RjKSjOfV87KEs3MKu0uhPxj6aWliWITn4bfeVSdhuEsr9uSH14S9kGAprsK0e5zBKZ5XSx1p8125ApBvKSP42U25k2KcpK46DM1kXfUI/F7YVY/DL7TZVY/Bnydk33JKx2dk3yr6U3XVcwBHbA/Lflcdp78fg7+PSUI1VpMz3AHVt/P01X7VXz64urpa0Oneq/rolW3oUnXVE/Dt6j+Dzo9IurUKC6KvEi/Cteiqs9LEy2ZRn+Hnp/j3JIFwEkA4Cvee8tDC1MPtNbh9wK/YPu3PwEG/0fAEHJCL6s22VkqcwzeXCdy8oczdkdD+SGh/JDRv0qSrfLwfIp9oWdDag7wM7eyevSVwH7TXkAcgmZuWf5ump26k3dG3Z77g/f8AGdhTX/BehIBR7Mnw2vTt8fB6pm+PhddF3x4Nr+t9uxZeH6ku0FnridXV1bWaP/WS9Uy06WumsSxNVLzdo6cc07zCFATHeK5PRMAf460BoXCu7p6UVDOH/ayq/jLTjjPS/bkcLWrcAy5xFmyA5fqi5vPQSRhXS/tfvoDJWeCgrckBHVEMsrNY1EekkSbh6uu8La4PHWrRP00vSzIkFP1OzWh75LNrovi8xhDGVazD+lX0DUxYNSVMQjJwoJNaWpkDKmOPfXZN2EXULNi9n1sT9vnPrYnik1qkgbOpnaI9oVFgfeBxLC/xTV3WnIGio3E9O415hTEYEkX/YhcwA9OlTo1kHfw0TChPrZxXmdFYmEbbKVItTJEKrEZ2mwTfzDjLblUUWpCieqa6Nn3ccP56vo8bkq81rGpSDR/3T4MewiRIO0VOnXFxs1HFoxLTENtr6GaF2tNxhUFU5RkV+NGoqta/cjqZ2B7E4IR/UVcx6f6OSVLyRbhuklgIZKBqYxioaF6tIuqPkIGK7BO4kTsxgBdRHVn7OG7dTgN2SESesvYRutekeyfx3sN0L6V7dbi1zzNHqA6M7IPBjRmgSpF9KLhlSImGqkTDjW/vG+56R98QYCZy6epwmBxa6limumM6rifDkyCrWp3YodizQzGzQzgJzA7xvCWmtixMo3i7f0j+vpil2dV8wrMfBfkq8ez7Mbqz72dh4OxHyMNEgJeBN2ks4oQ/h/cO0L0m3XsG7+2ne+kij1/vlcDkMA/T8Hu46bFZSh1mY3iYYAgzDOA6XIjfqxGxIQjwMq/Wfv8noKwD0kQeZe2FizpyLBEmxUVX2o8+jrqKG0xkjw6iq4jR1ZqsyEbCZIM8UPr2kfvXxJVCXI2oHBAa0w2E30SAAYuHlYmW37e6unpSLKr7JEgrWE4ep5bQSsQl3EnBBbMLaCWaVzcDWonm1d9lFCJhmleZAcbtvFc6jZ+k7bzf34gYHd1MqALPiS8DDyQVDom/gbN+fLBwfMQUtDIhh6XlARZUPkbITVppE+c1Pow/zoFAyL4/z5WQjmFOwn1XqXmSjU9qtphQ0muy10MnXXVW0e9hTd4F9qwiu/hh3e8kxTy+l+NzbZ/7Q2BxQJ6HM7tfkjs/7BGjYdqK1wZoSG8T+zV5JOh5dViT+ldj0FY8z8m20e5cTIiAjtionFVL9oywEeyUPFoyOVCos6ghz8knf78mKtLFW6hc36v7nRbPbE6EbFX3OzWnzl2+D3kU9Yw22uRddbQa0SM8osMSlcmHdR+5SJwMuIaRYXXnYEwAfZnZreieoueh2eaudceaVQM12h7VfdMsFuDdo7rMUxOZHKQ0P8oERunGh2aIVkii/ZhM08p+p9lVx+AIbO2X0SDQpoGek9fnIiUYy1nkDQWyG2QIjNhhNPJ7LnIOo8yPe3+jOPA3wgAEHGwnIiZKA+djtF3TAz4LRzRyPnpePa7J5eMxDbtqXj2iywT5/rxs6CXT8AA0XCcN7zvWCHzHGjDSBox9pdNEg81sL4+x2ngWpyY3Tbv1tk7UL7dCy1S1JYdvmjBJK+UltDXKgibLRneWF9GyYyUmo+0+1S8NDagsaR3h0YTRIN6UM8BN6X65idYSHk0bbb+l++XFRtt7dL+8EF6ltrcYbX+k+uWlRtsnZb+cMzltGkC7nRipKBNLDWQCxPXKmq7tb8t+p2UiO+tijTTgerGo8QBGV4oLr5b7JK1/w0TbxEwnsgqkpzmjr5T75NUYh3ME9qJ3LnkMCCJfzVnVNy3fuF7Q++WixsMQXSXWpGPfSmQ6ivI10JrfZAcVDdXF7pzFKOOfPoqp/L6t4Mysakq1/6LP9jD6Hzw/q6Ilc7G5kGnAxVb3zYVW+9ArAOeYprP6jCZLEZwlmENxffGvFJ0ozs9zUAMmmw7YWTON83YA48pOKzqtp8gtshgMFToAu1bxrnhk/5qw22hsFC1Eu35XLs2M2cTTOANHc1PgsYMZIDLneEdNZ8BNXb6ojyoz4YpCmAlzOR7nefUEmln1vDqiWN2G4zDaniEtWOQhPKWgnQOaKvHg/QzbSannTgefdKaCz4LeS3j2WjiuPvi9xOOKCMgQRAZeuowa1yzC4JTAXMh+cet6qzm6todR1rgIQYCmLwKop0Kb3zHtbzCoixqRNJzRD3xoTdg/FbTgtAZnlc2xFKmeV6u6nOe99xraaR1Er/dpk8yrrPN3UJnCXyWMp19UOTR/UvVNEe6SArs+rig2CI6/6hefgMsDuKWgP0Rk96HiRRObTVkjItjv77byjlxS8c01zfSKd8UmIlXVQdR9U4T48qxa1EhtZRdplT39UaBRMBPLclE9B7eSrnpII606ALTqmHZ0CxYatjccSJ6rfdpM0H6BaZ8gynhGVTKeQkVIVHxeZpMpgP+POjEn12mWNRPbzvV54Zf9gO4XRyWfgZrddH3esK2yRoOF+WkXX+ZzY9r45jbxiMZzv6f6isgjvfM1Fdyn3f+4LlOmFHXXgNFXikfRav45bYu77sxo5QdfHXwF6/Ri/ckI609GBCVIQO3i64iabrfyjrIFf91RJvRyL6+ZVi9vwbAo9zUmMmsbHtkp/HwNP78NOqVwxXn1zs4k5RiK4dGtQeEKjfP6m2WNkphdoEdSC1Ep5M5mSiu0mdMKXeDTCsVZXtWpQMRwgU8rFGdZaiYJuOOibyZ5bL9R1uDnFlc8mbpoueLJsWlhWqHUTpVxlqbkWOC/3j1UoSLFMby1qlCR+k5hHSeLo27pLuD12MxEvhXslmjJtMrE1PB7tWRa5GhTMxfYCES1zfNC2L88+qHfqV2PNSbcM9gwrfBZajaD1NzivD8XcKWIMgE5j6tFdDYDHZRYLSRXJurlfDTs0U9SnnlT7+UZ5iAJanXUUxPlKeN+fvMNo3sNxxaFJ0HRLNJ0fE05xOcGPu2R3/QI8juK33SJgNFJ0KnZQhRLCbMFvhigZbWuOoWZP6oOx52vyWLHuUFnT6B13kt9b1gJ8miwSW6kLXYDZ5DYXCZEs4axHvJLYzAfMmIbYr/Hfm8E+9XWxX5yHPaTxWusQs6YMB1S/zOqq56XjpIuqhOSSdofSxrlmfFU4ZQi2B6BbvYhbIcZtsc1VSIKYXuM/j6l+gzZURz04QAvH9UBXj6mh/Eyciq9vO1ZFcwvaC7oqheU0WZzV51RxBEBaCa5SpzGX8yp8UP6EzNm/P/s/X10Htd5GIjPvXNn3nnfmXkx+CAJfki6M6IswBItkqIBWlIdXMYg5dj+Vb8e/eGm+cPdze5mB9oeW3Ud95zdGlrTMRxzXXirNHDDtkjLhkwre+GWiemWZxdx1S6cygnSsjXcsD3wrrpLN4qDJmzNnCjrPc/HvTPz4sUHIVqxsz34Y17MzL1zP57v57nPA5rhtI6wVB2HVfhj8rak/d6QtN+vSYKLW5KJe+zo9D/ZBNBNeKlkevsd8hkKipJGkms1wynyxPrHPIM0SOgI2uUBAHRvcxPnLb45zacKkjimKscKa/q3Yx3kkQ5zBcjbnU7DHuLdssT7dEW7n0LafRxJ9+kixtHB/eNubCcswQ79KgqUqGhEhDpiQh06Qt3SAfGZAOgRVgN3hJqeDcQ6psGMlTpmRBonRBqzKeDsV1x6yYjSS1IXqSVYNP2EIqFdZ9qRbnp2zMst2cYbcUW2YybbNXwP6yStpUO38CHT2pDmZsTzcREQc3G91YnQNjSvbWleXKd559KIYtftRA7SqozaKtiBK/bYIg+7hcw6KduakCUhFWhGUITVgc6xfG0aAJBh1i//mDeIMBnEuibLkOTzj5tf2pKyBnj4JFWoJmNtJX4xpABUX8dMf0L0ASECIw1KAeup8JK8wV2vctev+JRmUwH7wy6A5uiI6YwisgS0GkkoaK3zC8ueeYxJzhPY203JwftrpPmMqSk9bunBmiAbAlJCDZo9vXtTFGo6xVGsC1gl+PWqQL8Z6WOCRgASn1kg+mu1w7Ve7fDW59FmuFk7JAkdsZyckRFJTwEeNYILSgKBVtkAPVboRjWgNk/IiKwtqjSPckTJg06bfLCfNmlp52sc2jCKvIhTP4zWdLlxeVPkj1Duh1cpEQCoSDb5A268YPOPsIt5TUynOLWrgsEAJqBDmkJopxCSTUaHpSnQ+QgCSzUfpcMZI99HbYyfZb2tCoXZWdiMqowszXdeqPJ6QKOe3oTtTW7uzfyt29gPPi7J3wK7Fpif/QLmp9+0a+Fd6+9hU38Pt9LfrcRj9dcR1l8XfBKI8PYh1FWpt1s4UI+7ukVx3gW+7Bj5IdIsJeEC7dmaNQIUdSPAiqwZAb4LGui/9O7eCrAkie6RA6ZSwq+wCSComwBgSsT1L0oUV8fkguTAqYKU1aYZYE2yQj/cawNw31Wbvgt6/2JT71+o6/27U/nfFLV+qEetH2a1/q1VeERfrR6gp4/8tkDRwkzOUalfsUo9UreEVHqYsHKic4sJvGICH/DuDxAXUMAS825/0fdeKfw3JQU9y00K/5rcs8Ifxm5zV+rsbYBSoTZnHzp9Duth0jkvZDdXGamRDXWZDQ3U2NBf/ivLnrnPsiFkb29Awq4vRV3CXpNvQML2Kwnbvzf72F91uZt9VNlDu1dbrJ72KnPizWIF4tRFn9n/AlUhH1JTengb9i8qng9iAJa2RyZYhPaozllOM6CVdnHkQSPkE8Z7RVDUf+rcqr5ZrjkpR0qyUjt3GZ4LWHI3AneiGEQhwbNYIW7b1kdA3HzAHPlz6EzoOGdCx7oNOs6Z0Kk5EzrkGGgbMVO0rTOhTc4ElFLXBB0D2PzNLXg+K0Z05wFyOPBXjuh2oc5RlVejzAYdcoLbMzDwDkzjbCreiDMkEezhqSrqbpMSRG3t4TEqT++VlwcPgR5WU7iscR0GjKSsTjiytAKWO6KWgWvWpQTlcn8e5QzDkpdWBIttL3Rk2K6Pb9b98qgXf8aXksJRVz2OptDCRtzJnog7iqLgDAqKTpVIrcalKlpn9Nxl4BGKwoYp3E5xxjpldFkE4z4oSWrcH80j6yo/jtRVUWwbqkZqTL43D6DXd2HgkA7R7a6jSX8UUG9CZhRUoPmwuaJD04rOEcXwCViH9wLaTcp3kV98Cgdmw+vg4yD2ty67lDxq3Nd2dC2aaFYIk850pSf8WLfOyD+VYgrXVm2nspKG5+nW5Wkg9j/6/Ocn/QjDB2BYkrzZY3RAOcTN0y1OpT9RC9xGj/hRL/73Py5/+GMB7Md8C73T2W9ZC3ukvezLkpxhWtDPK6LUkn7OB6WOsqd2dDt8rC6nzAfFU+yM5jCFxaCi5RRntRCUhVcH6vkAY60A/oMchZOXgvwxeLIU5O9GbA/y43C9HuQn4P5ykP8IniSuQvPInSQm/fkAmB5+aT4os1NIz0XxJ4DIwrzmbDZd35ynnycJ9uEn8AEKSMvfSQQafj6OJhyRnyJalP8Q+8E9okkFTn2JvRTzotQeK9ZYxyIVRuWh8XIv6cY0ACC4tXUhVL9Su3Ond+1wdgEGNmLc2VxAgWezAe8m9hOUNvyM18DLviTTEe2b6wrtgkFjuWaDSXlVUYdLippkD6Fh7pj3WeFS/9Pg0VaL0yZ1fQ77JyPPBZEjAcNql9jfomK/TkqVpg+gNlPVHRkxMg+R9B/zXqA6JVjZlGbBXuBrqsyPwriUc/H+I1XmBtr3LUW9vX8MM+8WHtmUPPOHHghfbbQpCdPGabZ1kreSIqbbuYe3PDQrhfZRSvO/49Hk0JdDDpSPWruS/RKag7y8jbYlj2xL1E9uXSRpzUVC1iQcR6Jja8X7kLUqhUAH+OtLCpqSenVdkeHimoIFHJNXVY6guaSwwH7axTwdxFWCUrd1lP3PgtQG+N/D/3Ubc5ZYBjsbQFsy8zzmfQINNp8MTPbh53Fs8O/5oEi6UacdtcJA+cjKQh3lreSBWL8972xa/sMFpRuFsVcVpGvjFASogHL38zwyggK41Yn1RN7Wo0W36oVL8zV6kVUvD1St7cJ0Yz1i5NkiIRfYoipSVGSwNyrh1+iNbTBX1YScxd/QIYpK5wNrcVJFy0QfoU9cV8SPr6k8Th6Me2/xKFpG5J4ReWRErozIE4KHJYRzW13w7TQR0CfPAjvEICGeTos7CvXZy3lc7w1WHzEdSIpq4PuiAoIR68J4Oj+ce3rIeHrgcB7p/fkBPZkrvb9a2s9c5uoN/Zf2NA/gQDUmFesjVfu/ehmruTXa+9XLb6m6egd3dQTFiKCXUJ2ZkNdh5R+ekNfgOjYhr8L1hyfkElzHJ+RLcH3rhLwC13dNyEuBI3D+WkBHZs+H2tfDE3I2JFve63B/GldiQs7DzUcm5AW4AnmF6zsm5B146S0T8jZcj0zIDbienpCvBST83wrIOfAqXB+YkDfg2p6QqwFpaK/A9f4JuQLXzoR8Ga7ZhFyG67lJeRGuD07IBbgenJAvwnVkQiITW1Lsy2HLK63i2TRhoPMY6Mb9ayo/y/zufxEJiNFwr4IagjkLKpERyeEtITM5uOUjUEhH9QGQ2UdjR4OsB443GQHgAu7i9Qb4yasKkcbRnZSM0pbSjOB3zgcOmcb9ucDOIdkPwJUONoFrsgf9eme9VEOQ+43IHwBUY5QDZPGS+2O9H90+dZjfTbfJSKzz6TTllp+8jEfKdtVyONYD06nFdy4SuquWQzHRrIr+EcXadWPeso8y0Dy9mVucTduaAetp7uDpy3msPYIMoJ1pi7/OdGpXX89iPTqdBk26vauWA6gr+k2+sauWKG69hAaGS0FpbnvZ1zAXLWDeJZ8wb9EnzEN34gi7D+cDi3lkqpm3zJDEMEC2MfligHltF3xEOsAaICsXmAKAgAZ6EzINb0KeD3hZaR/OyxLzCWJGFBzQ64IGBOodDOi26EWyXjQbtEjlrC4O4epIdrqXnTeQbExeCGjJ5oI8xsgNvHU/33o7vZ8fJh/4mzoa4+WjDPMXAmDmeHuCRzRKZjXq1hIh6hnGcxTGcz6A8Ryl8VwIGuOhqXzEMVKaDQI4+WJUfgaNNSp/GK43VD4G11WV/zDaKVROsaUqfytcX1b5u+Cb11V+jinngzrMD+Iw4d8KWOX1CliRPMl8BJdePz0pLymCmEUsGdxc8q0DvyyL9ThQxoqVH3Bu1j/LJTkaAuQ/lQ3+bkQ+gOFVQS51nA8bLx8igF2r9fn+hqjaQjw75v1p85s1fQHv8qdWsS1pCs8SsXkmv4/CuEBXuKXIBr6uOO7hPtIZQqMoGhgLLqVtCoUItQeqwhPGywOj8ieNl0ekDJAPuCpJ+G88QNknUAR/IvFj08rDJIn1fTSsqRn8kHWUT7Oorugl/5hnSOL2x+SrzAXXVa7gIbm8/w2spxnOw6TD6eXvo/A0VAZO9wj0HezzHQ2tCu/ycI5Dc1qkU0hZxtBnfrzYR+FOkfNc40Bhn7oYMhTE5Npu08J0+MHAFhrSx1wwVLtXHzqHVjv2sSe+rbDWxoLWJuNn4pDeR0PWpd7HK5jnbecTTyXrT0VoirOpNJkO0dfrHTLDcR5pZkdtFw0UUTTIaNXfqFu9CCdJSulBqwphAx4FUIB9rApdCPJHmU50mE6ETBc8ogsetgVgIUW0jZDzqPFnur6HpRs75nfmuAoDV11s28pqHfO7c5yg4HDepspqbUZC7gILN4Z9uuC6amGji1h3QO2yPv+OravW5rpqRegqq2V5JKd0l87/k5rMH3k7zzzmmUc8c1WbOdDagVRxQx6CbXiMG2puOFA1PJsq3Z2GRdTHJuQy0CY9Ia8r8jxcY1p1VeloOh0iS/QQe83x5YhfVvWXyZZA+1aj3G3aoUN6sB6ONeicF0S3NxQ0Qy6woaDN2TSK9VFyOFpq33BFtvGbXRS7/ErN4kWY1DrtAqntTqMGyk95bSeRFsCcl3nOOJ2YpxPh3NV02mWSel9DWLfhOyxiXVcElShUR87QzvKWVlN6gG7kke7kA8ASIscZX1U6oICzdVXqIDvLBOlJuN5SeRDrJ3WAx2882KsR7cGwM+3BqBPtwaAj0PYnag51HRhRFgERYZOVjiQOwp5T3EaKpAoIMlVdrTZuT1t3ur51lKNpTL6ueIX9cXlbTfq4urRx7ZheIPi+g0aBMXlb5V1yIb0hOGoMRu44mBhXoWNHdIxHpHlEA5x/0VKxNlFFLqwWE0kFotdybGYLLQxzg3YphVX4hHdNacPRZrBpj/L4OgyOBIY2CO3LNEw9MK01BqLRf+R7n9ZdjJp53oZ1snBSAdqyIgJwvRpPyCYt3aYIXwa9jsYMlR1MXRY5v0dkvQKR86VENV9KZEZLPMMuZooAfUEI3cB78DnbggYAoq2c8vJmpKpZvRKnoaL3CpPBbp8AuzYcD4bj1YcT1xJxgERkpSGt8iGQ5gbyQCuMm9UJIDIMlGQ7YLukdjip7WNbSWm3ahLVTyDbxJjq/9Z8GyP1thHTPJSvZFyp/jB7QgZ6/3TzUdFqSHmHYk3S5zRIn48Ykee6lReJIhMexrzFVlptyKlenifpH4UesB8/i7dP8+1JZlb76+L8mzWirewJXTvKd/Crb+FRHgFETkk8RJogSKDjqnBGsl0Y4+0oZndOVg4BCh6Yrd1ZtLEidRfBhuDYi14XwXzQz0Ww4JOLgCSK3fkIQN99KBmIgc0DTGAanGn9SJUEGoSrCM9aYxkHpaM9IaQChFSIkMPQG6VZ3j+dH9AD0xhUOhuU2U/qfDrOPT2upvRb8Y0Hp/XItD44/TwO6CDeS6dzpR+GXujwZtsFtevD0/n9enQ6f4BRGI/KUQ2UI6kCudfLDzOyzaHqf8w7H+StuIEZca9Bl6Hjfn0EHQJvgQ8ewV4np/X+aX2Ax7cf7z0yrT2df2haF3y74HUcmgYqHhnx55Fgw4oO7Wk1a3kXcTWHLOlfVMY7pxUqiWZRldlPwndHjDynkw/Bm9uvbG1RJ6b16LR+AMcKL2ARBv32aX14Wt/v7h7GuxRX6+n48zr4/Bn9U+fzszDUisV4gC9nJ/0Ftp+8yPYUtIzeEaW59bllz4yx1fMJ0KBjsuBsCP1DakpP4XdGrDfyDpp0NkRp5gSbgczNoDSv//VlDlO5EZRm1f33SlCal9x/twM+Q+abjaDUJ+nna0GpH6Kft4JSv5N+vhqU+nH6uRBw9EWFtQGHbLo7azQwVfLZNbPqvqVPTch1mPePTPpoMT7BpvDjbAp/96SPJvDH2AT+NjaBA/FnVyh0tcJOwrxFywXs3awHJZr1xIOeWfZt5oNliosJykKOSa/AQviqCLOfF01nL3m0l2UxRIdwsZwO+VkEl63AIrYv08/9WlDFjpxyl8Cvg1pQYY+8o8WY/GiOJ6efyrtwOZ5nPBrMQ38A7j1bHNbC3MQebSzBmEyK0Z6AgmVZSBqVMq+QX7fQypZRxeiAlyVwc+wfu/4AfAE4MnQN/XE/oxSag/kT2pTY4ZTNpGBGSr2ffmUlSGCchaGgX0c4wbAyj5ZuIHRe35uQx7XSXZDKlT4IUrkCUU5ppTN6ZXhCjlKyhpflpDyqVfavBWvr/jnMJwljT3SoVfajPFiPXNzu0RnvjEdpGOxDXyuMfMJsHD6nIliXnK7D3liTnM/D3liVnIna3liRnAGEb1B2Kn8ZPj4vy0LqATNWFkH2GZ8O69OgCk/L7KbQCtjSEqc5eEYrI5/wrsG/3iQWt6AkAwgqVPmTIORp2DtY/FW4Sqymi+v2Mv+/jFcdmePPlRPyFUmJDdAYkhkvH3rQM/OCkqQh4HQobXU0U0hz/M/lbe2NSy8/W/mL6aw5JlRK6BLpAKiSZ6Kck5Z/97vf/a58Typ027Q+XAwb72muKpHv19LMzs7O+u82/odzqYfVx6q8xsNaZl8XgZZxgQUrAphIz0coW1c+LKd8EqoLSeQsGpcg20Xj/mh+Di46fxouY/m79TCIOBEFGAEsDaPszYpQACTjozrQT0/6H9SBPjfp/wR+TD6rA1jCZyhrTSH1ftg8zt2GFRNg5zw9VBbSZCXsnKflGU5NPoqHnqk2LOBAUIEPFvsOKvjCIg1BBYASc5OY49X/UzOY8c39v4JZmHoKOAQ2wwPeueO5EKcNjzNrDGF+kyGdGVHmGUBFWUS6c46T5cP/eSemhY9iHWT/QOgu4F+ku4DsSne1x6mpRHnUS6TNk605QY0akyui6KRKtyjTR8sMTsgI1MMW5qkY91exFG+L0lisOfEN8To/q1uY5WRMviKpeVLCXni6BXsR2W69aR3UxCu0HJDw0plOWyisYLXzxjcxBYYjPEVCH+gdB42kOAuIh4NJegcyWhuIdEGM2w4ppCGFMXXERAy6xawvVRH+FmV9uSEtfNJ6wJjtDdiCCGu736OuQAWXfwnoyXOFRxZG7wzn+Nvw4OW4OPtO+aIkQj2PV5L1CrKuyAl5UYLmqxAxMad+d5pLd+WUFxLwH0scJKArAqlfFdDRuFST8oao02+zKkodwLsj2fuYWneJ70SuzgN0DeQTc0zIHBNK9q5I73w3r0jPminsdkIuSAfAGvPnVd9Fep5dFf2+d/c7YD8yBB8RrqyXsHmihS3LLFEU4LP5LTNAMJiU2nvC82LbkcqejW01DurG1v0SrkYT13ijf6oKUfy5sarpUb6Fdb80iDUYFggwsCDdOtDGma99ftkzh2H/jJf9mYrFktABb3wR3jiy1Rvr0mUCWpX1TEBrspYJCPgbEFrLV3OW0HLZqD1rs/1E9bqzkVGlufMP3HmVyNx26eJMTA2S6VToxLRK83/+TZcSKDE3/6ZL9SY5o1iA6VuL0EYhYyK37CzVBAqwHoHLKCZ5t+UY8DPEmODMp2dnZ5fEpMx0ACQm0YFLNaSI6XHmHtmTWEz2JBaTPYnFZJVYjMInOZFYLc+PESZmgg2SS9HVcT17UkzZk2CN10VZJNqzKd9kdg7L80/NmFmq3ZFgVRa4qLNqivLhRlwAggyp01j+IWG4C434cNHRAXCZdx8uAh1g+YeOaX04D3QHxIMIpYNMTukQ7WQRrGKkQ9P6MMiAESa14fIPEZd/iDSsY8TlH6IxqfIABQSgQgnJpzAEYG2cls+Vf0CLXWBTo9bKP0RUKwSmCFuaUPKg1odLrPpK0+dtjrTC1CSqZqNQeBJG1WwUylzBO5WNQplFvLNRu7NAR9VEnSX566C9SN2lbFduq9S4vyxwr1AriGAZO1T+oouxyHmio1pBkmDmPXaXbJkO2IqoLMJmmY4A9inToQ519u7DRahD3CfYhDzTYbVPQ9AFYkBEZToC3qctynQM6axZpiOolekIJmyZjnDLfdqqTAeVVwm4vArtU6I7XGEF5oiCDMADKdwo3BIVHisRd9z/ukTccv+Ploh77v+sRNxy/0cl4ir/r7JntagKEx5mOuqqEh7AG7FJyuyLQg9kn7/HzMSjZJr3uMeYlIeiRTpji0/I4d6TASa7LLACco/xuNVTRRZjwy8LXKZOKoyIqdYLyB8tYktcVhLatPZUVtKDz3v4eVErK9miYwf4DS4syYywKixpOaHbP2ELS9a2UHBhSR27gcV2CDHXhxE6ZmbBVRPLraeiewYdV8UL8Y0Bx9MHaknYBqosjgNVFrZlH7ABD9pQMjDVc27CrOKda7U7K3hnqXZnWfFxpiqTAt5ZbJ6/WPAn/SWqO8Rx3PVuKY673i3FcV9pdrLobxHH3d9IS3Hc/1xg8NTu47i/IDh8hA5YbbIlz22yJdesy/ZsyJthS9aPqyl9ikBOTemHAHK2tHBqwLaqfp4+CSLMQ5TAAOb7mJrSb8N3T6gpTVLln8DDo3yQiM8W8UmipzBrG9y4aJ8s8BkjDgJbUmX2X1THG2h2l3C9LjZmJ18MJuVFPm5L+775Bdr3Bb80v/8zy575pseb9TYCYHskkw2Hl/xG+4s+n26YD8rsmkQTJgzvF6DP+RZXe6eTBD1wSGbHOnjTF/qA93xgNn5u2TOP0IfMxYvLnrnwN2weWpeidkP15qj95TYVvOPqfJuqFDu7CtVSpmrFkqsVGzGDBYtVELaidifGYk4i+5JM4pj6lFWfhgoxF94xL7MVi5VWRv5J7IcqlUpzlHOwSyMm5BEtzev/27KHzNpMggyKhdOAiUusbKPx1wgyTqpHkH0J61b16Wl1Dz0J7slr9HTF9bR2HX7pqkWck7kENjbpxJUg4+qyEorU5zxS7z+BkV6nOvrSLNgM9FQgzs5tU4tr27QQfVssbt0irlWhS9pbzAHdYNvMYf4f2f4X/+Hu5vDaP9y6Rf85LG/dojEHdNDZXfRpF32z8A9pF30sf0a76PO+t/q2mN2mRdi3xfUvb90i6NtifpsWqm+LtWtbt/C5BVeMktTiJdciprpUsKGADLZglMZfFhn8Cq36dDa3t85E37m88qUt5xIj8STMiq/9O1++jQ7JrQYzRYsOybVA8ygCOiTXMksBH5JrmeWAD8m1kM4H2x2S060xeUcUbyW7bQtDM1s13ttC63gLeK87FNfSLeK+z0DreZlruL4o8xweLMj8FPy/KPMCrpdk/iDcvyLzt2vo8JrjOtjRUoBHRltc/OCOKDNsPyeKR4DfhLrFx+hyeItSMudHdcssCD6K0zIv0s9HdcvMCz4p18IiCW+B68tBfgzWCM+htcbkclC8Da4rQfYrkhWG7KtStygUZjrFn+1CUuKdDuLXH3jnUt/2kn2Flxe9//JBzyy3uP4ZsDrtZX/eMeVWoTgV1zHvxRaekqFXKEsOPyfG+n+EKLsc8362xWk4H/N+pvWkWA+5NTZZaJGr/2IrD3Ws/cfEevik19axiUttM37EaG6AdY7RHEK/olKjITrWakIqeGQLjfQBDlAbuvb8lPAoXU9Ai0Vnv1aCRn44Clg45n01cGGkeKCCj+QtB9WRvJcxDhCgAWN6gkI2yvXAK9cCFxz85SAPNidhCrZPwhQkHQ4RbSZgCpJ2rCXHryCyUJTLFwNK/LMU2HNywRb5lzBBVeByLwWcQaHW15XmwlDSoWPeLwZV5rzQDWIxhIYUIXolpLChSyFFhi6GRWD2nUtV3xRMyqVgUi4FE/VGwMWtUSq8iSLVS2FDaLsUTsobAfGAVRw/Ri6uBvTVkIUzO62f5yVaDGwyJuWSMQVENOMJOd/iYXgcbVgbxmPe30FYvhziYT3KmRPmtbkf8y6FGHo93yqzDxPriCckoACKhfb06oLLOnXM+1wAG4Pm/q9IHVMV5bmWJWMxlVGerd3AI+V3wuoGpo/eqN3AUJxb1Q2QQNfDSd/D3F1nLpDJEKXV9RBGSsE1OJkwp3KUH8nRbhIbD/ETGy1z/zHVaXLNYzzK+C9xfb8eVKtzM6DVWQtodW4E0HmsqUtAbIvHTABM9hFHAKQjAJEjAOoJj3NvzTeQeb4/Mn+2PzLP1ZD5Ag4RA5UwrKho17K8zQbuVC10K7nbFwCU8FRtR07thNQu6pv8FxLjvgOD2ZQ6DrGx0lWbj7+qUrcZUn5fEdTeUU3EVozYeQCNtcIjt3hsknBbIm4rG41pu9tQbp08nBAl9vwPyuI2puPncQBStRm3b3K09xrHQN/gGGjGNowNhCnJKa0oI2agQxOhq2Xc8868+u+/+ul/+oV//aVve38Kt8K+gEb7TS/EFOWkXOy2pNyYdSordfB8IfG0AFWNxwPh+vHLRtBxyvkWRhuv/0J18gx4GIDP45dTnqB9/HZMRRTkJ6tJcSrXG3QY6WKr1CdJCFoAFgi8J4rdKtkY2Wo9fHMzLIl21anWjWBS3gg5s1AITYlqhfRJ3DH4ALwasorZKqk3jqxrbfVZimG+VdvvW6onCaqMTUo/CcK/pYrIHJvpKul5Ck3VJ1DpM+0/yWgjGR4ic3zm82e+Kz6en/BtqHQ7+1V5RuSPQ0/r/Cl9Ij/JLOObqgiLyBx/d3U3Mu94T/UfA9qKKvUJW4bXH/dX1TP1xLPj/ooqHtehHcB/X5zQj/9o6iEf4WMkN4ICY5zyAe0hhoV2Q+PNmxfqgee5uJyvT076C0D0fyss9ckz0dzlQprsI4Ui+tYh6o1GglZxYlK+Bv+dvFyET3i34Kd80vtW6OSif2Lloopn/EyLhCJLFcf9hVZ+gmUi5UgoJsSTT3q/CJ39vZBInfb1iUn5UkiRyldCGtBiyGY1y06WlZM2fkX14SYrYQ83WQ57uMm1Xm6y1MtNrjS5ySJyk8FebrKIc8l2ZBv03gBBAEDQGY92aq0GvN9g2remODurZNImmZpTGPPPtdCXRfHbuL+Sli6ckIstCuG+CFeJIdyfayGz+lyLmoKCzDsDYDIuPdgc6OaY5+2WWyUl7FOdRyFpuKbqPOpahYuqxqO+rByPUjUetaQqHnUVF8JcUSWH3+6vCZwosinHpxR3+4sKc0eLD2Em//nQVQlYpZ8PUIBc/rD2zW8GZf4YcrK+Z5pIUCo6xNc6zNcOOr6GGUGHEOuUQf3zoONreDhkP8uKqtT7rTSmKNP4orLHmuxHOLmzog+lqRnO+VTLQq39QnMxh/CNY97nHCPDNvsrRra/YmQDzMg6TN5DpqCKcDbE3qpjTApXecCEM13l+XyO6dYvcM1hPoSkqnNM34ZHbTyEpOgck+Kd4j4kH2Ta3Ic7yFTvo+cg00Fa6rjoaPV8MQSr1lWg5Ng1zIdgUUCBSPNI49d1uwjJvgosj7/79tq08XjOWsDBYW5ZmHnlyNcHqx54eG+vy9u1Hg5xD4NVD4ipryNDfKlV1as6j6ztau3OBbxzvVUxzYgoLRLoyJ3TCCbkFUDqQxPyElwHGdkVIzsoCK1JeTskQvAq5iYw0UeKgAh2k6KbNkvpPWQc1dtgRzIeODKOVmJk2ABqE47lEOf3eeQvtjA9aLiFNV66OGP0etvw4ypn3eY47vZ07oHQlCKcEL5sPwwFw6hEmP11WULdlQiz34kwuFzhziKM/bwenE7xoOYgHR9jkY3BaxJEtTYdHeMnDLqT0IAHfx2HeDssi1qAg29eBlWycq365pWwtIWH+HhWjdkGTMp9jrG4GtZYb0SsF8DoEsMKsuAlv2LBS75jwV/030wWPNyfBQ/tkgUPNve//wno1aDIrHQ5XyPC85Xc8VnlzihnSeIo7xy+zZqWIpVhTuWjdFTDcD6QM2rSn4UVnVWlHqUTyhkemAEdjDgEot8LCs9xig/lY8bLI6PycePlis8oozZVtIlNtfmM8hgKkmN0RjkDWBtlLcunb6F25dcO/yp6DZQvP++wfHk+pCoAsyGdLO40jilnBIob3KUto7HhOyaV4fmliLQt33F8d5sHdQt7oPV6DRNWmnUfsfiWXwzTaWXser0a8QEQg0FLQnXvmPdNPx/AigHYOzw5QBspP7aJw1cnlgf68fisfmK5jRx+wJ5YzuyJ5WEu3OCXethKbjAEkNx8y91t93xouVM7tKx0O+8AIOI7eQe5V+Yyr3KXq36D4XfwjWPeb/gVw89iOxagSsOW4Yd0iG0tpNONN0Ji/KthsY/I3D5sCwBEDH8AlysxqmL4WVW5ATj1gOX2mflbl7ni9eF8gLj9ACMOd0DcvtPbgbDiQr2DWGd46o9ZfUZrHuuB5ws69d1xZ5ZDNaVHiM2TTFev83CToXUtJJS7wRa51bDoUCISzKGzzrl2bvIJkDXOpXMjYL6Ay+j4QlgM0ILdpx+oZ8t9oOf45zw2Q54wH1ImVhXrh/V93OhhaHRf/RjxAOb3OZCmIC0eIIq/isnK7PLgYeHQCSDq+aoCxoE0IX5XDXdPAz5dH7A9PHsx5GXyx+WLIec8wuFy8omLvNQLYT6CJoYwr7HGYUdVawNKOV2wg+0VQhNE7K/6fEqxAcp0StG1rx2cWgtBCoEtJnPjqp1L/VFxuN5cHYr1CTxhdVyfuJwfMSI/EHOFCzukLzMGX/OpFFAUx0blA/ownWA8zMAywImZTryTgAi6fadcD5IWGXkPpLRO+ggvY5cbKm542Hj6wOEiQSAMp9FqC+xolGUwYj18LvUGy+w3Azo3uBbkXRKkOBNq9JF8QCfT+ggZmyk+q4MUJsGqKPQG0nMdEUObBbGSjnzPhpR3ZC7Mo1iPg7T5XFm09XEc5IQc0W2YSKbbFGnZppjeNjkk2uSyADFTlEVErA2z8Fo28ys+Jd1Y9vloIrAbkWdoCkHi13bcB2cZuVnS7Nto+9SdJ7y1QD+mO04aTnh5M0Zmu7wdVHm/ESBSxfowLk3qcShZOK1H8N/Qpc8F2c+u0XpAlPNmNYCMdQw9gEfJ2rxqIdnrQiwLV6vDV8mziuXZDiUkRXm2GHDEDnOC5gqWbqaI7Mnl86Hb24xUjCSvCawvy6ZwEuVSd/MU8QBHrXj5Qh59guHX7Z2l7k6P1N2pS921MWJegzbXCElyDJYDeqDySCd52wrhEQngF1slAIyVxducNBrlcL+a1l/g0Qc8+po2ZYVzzKODXQdV14eqrgdrMjYZga/4ldj2iz7JEFcYDPUQq41kPUDZbHAaD3OweWWoYV4ZIpgbYI2rwxoXSfS+HmIzix6k8/FU1lZN6cGtg4+SZqgftNKHYOUHeWfa09qbtuc0d7GD2+pNtRObKTxsE/jv1igUsCm5bhxSuzQOBU94bMBd9OvGoUW/r3Ho5/2+xiGKCCMx8aJPflkSExf8IukxDs1XomJgZB4Z6RwZn/VzSUaiDk0PgSBiQfFjmwxBklPPPEreyt60NikXjcklVvhyaW3iQzphfcAvdcJg+Cn4uH/Mm3NCou2eTECc2SY+ZIZzSSViZmvNZ+vTUkkcG6yC9gIIhGnHfREU+oRFwYst4h8LLSIJZIBFRV9aJ0aQJDUnhtQdE57DClzfqVlrcAHtYzp30HwMtLXhwAhIkJPPFwG5LDAQmcp6RfCfTyYEkGy4KxR5yOQJE4xieLHh2viOM+TUoBSnNUDbOSY9Qn9aBSvJVfO1Gv7FVjOertXU8BOn4Us0iMTkXqxr+Bthr4YvJ+SrYSVIJuzXraSyIW4vPaAZTR+HrEb9kWpOOPSIFs8fk9db+T64XmtxEtIWMaqlFhHNl1pENK+08oPomG7lKdl9aKEWQCPEYjb7JuSFFqeXa5GYcp6tS7NsXXo9pOxxd0Iqv3ubTQToEBhgC1M2IW+FOjLJWawE9ErNNlFZHjbbJq6HjeMZvs7YUtUwUBThliaKjE0UA2SiAI6z2N+ctRuvRODMA6hdvIbe96u9FpbbQc8sXg82W1i+EZB9WTfGjkk9T0ySrJKhNFPJkhEl+cTyCta8siGdpeE/yD7mlTtBj3llI+gxr9wKeswr60GPeWUtaJhXVoNJ30M7SsO8shqw2WQH8wq9B0pqHd4oOuq1kFkCYVGlBL0aUjjGHVnRud+XRCbvSObWAZMEGeeIJb+F4GEZNHQY0Fp3JuQG260QSCUDaYAM+lvojZOo6gy6pAPZtI6m9QAnIhjoTengP0bert8KGzzytdDxyFthxSNfDffOI0NbDafikbdkXx75LdmXR67Like+ykXh1iVWR/YoVy0ex07Y3FTxyzXpnCkRf+IbEvPgo3vRKqB5uoXHhFhl1M+eMuB8JhGABsUCROQzGXA+kygZiC37Wq1Bwm9wprpVaRlm1PSZRGxX6ZrhPKJkOSu19iuykflNcnbBr8oq9Vu3+nBQ8c0+PpOAhdGIKEqAvckpHfDCVf6OwPO3cppEldPkD+FRB60gEZlRorrTJPAk2VGCPp2wKSVodMJek4A58ACHEOiIgwaczyRy8RJRQmrHbFjIaQcRckvHiaT6cr5Z2MJK7s+HIAewIE1vzYXNwP2Q3qIYOvgIT6LxEVFzxVRulrZ11LCLu5D0Fcdn9uZvUexZabNnxR/358Pi5CRJ99apWvlXJKP+MY+C+0CMzq3DxorTRZt9sux9sYwzYDf6ycugMQN5Mq175Irp7uwDkaSymPmwzH5Sh2lMYibBfs0fEt2VP6SSliIYc2tX/pDIumPChiuEoWGSU7XNkgmsxxtSRYQk2UcBPsKyCHRat7CleBRz1bo6O1weicflrzbGtVYbVwfH1fDpBI05BA2J78WWDt+wZybUbdjbQtXDIbbz0AQs/kTsoWnZIImaCLFciRC/0k+E+J55aLL+HpqBXXpoutXe/oUeu0a7x4EdcCZl3BpVWQbaFfCziSqodnUOBIY6SQJYmMVH12rM48vMfK7JTcEYZPao2wv6hmP02gsithfYsAwklfG2jlFrKWg4Pq39Sk6R9RzRBH+YWcDrLTX7Sp3vVZ/2LLUEtm5dJbUs9ZdavthfarlSk1pekiSJSyRhV6R1AO2rZJVFWSnB1mQgrU4fbiOeyO3jj/cBeAYsnqhE1mOQ9wFIsnV6QVYm48+xoLogm/q8tOLJPi1dSMc+MtnP19rPVwu1D+dDIR2fdeIJthmuxJPhSjyxhlLZE5sYOrVeh9ieVXtnH4mMmulGnu9LllLkmOeZb3/ll/5eeC7FhMOgQEubVv3X/VQYkWOuC2lT0/+6n3qIBjI2PmJDLTXhpg+o5gcocWWjeyqa1OgcZBw/ziMt62aF0JoVIjYrdDHaPRA1u0G+j11EQcOXE/RaAHbgacNNC0C0K55G/GAo7WCpdcpRz6zLZvVPKE9vjeO5BPZDaQRPBxoBAC5J/ZDlMi+h4NM2nh46THTuagvY3+Hanc1CzqEJudRiEUk2xKPAKeHdWuBJ15naD7JYNGI83TnMstIg/4ME7gDW/ugTh5Lhg8KGo3S3DkcJt5SBdqu/kwzUfnMiJLo9ERIh89+NWsWmDVGp8OLN5L+bQt4dX90V/00b2POxnrgIaf15d0RFye6IKuno74sef15Q8+fZ9sbLU+vPC9hpF1Q+AevPc4+KtN5cOn/eAX3ict7FxKppnlHWUalT9NnlFkfJR2dlgxPvbMQ0W6xFlWmIvXe7mP5sjZDPymr6L8jdTT+ppv/41tPnR0XSO/3Hcfoj+vHL+UEj8o5O8kEsUZhLnTSn/3hj+o9vOf2OHkr5PPrO05+rTX+uNv1P7XL67Wr6J7eePj8q2r3TP4nTP6xPXs4PGZEPJZKm3m5O/WRj6if7T50Mxrdq4PwtQYz9lmhaoKy0FzSkPTY+RUwMJdPBfSztBVbaG0Jprz2tD6Ffh3wwB6d1Z1oPsvkJnT+6i4k6M76Xvcm+GlyNdVGX6NZFX4num6KvRLdWK+Z2E6uQYloqrFW6yVezWpVxkzWZ7jeEk+mqCN6t7U+7EvFkMli5a/ymiCdBaWFD0IqolICvMiSsiKaIF1kRT9KH0gH02WAw5HKt/XK1cjS9AZzerwgr4sm66atpgdrq+EnNczPgPDeSjoro0Pi2LGS0qXAAJaE2UkcuOOfsYXLtSHvUxPWAMtnmHgT1oBo99BxfCXu9P872VElp6OBqY/6STlEzOdXrEPSxBmWVNSjgdUFFaKDqoR4XVIv2xXcHqua1WN3u3mN1g5rI5MiC7lopiUUnqwlmfWSkupG6CPsKR8E9MhANgujpiOMOkbI6mE4HMPHMjjG+lcCd7F3gTvYscIOwPdAQqV2o1GCKqTw6DZHalWPoERZVr7CoeoVF1TDa1ITF0AmLamtjjWRhMWBh8VpNWLxWCYtfflOFxTd+oqW+8717n9qd9tA6V4eC+s6fru+8qENb2IQ2HDLFod3k8Ma1kM1CYd6pZIh+gLiXwcgdBmNhkOI+WnZkNhhxkEeGy7RUYwxfZMayJHqdXByrUIllNLYt5Y5Nh3565A6KLRlAIYPjU5ybC2QPj+WMzpssZ+BWXWnIGVf6yxm/2F/OWKzJGZdIzlggOWNxs5yx0F/O+Jyox4NYOcN3DWHrG2EhOweFkJupHhZSO/WKBxVsoEYNHD7L4DAv+oeG5JKDQ5IqNmSu1n6uV86gqlOfqskZyVZyRqcnaKyPnNEbIeJThEhdOqhHiPgUIdJ8fHcRIg1ybgk2iNBpI0gkx5Lv0fbig18x/SGeY1QxfwwwHKqxcRf7pduV4RYdNYrPRg4Bq5Z9WXU/Fq3ugkX3d8e8IU66u+Mpsnk65l7RTyprWwvLDohC8imDNQY362C9GcSVFV9V5DaoD3LTyVHpuK9luUM9/hHFLPeOV7HcjzqO+xffTIab9Ge48S4ZbseymDYv7BAvLG7dbI0mvMA0ZbYPi9mWo3SYo4RbcRQdTesh5CZcSePN4xo48g2vzjU+2JdpfKgvz7jlVTzjOTqM7CHL+Ikax9Bc67AZEvFnXUSEXz9KchcBEGkVACF7AyAq6rzmVVv4p8kF9f4dwh9iDH+IY66PaFs/0xP9EOM8/v9V8EP8BoIfYhf8IPJIDxgFLAEPffz2//XXf651jsIU+Bmmvq8/2ylYgZiBJGYQIgWnIf7FukfwhlOSnYUowkLbh4BG1OMc0M3smMTLH29oiBEzCXcItAo3qM6DAjuoMYm2YxL2/CUbuY3PTKL9vWMS/dWtN+SzD3bvs6/83cyeeTknrWC+aXcqg1zNR+tt8tFSRECwM3Vv91jffabuUzOOuE854m7eTOLe7k/co10SdwxrWKmh8LuJADy92QV9jz3P2bT2QBrfytf8JpJ4BNHTdQp/ui+Ff0dfCn+8IvCnkMDb0qdN+j62ib6Pv0n0XVe7m9Pu6t2T99Gq8Whf6n7wP1P37yl1l/+Zur/Z1F0ydY8q0T1y1L39ZlL3qD91b+2SuqMillUYPEjon/1/iLijfwTTC1MyS2mSc6mCf14XlIoLM0jqllmo5bVcwDvztTvzoif3pW6N+7Ny0p8TlHt9xdetM2LSX/Y5+ya0WvarLNOUxNLLviTThBK6t8yK30h3uexPyhHqLqP3s4eAw2MWe0wumf15GHqGxY05mxgWGfm4LHXrmHcAVqGFBfpb4/4oJYafpWcj+Ey3HvP2Pem9ICnr/Mclg0wL4OkFoG4eF+PB2Vajcxm2M2q54levFJyk/lVcpBdrSelfwzsXa3du451LtdT26L5zazArixO0iro1Li/ISXlTwG/YsCKYkK/Afycm/VVBhYZWBKcypfX5x5I32qP0YjyV8/WpjMvXxaSf0T5lH45NgknycdUqezum0r8jaFTZpHxdEBiYry8se+YopyN9QrcAEOcE7cM6DmRR1FKkEnDV7qwScIkGKM2JSX+lHyjd6QtKKxaUwt2B0gqCknRbuyrI+4B1PmgbLuGwbsLnKrdEy7wkegooXBVUYcF9TY37HuxZ5uo0XIRVCybkBd4jxBHAKfoUbN+8iPUxl+8csBJTzM4hVC3VVmsW71yp3bkjeY2Lw+7ehuRVLu5z925JXufigd6VXof9fllWFRRb5rqsKii2zFVZVVBsmZuSqxq28EDDUfp5Q5b6fvq5Kkv9KP18RXJdRUY8UK/dkObwznrtzrIsbdpYanRNOmx4C1aJa+m3T/pX4PrghLwE12JCLsL11KS/ANd8Qr4IV40Vn3CSz1DeXOhpidMB59D7iizzCIYgS8poYbw85Zr7Q8bLR4yHoYH+g55ZlVRuLuBhL8myEJj9XIsxqYpBhk5FxfSyVSE3ybE6GJNzsmhj7SAT6hDLeRk5U7R123T+5OE808G4Py+fmU6Fzkw005W+kjG0uyBzQQ/zE3BdkPlJqqMTjPuLWCcMq+ycpF8ZkH78lfBuebqNRcOpNIb7dN7GLIp9U7FkmNTWpXJHG1ZU6pDOvE5gFbpwXCr4UKAHJ+QFSbXn5uAqxmWGe4I/IywDEyBxiqpI8UBHGCm+IbAwuZcPcmm/0K41rnJOq5wLHZqsLBIdmA1RFln2GV+HbHb7ER1iWSGY26woRuA6J7Sg0Q4GnklzIafgtkaXt5F5gqHEVBUPpnK0wMCm7If0ictF21b+gBd1aD4DOGt+xys5bXCow8e8/+5JcUFAn88U0nTPAk8/5j0H74/Jn8iH4PLj+SBcPpB34PJjeRcu78/bcHk2T3VouiV1X+tYXBBPikTLHAY4Js8LNaVHKOyYd0dQCarQZBPyGZ2QVI9zyb4gdAKyfVVCLwQ8459n1KT/Ezp0xaner0Mq3wjrV3AfhTR/7e8ue2Zf9rQO0SoWVLsWUtSi/4z2tNAy+2ENa5Ui9Rp0zqyM4qmnU6UzCqim5MKdEqd8zPMK6aabFCNPCgDPh1nS8vTIk95D2jNHS53gDdjdISq0c4TPnCPId+jXCJ92R+Bv06+k1CkBv5iQUUKldbnKjGcO1BAC381c/amREvDPzrff7AICS16VQtTKyVTyXq2+RWBXQ5BXH0dAOLC3nlxdGrfOnl1nWGWsdGirtefCFpIspK3psn1ljtqZ9ainpotyNV1UraaLsjVdBrSimi4U0z3al2BkRDBuCyIYG8IRjNmKYNwROuDqVK6oZMDFqcaqG1SbSlc3qDTVaHWDKlNl1Y15vOHKngbItid9oFt4hK0PhVqWRI8wvCYrMdkREKyEidaqh5V3TZYLrthINMqGvGKJrKkZd+4WC2RhbKt/GsdCtWkDLK/azX6d+QcsZlRVwT2KGgKiOm8Dfg63IZc20wXlwkhcJRZbv2jM1aobrZeq07VKdRkVqotosFm9vFrGg/Wq4WY/rEMHDWENGkKChlRSvDkGbzxs6ZvS6jHvoSeF0uqYdzTvwmB13obLkTyBy2g+CJeRvAOXLE9xPvkQ0UNPq8eEIurwcIndc89ILbqOWrQdtUgctRh01KLjqEXqKMBQRS0sema0yLwUhD+b0LOGLpnDKcFLsc0Coa4YVjWQVr3yKGq6ASjTfRBH6wBFKVGBFTFVUcEV4g8y1e83/NkQhD+6xEoAG95MIRyjV1TEMU8YCTrwT+r4XYc3oI3TGZPeudTTqU50Gw8toEhDTFXlIbKlz/i4TFpk78GClLoNUkRWDGKBSbu6WHMa7kwVXaypNSbfVZ1AFmNypBYamgrssuja7qdmdDd7D/U8VeDlaWSk0LOk3tQUh5uKigtjbWT+CTj4fi0cDj6tBeDgFI/eTM2YL/7SsmeGs6eprKWtJTchvapOpGBqMmV8KgoZTqMMIEvzH+aWba0DChvgUpLCHC1ZhqURUwHwI6WW2VkspZlLrN6DOh9O5oiWlKXozMdnZ2ePT1aJiNrw2tSkTKj8o607bfHOVqq25R8Fw6Qt/yi4UDD0BNiJE2UYQmtlOSGPErraGtcSTRaOgWdU9KW3ShlxfX5npPYOsmIWTDCu0qfakh3XRbozv3Npn7Bc21GPyh2cbuIu7llYqYkWmY/Trwz2+gcdrVMs/Zy3scBzHm6J3V3G7gSrgZssb6SB1Alj+WAdyzu6qwcJy1NAbwkXL0+10G1Cw+OlTrXUKIkDkFOpxfdhQVrknqlgXWhcniKYO1q6quSOTWCZ+7oQKMxT/H8FRFTROXRQElqQaLtbbXsrcbc6O8MSHWmsUwYzNVOjEU/XaMRpohHHtcDZm58HApEhgbjllbrdl0C0ccs+YAlEGwhEu4dAtJsEYsQRiKwiEIkjECM50ciEyUIKROADQATSikCkxIhTWtBbFVoDntSqzxNtqxWsx6Wol7TH6ob1oveWMozgWgH9reBZcDH7424JjKKJp9PpoE4pgHoCp/myx/Nsu0k+5Sb5LkcFjzMVfMpRwfO0H0gGUyKDVLjWkcHTPWSQq51XdHDV6yGEa16DEoYV1tnpvssSQqqlzkVidw1oKHV0G2SrRgCTEEjYmtdDw2710DCM5gmJg9SJ2jOOqH2Afh3BCvU/4OStTcXzUU9b90iK2fDKPAFCJ/oRusG6GNPd5NOsBJq0Tuq6elCnROoE2sjb9Ep7TKoi44KhfwpgcE6gMDKLq/iyINmI0OoOIsl1AUtbnCDE2cB7V+neSbp3C++9RPcep3sIVi8KuyuCgPZi7QYC7aXajbFSc+PjbIBCzD5hSRihP6CjvCBAtwCuWwxROdKELhFDY1YXbpxME8VksRpBzBwtXTHTEW42UhYW8TwkfjWsoQrIxT5se7rM2yTunS58KqH6lNWefaLiOqn3k9T6AWjN/rXgvL/+uVTyJqU6o4c/SjuDNr5UOZZzQdR4ziXRw3N4cSue82J1A612m8ScRHFVVy3YGlygp0eYm3iPbO7FSbp3A++R1b14fJL3wp8XxalJ+V4iQycchTrpKnA/TiM4NemUIRrIAGlHSanb6FQams5TvW86b9tB4lI8q0emiZ9dEY6fLYi60LsoahxtXhBLQ5sdMYI5UZrrV9kKJdCfwHyoh7GJcT+a9NeszXXKEvo2ZmbG089E5296jp9RnVyi9bBCTOx/jDnas0ziwxqJDwmSQ/jemgAaL9AX5mg4znER76zX7lwRzPjcnSW8s+HuhLTx64JKs9dp/Y/RsiFvq8znOOencbVCWzl/06LIEVgUWyQ+nEYDYas0vzfrisSHeACai8QLLhrX4IMvCrc2FwUvzovCMUBbD76pB9jVIf5duXdwXRyA1qnQldodolWV46PtVqdnbS4KJxJUTiVcmjkx6T8t/xIhepsZ+jiGym4SB9rT6X7dNr/2b7+MYMIbHucnqjdbDZXKL81PX64t4Serf3pBrEh3A2QJAFaikzOfnJ2d3UBYS2g17xWAJeQS2AxXOt0MUQLdcoIYmaXdvp70V0S1JBEtiZxOfS3P/PZX/s7v/adPf2PpdxiQXsUOVkSZXZJanJkDLBfovhQgP6+JOrAxgO8O5Bz2kZzPWJOwHBQSA+Mq9NK7ZzC4CeTam8BNA8Sfqq+ZfBQR0K1Z4tZMIZszf6OCHGn+6uUaJr6IC7hmFxAjG8SkvMALiLvUA2rtXdEzHm61fPNurXjxFqrFc7DCoulGr/B6y+sRb9drNzJeJfwn6pF1CdykV9O3u7vQkVpJFCcjIK3GKK0aYVr2R2R/JPwjbxuRp0bEuYdJXVOPZAH6VdnN2zadK4kZbeOd+xDGZ2x+JSXpxbOvyOoVj9NC38V0UBIftJK4AEk8AOn7mui1IIi+FoQl4aTtZfEDL2TDdUmUeDplWZRoWw8f9My6RNs6C9ipGSvzjKXrIZCuR/q6L4esQ0WnlXw9gvZcLUjETsZkVAya5Lm8Db9V7hN8JLnQg0DrFayJUc+jlX1D4M/Yn9KhTsqii2LlNOy0Scocy7TjWwAikd6nu0aRCH5Gz12Gm8mYTAYDTytY+2IAI3OcfT3GxViSleF/QxTD1vKflcUhPeBeVuP+kmRZWuXDCJT5fq1A9i8O4A5kn/G1QvH0QPYjWiGx3w/dzgl4Y0zOi2JUD9etoGpMLojiIPkPLop8lBZAH4T/F0X2Q3oUhIiD7MBSenRCXhda6QMT8hos0Vsn5Mtw/fpfWfYm5DL8VBPyNbjKCfkqX2/y9RW4zv4CvLoCvSiA+wl5i34vw+91eMV/wnsJ9mJsQl6RWp1ZnJ2dzSb9RcmOC41+ZuxyXtL7F+DqoStandHoVsLnd/jTG/SNDfjGGt+7QffW4d4q3AO2qpCJXfC1gDW/IiZZvoWVcfKIMq0JuQRoPSYvCDWlDxCSj8kliaXgEYvqiKiIntZ8Q8dh30SF4gpRFVS101qBWjWqDxzzPGC3ntnf67pUHOGEGoQiay72MibHEJDH5FHYNc5KDe/PctSAhgZVMBf3cE1WWgr1vySJbg9X3wZihW1hmVwPCsmQAvx0d+4I7tTesRAMG4H8tALZDVFmD5EzBP4jJidonVfwHnEdUmPRUaWY75AWi52/vziF3ipUupy2ddItEmk3MDc2CO6r5oVbl8BSK1JNyY0lnvCO6wF9qI6FEaAso/1+PcwIAzQy+/8xDg8wDo/JI3QZtdAxRv8fxf9PXFZTeh/roED8i/BcKpIgju0WyNuVHqnMBdnQI5U5Lxt6pDKv1xRLtl2i7tZvJIDXFkhEr1UdjbWeM86CPO3lAj0UqlLGPeZjQAt124iZoo0eMcdofWSRsJb1uZpkRofnHBWFyc+YZMYkfy5v7/YTPsB4wgDeBuLc1gK7CLXQ7bOpt21PIfQUUk9VIQeabd5l0v/Fzy975gix/xDpbtFmg8z7Hb2mqAz697YohB58j+4+P62mzGAuYOZCD747DZtdhqA06cGZ7M9UvaDdm1xaHSDxiZzSXeA1CnSFH6fLB7TSCYhn+N/70R0d0RHmrjn+XNExf/nSN/+jeE8a6K5ZEc8VofGeTgPdMfNw/93G/zDMXn2s0htDDSJqoEUMYmoIPetOWXS2+qZW5ros80Gu/ZPIKZ/s34WgQqntcanyEyAIjuYn4aLzx+Eylp/Sg0BI22RkBnAbBGiwMKv0qUl/TWqlH5/0VyURwRW4npiUV+EqMKBLmdNlIXTmiAfjoMhuCi11WBZAZ8/sI7NDZdVS4/6GcCYtJFFO+h8riYq5G8ebRBINXKoWFCuICi3IpjFbgcTUsGYrEKrcnWVRGgx3EcD6bKzOCrpJEwMikG4DZ2jrzjl0D8T4f94B5tuZkB+IiXpm/0DQcM5UFLjm4Z+TNRc/sMAzEVNeIlYAi799ddkzD2SgxagxXN8xeU0WYuY9KH/giuokexfdzwWzN9Tyniu11An8yL7mH4Kd0Uk5Ia9J3XXhB16Nh9D6rsmGMqHMqmwoE46nWGXCsRSrUDiOgjndLXaTUTB1cndak7tTK3dHSQtrcpMQPFtjVcuyuddI5u8IovOA1Xk75vEQC3PjX64x0dEmvyNz2aboglh3sp+8u6GnfqLi7Kd9D2hJSIrO8qVlz+Tmwi8te9nPwpOs0jPWJWgVWKn5CioRNfl+EW/U5PsFVjMqcR5v1OT7OUG2VSffh/hr9o9EodgymhBUIUFBBoubrPMFhwpQgA45IhvOx7TpfGxXFnlYH1lzP2FEbVvLuotqTlBeO3djVmDAQM0zhRZ6WfN8aYm/Pkhko0ibTp+QHPvo69vwSlT4p2aKEAhcm9C8WzOrztXNqh8lq+oHdail+Q3A8SPZ0ximQNEK7yKLAfts9Uwhj3q4GG0DU5tOPaOsHlx0jfhwMajbuq0H330Yw1bV+w4Xg4D5eVsPmk9/4S8HyFUyYFdYJjuakCNaEv+ZkKMUoOlNSAydl4AFI7GWOtNtXKLsK4J0mjZyWiziz2ZXoyh8B3m8eWF2dvajZ1NBan3bug0QIQg9YFeOor/uaUBZMYazAmpVSFou6RiDROsFb4d0wrr93wrr9v/jDT+lJEemrv6fmql7KSXbs49XN8goddreSHG5YZYS+MGy0PKMnPSvCbKTTDkS2HQXjjbdhWyTWe91KNaNNBFb/Lb2GaIk6OjOZmFQOuokWYCUFG1RM4cU/E/UtI1IMilS06N37yGvqueg+e4oOiQCPFbQ9FX2t5asVtaS9R9kawmFizq3JIoJAeitiMNLom4t6bA7MmaDCUZODGyRx23KZvEuPN2pSOCAjrXnoqzYYtKlUKuMTGYi96iqKqptRj2PEfQYJqfZqVFgRd8QUyqT4ghI0B6TkR5E5K5MJe26qWSsLIatMYfUriFcCA3c+Jliv7WQjJZ6uK6Z6Uk/Q79pHqJAmg87nTIrs/eCrgbt8fL+esyWGpPPqik9bHWjEdKVskpL43Aw5OqFB5JZGMdEQ9S4/wFHQ1TNJi9JJ3M2dclqtQZUlHo/oRY+qn8DtCNOpZfAfne1Z7UjWN0+MSdtetEDncajkESKLOHeJaFxSHGNYU2nEzvkwa4pXM4yKmKOc0yov2QX/dUKZ8mewlmyXjhrsw5JAaVCd4GjeqzgebpLCt7WI68peJmLzETrX2hGn8sHyfo3TNY/gOWQrH/rXolWNYbpDPEbfmEVVNR1BGgYHnq0Ab5p6ADfHuk1+RE7v/ygnXae2LHmh+p4MIQEekx6mzCgiwGoxf090bi6MhY+U4xaTIhK3e3BBI8wQRMm5CDygqKUvZcMgnkB11my+C2KMvt1CfIQ6psEyHDzn5PVz93QiT6SvUJIooltLIiyOKIP1LH1AI50Hs0LlwTh0qJgDDpSH+e8QKzG1V797LJnHsGPZW+j+XVNehZ3ZbTU+yuiqfR+/JXBWz+WjyA+5/sQjXOfUme/AcQcrRCTDLwLqGFeIedV1w1+URR4lEvfT+cQMnS3xTSaIzrXoxoX+dnifhyo1mPyyGDomTTv6iMA+/dbgoOnPUYZ/63tSNUqHOpDakoPERBP64P18pODyPjIdFQnShjAyXN3kZk49REmCqXe56bv4y+qN8lkA4aAKaR2MQYzyiYdEECAM+hwxozOmFEy6XgmmWE8NdlMnSiomYoo7EARhmu0J3WIP2BDPoUeLIsQaAR8VHs63IpG1KhR2EONwq2+XTsM4c7YqCq6V9EZG1U7Y6PojA0jD0D4K7/EwjgCdFpHGSqfkVWOw5AchyibwQzMS59wQXqeufIJ50VUGAGCHO4SKP0/NTs7u+5Nyme10t6EhAGcYgbPOg6RjEdL7WVnYXNP5QS0j8K8nysLtHs/UzN7V/KmIKW8kjcVcJ1yQp4ikVnVgt0Y9FzAGsFlFR0nqa/j1f9RJV4hMDJKxrrjRMROTUTsOI+ajl1IL+nHZKs/iopDOO5H+YkfZOGPRD8+iYhCnT6RfU1g2cs/TrPKfk3E9/IA03QaINISbyaN5sxnyH0U/bEGDYOQ/8dqXtmvwawAx2My3jT/TKj5TG03aoVYpsKLnNSK+RyJ4tdO223HGNo9jKFdZwy1s3ksTTujZ8iSn7Tq6LYftNJqo8MR+maLjg22GgeKKv07qYUrkPId9irfIYk40ymePEZHT0hLkv3kPRxoQAMNYsxmvc2A8HlWfz7SO+Aj9qmy+hn8rI6SRtVCKG4yYl1NIWlsIP+5L0v7JuUf3wYY+h+9dB1VhzjfSC9WuOlgxnS7yJFd5D+Cw5vCHd6817TX4wEEZlW6gHNF7Lk1JlcEpjw4XeoWoDrTh5Y5Djdu1W6MlZRZwt3QJSWWcDdsTgd7Q7fG/RUx6WdA+A83uruv0dcDzY6g3arYIqlJ/0wUlNTkn4s02H1Sky9g3IjNlnFlU7aMxU3ZMhaaY5zfW7aMaVzw3abL0A+pKf0Wd6L0/p2BoAbwRwGw7ieogsnmakprfPdBNaUL/PUIHtJBWHgZq2m3xuQyldF+q5Hn6MZV+2SJnrTMok+6KmrBmA1mQOGPK36Bb17CdLgtrn89QI9yArpFX3ul+QPvCc8zIscUESi+XvFdGpVFvzR3Fpc9I7NXJH3ijpi+2088Qelm+vWe/StO0pJWmV28Cbnhw+/RPKDUGcc8XuKIwow8PBUMF8z/BYRkgB6jp00aURbkZhoD2bk0j3LS55ZZ86scMDbPxnW/lnUGRnBi0l/1MTmJvOoTfL7i2pGmYbPe0Og4n86Y94Kc8L7q26lMyJd9yrSy5POE4cEIQh4AzH+Ju+nnnDLGe8K77eO0tKCJCTsxEdNkRGkKShAg6rNUWsyY1vuojYmyrLfVmd/+1a/93M++9o2//3sYYUnqTLO5sM3l5ubmb90mbQsel9CKNtHTQXajCRm8JLnnrKotNPHQ5u7TgfoYRvQ9lw9rbxpTkdyh0LIhQjcyNbXMb4gyB2B5QZZ5bLw8QYTD5Fv7AAA8uCAA7EPAg5sAd/sY0iK44wEAPoqB+jTifQhyx7xZmXuc+0k0xq+9J7xXlG5pMSFXlAPWFVWaiz8PqKATPVAWg+YaEqLsQAMrVlTehu5fUWSUjCjuoU0DbvOA2zjgNg8YrZW8Ge3akAko1tRmiH1R9IFYRRB7gSnqi6IXYuehVQNUPytonhcEYQdNve0AsI0A2GZYaNcBsF0DwDZDkHwftTF+lvW2KjzzH1+oae2yNN95oTp3B416ehO2N7m5NwuP+JjabWXUR4FY6EGTlQXI22cG/4fixGV94kz4o4eNmOkGIpC+QvgA5tDWg2a0zH48ieKtFwLn7rZLMBVlWGmb3/2fsFToK5a2BbT/orb/23f3hOstDx70zGJrpvCOetvN8I39GVJFzkhemgFamm6axJ22UyG6wN1mWzDDT30cD1x+HYnwbAtNv/DzfAvLYMMGz7WIMt4OuZVnNsLSfA5adjB2LDtArdMBHcAvaHjMux1mvyaTR2O8532qNeG1dWASaH+hZYEZP5ULSslTfQuVuAmpkrdWQ/3b8MEBN1Q19YY6Ho93O1Eqnqc5tZZNTpHdzyuWPqw9cy2wX7cxfp72xuX5FiD0UkDDE6QPnpiUKhmr5vX3YV7JvZrXW+5+XhnPa7Q+L7Rqzm03rdk+03pL3PjE/wpTCxswgv0ubNfvfP9+baKQEPOHwK/oQc/MclgEfo8OKSo5pTvHPDY0cxwZ5h/B/BuIt0qn2QA9TmP4D0ig5KBCT6eW1XSAkipspiU1lLYhGblRLCkoH4is96K0nDH++6iNUVm2qRVmOp3glopb4vJRwhDsQdgeZJ8emHjiY6Q7HJylI2TmNsXSmHxmGlWeNcz6lKd4kgIWCp9j2aV0WtksLbVVakyWT1FE7vO0RvxNYMfwpVRoocUx7/1PeO+FX2Py2Qn5tDvAsuKVZvGFZc9EzUPu91Nj2XgRGI3xrUpq1WL7ruKj12PQ/THvvdk/wxGcTgMDc4yMwERWOjKjz5V5F00CufR5mlFtmpGdZgTTjOrTjGiam2YpdztLOSZdCIEdud9vlpJnKZuzDLaaZYjG50Lq7jlQTwymF0Nzs06Ndy77Gr4XUTVCPBvOZ23sEa+pGZ4BnvIZ8/70hGfcXJ5CDyWfKLIndOgoF/Qk3dmgZwFnP6AFIOpTCR9jdW2q1yZlQk/v7K7LD3KXMYUtVofbqcVIvcFT0GCMGiSxPdw7Unsf3krgrVHdwYP/cLeDxMXg2awOd2dmMeMU0/aj2jNXtiNWi32I1UMVbV8BAjhyr2j7g7um7Tfhu8FWPAtp8C21zbTW1eZpPdik7d+ET6Ra0TJb8lyxxVx75s5239jo842iWrpvfxwr2t6jpdN3v3SjPC+9aemubTetpT7T0o2lozMCR2odrmzX4fKOHZrvwpgHLWO0drBqL+7XHqofW35jtc83Hqj2Yv78vdyL++7lXsxtN63ZPtO6b4e9WNiuw/kdOzQ/B2s1sPVeHAaSst03Fvt840i1F3/3/L0UFw/dU5Lib0dS/M3TOtRcul8+z2C8BUkZBZKy3Tc2+nzjYLV0//s9XboDu166f3EeJYEtNYh9gJ7bzWu1z7z2V/P6zfOYXMApcenwG5mYDgx8p6L3bfP/3NOFG9r1wv30J4DukAOeVm7V20yN5XbUWG5euaEm1P0MfKSrlblhP3Jz80dWtvvI8s4f+dufYOzRZTZU63dtu35Xd+73yidIwzLrdvC3Ng/+1nYfWd/5I1/4BMPva/Yjtzd/5M52H9no+5EHPbPu1fU3DOaTckqHpL9JlMkxwhpE9hEMqQaRXeqRbIAeY9j1CGheEYb5wABHrG4Skv4GzXREDSPbMIrp5Yj1N4mCv+tF6WjGpO+jNqabZb2titD88ifcUffQhKW5Xv2PjXp6E7Y3ubk3q8vhY9bljpdagsKBe1FwIW1MBobqHPw6NSHHMKD+NCHQo1ZaHivNL88SJxr3PeutzjBp4PFU1F77J/waObit55vftGqjTTBThE78Dp1gfQq2+BkWv0lviFBjGQMF41HWWKJUGo+eckoyp4lkZTUDVkbeMeENuiligmObTmWHcUz1VwPCXjUAA8RCChAjNSCmLtc9pwCQhLEdZZ7tQ5l7sOflTxBXG/enmkaQ7fqd37nff/kJtt/csVg5KzZh5ZXtPrK440e0MudFmY1axpIBvd2uy6U+XQ5WjOQmjPnAvWIkA7tmJL/HFKxmiJpOU1if7ajWYh+qVbOd/sE9nUyyh8mMNgDqltiOzIvNc0liK1LnHRs6mqd0fiZ0RDlC57mc0hERZeGMaoKIsmCiLJAoCybKgogyGrVEgyhHRJSFM6oJtDMJtjOJulFN1Ixqgk1i6B6DB1GW9bY68+1f/Td/8Euf/8Z1co/hWw3LWtWNsN3Izd1YaiysZU1O6Q4d4hEcPxzqjk61yPbHmkxZ6mNoYaoCKPC0D57ZoFIKkVv/iClOYLyYzgTpJs25s91WbvTfyjqI/LWfYkk6YpqeMU2vkbXtIH+2D+T3fOLvwScOWP3GBmRmBy12dYDEbfeN+T7fiCvs+gr0f/BeYVd719j1mz9Ffo1tzOIL2+3OfJ/daVfm644zX3//I5pvMUT1wZDf+tV/R9ZrUbNe7wm3KlRiSUf0xSfZi0/CGfLETvh0ZbsdW+y/Y3Wg+BYAxbClkTbmuKmGbPeJpZ0/8fpPsT3tFH/iqc1KyHafWN75E5/6JH2iwQVboIVs1/Fqn46jCk//KnTavld4Gu4aT916bY2np7eZ1fHNkwqbq/U3YWL7LOJatG1uiLfNF6b6fsGxWQtEeedBz0yVP7B0wHmxxCYvVnev9AB1E91xTiygB8fp2B1qCTmWRTmVE1tOPT1ivouFDHVEHqyIVyjCiUb8wch5sKKGByukxMtRdgg/BHpKPqI75D9KzWiZC90xo8+Z0Zk89ff0ETsn9w0fT97mAvqfKVLnwQl1RLNhF07ojouFqLAQWXCk8BSAlaCoWPuQJQ8HfPQigKTWIQJivIOk0nVtuzUXSZeIbWimZhrEdW07LHhmRzxzeszWhO/Wdl/4wI5fuAqY3Nrshr6zXbcf3KlbPAZSqUYKSNV2dHS2Dx0NKjr6j2CQh+8VHfXvno5ubdeNtpmVt3lS/hZ0tK9Vl88abv2BrO8HttRbVNOYJCpjUg8ZjWpkNLLUMAIyGjXJaNRjTNozGY0tEUw2E8EiNP/qkzVjUlSaf/vJKh0nWivqpDV8Y2qMcmqMYtlrH2g0isQuRYeaasRBaeWIQ52wNMUuVRO76IjX2DYbqzdvLIbdrmznb13u4289HG8OO4J7ZMY+1OfpQfd0tM/TA+7p/j5P97mnI32eDrunQ32eDrqnWcwoHOLxDMJNOgLAQBoSkIYMpCECachAGtaANGwCqYPOEKEzZIgI69AZ1qAzZDhCUyc86GZZb6tCmI3ztayeYWn+U/U/NrK9GQU6NgAwH613MBoyjPaOiGEUH1Mv37v4uM1/GPdhxEy34yrEdUBkwsH1WUbH3e3w/4BL9gDBC82/+Gl0xbzCVDzt4BFmEha83XT3RK03tP1uDssLmuQ8qKhtUJr/e5YcDWMysSTXkto0abz52iw7V/o6V6f5PKWVVUlnFQjRQa4QpoMqxOoYh1h1alE1HRtVQ2memiFWHQ6NfRRQfj7chPLmtcCV/HPYPwec7MSkfDVITsX8ToMrmltBkx16lod+K6hW8NUgeXzvW/yPfxpDJjGO3i3VvdhloJh2iKtNnn2j4tmrYbXJW/nF0LRZve52egsPV9qtv44cNXtrDfLG5GoIW3/MuxFaRpomjzAj7dQYacfyww4wUtzy1DFSu+UY03lrM5U3r4ebt3w9oC2/HVK7tVq72quT/irDxOthL0zcCbeAid8PqwW/HSZje4eJzwNM7EeYuOdQIe8WKvqh/kB/gOiL+mjlr16+/sJ2wSXpYOPlr8HLI1a3xZPRDVc3CAVLfbC939ZfCd3Wj+1q60EoR2AlUM3+mSQGnL6lvhPn0mMESnuHlIdiu8CYUZfOl6k9Q8/PAPSMMvR8L+Fnvck6Xq1Yx3pQms/8j6QmafGG98u/m/2CUR3zXg2q/RL3dr+qwbweNgZzO8TBnNg74r/+KbRSf68Rf72J+K9WiL9eZwd9ka6Gzut13H+KX37Z2wKf10NOwfDWNwgND+0EDSfr0IDY+2oNex9sQsMjRA32jr3F3rf7Jmy3/p5v93yrsd0vttyezLe2p/ODjTd3EPH2up8P7rSfJ2r7CXM55r3YqvYzb+7nW5OH39h+6r3v56/Cfg59n6Dv9vu5vjPfHupB3SbDfuQN7nq+064f3xaLH2ju+jidFdn7rt+/913/5U9hVPb3764P3c2uD39Pd/2BnXb9sW13/b7mro8RL9j7rh/Z+64vfur7XEYfvhsZfaTxMp812UpG39d4mc+bgLiQHX6D4HHfTuDxtm0F88NN8Hg4OfrGwOPQ3sHj059iy833K3jsuxvw2N94+Wdhx9tbgseB/rB0b1W4wztByrFtIeVgYyfSB98o+xjdO6R8Z+77nH0cuBv2Mdp4eXtCsufNP7jT5j+6LRc50CQTD9E5ob1v/v6dhjOOLqxdWiXvBM4qiZLsrV2uz3q1Pni+Y6G1u3aoHdSQag/fG93j9w7s0XS3f4/fG9nj94b32G5wj+Mc2OP3unv8XrLH78V7hJf2HscZ7XGcrT2OM9jjONUex+nv8Xtib9/byZA1vNMLQzu9MLjTC9lOLwzs9EJ3pxfSnV5IYvJ+p+R0SK3TIWXHd+qc8GndA6F0OmNGyF2emn3WXV61KqT59U9XJzhMWpqb9f+j0ny9+h87eUNxj8R4FR5/yA7V4iH2wGGFZaDCeBXj9JqMMyAP+3Zr28GskuhW3HPWg8TmLEg35ywoOuY7VanWjglK83r1Pzbq6e3uMiDwmuo0u2FlKuVkgrzDXncS3dLpFIbAoWOSnFnVEaOOPSnUieE/lt9kzZVlA11kjw/vmDfXesJ7pSZ0rFTS2wpIb3MoZiFkCJcbgHrwG2/+zhwqa4KTA4geUU81Xv7dORQKufwaHoCpv9yqZKwVlLFeqclYkYHlSSnoDWD76HNlPqKFOVpi0JukzDfV8gi7PAKWR9SXR3DQ26bVkXezOiliZc/qqH6rk/LqpD2rE/RbHS5Go9Oe1Ym2W502LEhZpHoEky1oz1wJS4SKKlTPG5NXQuxmPQC0tni4HqTtJh4qQtctBFhan62l1zBuKBeM07skGathD9O7eybrV7Ebf+hV4SSw+4EOjcdRMp65GvaXsOVLIQ367jkntFoOK/JlW11ttLodQqtrPOSXsNUitroabi3Nv4StFlyMQUUqXwsaU3g1AFKJsUp4FmotaMYq+asBxiptPgtlw38G+gQHdV1wUNrnaeKexn2edtzTdp+nkXva6vM0dE+DPk+Ve+r3eSrdU2F/4Vq3yqMe58xSd5szC2EKxtzI4/VfwTgbd/5rGG/9zrjv6UGjgdBn/w3lTqM0Xv8ve28fHMl1Hwa+j+6eHvQ00NjFiiCBJV+3KGk24ZIrmZpZfpSChxLITYWJKZeqwiSqO/pOfzCzKoXc4umYKkWC4q0Ecng2dKZjKF6nQHvjhc4rC0poBaqS64bSSoLstQX51jZ0pitQHe+8Out8KxfPB5XXx6vfx+t+PRjsYj9EyjTJqh1MT7+v3/t9/37v9/7P/wH4SfaHZX27YMZokzDVaat7JrG6rK9GVeXuFxuyqv93HgtTlz+dC6uf+mFZW64f9uzXnkXmNc5cZrzkMm7kBpY/cte6cvW3fXhrCBY/yjDfslPW3seBvQGYjY3bO3vZFNesS7VpYKGSXbpd3tktdCo7ap0rxq3v3rg/ZE4I3bXd26wOaaPddmFNTADluTD7XcWFU1NvmetBz/7759FnNU676k6vljUmqzfNuO1L3PQnHDSUaWDtqr2U25sPy3J7iE8Xgx5OfXizjNe3NVCkb3uPxf0uVe0QHAsEjvWAag2CxGi01YJMlZW5MPvxOrpe0QKpY0VoROIJnAbVB3KwuERVKadNg48q/NMd4OJX2liSFl7p8Suq/oq9t5cd93Frdcj6zg8pt7nC6zuniV772O456bd7SfjtnsV2a9zu/QTOxT0Ot1ANh+2W99huqWqH29AnuFzSsA2vaN6Gvk7VtVVI/StRL5FqRc4bDYt2M/Mm01Xvh1/ncd5cE2novLEm0rZ200ZMxZ06r/1G9RKo5zRX3uASqFbmMqFD5LiQdUGldb9Uq5yrXtBdPUMLpmKYy5rr1M4r1I+qIrszeBEjlfv817/QF/aTjGzZ3UTWeG8wFcC8QKWB61V6l3XXMVcsq16virygBssiz6td6iJvS3vpF/GyFapDeupUX9hnf6kvsl/B4szc8oKsLfW85AXAlNdUHrr6u4pWPkl1sMs6wVgKe32wFHaDbleiMthAgrlyRHi1AuSurjWXaN+lIHuDpIg/RhvHODI4RrYih7a/a7D9vXQNR4Pc++jZ5YLZDRJdXKN4grd+IwSZHo4lduPX+8J2qRiuXfhcX9iXP8dgfmFDq1s/3vgY33Y+cqfI/hSUZEC00Ijsi/CFbjWlP2XPhNmDZTrux9WMGWmrVb50dcQe6ZkRYO+82yO2DQ/Wqgdm5JBexQt3RgDd8nH4PC/zffDDhswPwvdNmY/B50syz+D5lsxvh+8vKDzn01dABjCuKg7A55rKXlR4c64R2TdcWtbIYRFT2dqRw6JZSFs8HMzYEYT0X4qHU8VdNbMv89rwLlkBwGjijYRG2X6zZ5rZh7FD1VZ96OcAGlSHxblmHpavfF15v6d4yeAvN2Ge6rD4epMKVqh7xFebD8jlZtW6rdabeQM+zzdzDar5PXK5+YBITWTH0Lggld1O8PU4kQUh0HEnhkJS6LGAazS7r6tB/7hqEnVo5fHRsYEyo2Mw540YFgMwhDluAADnghngizbg0h6HxbdiAGAwY0fpEUJQ2XVs21fwyvmYYBPjtfTrcQEbA92oj1t8oY9dp+I2mMxTeYNnpg6LF+MitHcBPoX2r8RDwNNTaZt5jAIfbFIabo23G9p8EYc7LNag11TgXIOE1/qqfKqArqjL4uE0MMqucmsbQLtVmk14mx2Fr5+P4bXwNjfUJr68jlu8GRfCHng4lUbZl+muZkCULfoTLe6X4iJEF4XdjnsGCPzUfF9Ykf0zuhcKnobeU4M6UEg3BNj9tFIc7OW4o0424e9D6qW4qy7HRoHA2KZKJNtxEQO6CUCtv4ph6q/GNnv6RI53e8438yl4djnOQxx5dryr+01eUDP7qltQbA8AcNQ94o+xk//idbIVUycvxQ7bsyfLzgCV7QrjDLy1wiSnDovPxLB9YEEAEPEEm7JrTccKEJGVXfUeALLYleoBDL/cBJyeSBi7TWQTuh5qGSeyH8/5EL0EFREg9VgkHffmvsRmCR3GkPi+iQfeN9JmHyFqy3pmih4zjbWQOpZr1LE8nDqeH04dSx51nIpzbZRdJOpYiosGYKLMQ6QQpoNFphD69ilAOyAHsIDkU7nm8jLC3vVQMGMzo1N9m2nQWAtxzzR4Rz4Z58iEFpA0pBF5aPFMlp5L66zC8AA2MwLwv3GbUXbe62qeZqRgZfD9EzFRE4+6ja8SlZxswqhtNQ9cTbXV5Zi43XaFbIDHpwC3dUctwWfYUc818QoPINvAzSl6COn29/8lFnf+Jk4bgNckIlr81b6wMvtndLHrgY5abNLaiKDQc4NdaL8L5brQXhdIU4tNnGEaujcazNv5B6TreWLt8LsNThSyvPA+7jkHIVjZUVKC5SlaPTkuL8d5jD8e0gtIo0ir0/Byg8ANyAAg3m4gyFFi/KDBKBDDrj+cRg7wlxrVHn2/Qdt9qUHIyfuNkZ2du3vRa3mxUd/d7zb2srshr0d6u5tqUFnpXsKduxfssnv+dsuh2y132+6wuumj3KiHUrD17H7ahPVmz3XZBT73O8C4vtkEO9SxOnsev5ZSOQagKWAivwAviwfEzzdLMi+RN2TklYC8CXT987hZv9B0/R4WzyGYYJeXml290UT2bi80kfoX8JphHJ3woJgCVJqajRfO5NJMnclDWEczgV0BrrTRpGs1P9csOZx4QHy2Sb+uNmnOZ5tGzWbEoc30GTA4VpqltvJVp61UnP+rTVJVKs6/zuKD9ZzlkvPbP4n9of93ntjFmIZ+mYXUVkxT2ITnW41KSGw1SiHxncYQIXEpHhASF+MBIbEV14TEZgxCYv9OIbEZE+u/upCgN8cTqwDOswLgjAoRiqN86nrlxih0stlwcoOY+WajlByAUpIlx7cbpeSQnuTYaFSS40IDUXW9gbiz0ShaLI4AnUgk7KLzqcNineEuQYCUcuYbDV/fejiVsyqfhnlLkCt5gEZxKzEtmk2/0TMt3sgXG8Sl+g2ULTbgt5PEyFTYJn9FdydoYZLYF/RqWB/n35Vd8/pdI1aEqtkXG/TiaI4nulsVN2pdnRsFg7KmRq7EGoiH56PE1vP9Doqwfk80RsdHlZBYErnkTagEIg8yysr7xXNNqpn8ws/0hW3Q3cXVCwJfqHGzpV/FS17+GbIwSRfFOaHsjxn6Y9L10+UYc6n2OWrVJbFCAEEaExvyeGmrkmohv8FAZUkFMqcunizhKb9Gzbdjaq7Lbo/6vWItv1Ns4SzxPj3XzGPAMSsSZCyr3s6vEiYlqFOpHAUXKOSNPIVHesakiEkaMRYwzGjE2qaJ59LEw9MVr9fPNJy+VCeIFSYIjSiGPT2UjgN6As9QdtnrY5lwsoUqnoeTo7vhpGacTAb0n4CsB7AQeCYaN1oKlZjEwx0kjMSXhLHbvcTocqNbUVLrJRjAjoDwpUIgtQNpgwRI1+gcEwZQI0NqSWqaWVKhmTd6JYcdiicmAXkcevIY19zwkHB6Vr0PNanrx0U1KNdbSYLl8UvLq46kpBBwG4ZPt1rUAObq3TDXYe0S4wZgKSzs0408hc8lxGCRtBpYguOQuhyDPB8lwXWyybphwv1K1y+NR7xwUOcIhioWoE6QhAYFA3Z5vxllTXQ/Xsdc3WuIe3g5vpLeQfedIq521HqTTFEEGLwSkgtDPlCqTqXYY63EKBNAw8TEc0bMnUgDE/OdebgdDubv9vmGLGECkAYGzAY1Kcms55ip2fbCmSK02UcKTUOKjroAQ8YdhUM3OmoTVaBS1TEha0XqkN5oFneQbmSmZs3CmaJBGhIqD6Bx6TXUk2YFYOZPTBXTbNsOqEvo3Al2qEvNK6pLyAWkWxJxh4SAv9HkeCMBOS63ap10yUE1telpJDs1VixzR84j3yNESkrzKkoKgAs0OVDujC739RIoc3eQcmcadeXOTLNyt+gpd4uVcvepm6jcje2m3I3uWblLAZsWGr4Jv9AYasJ/sjHUhJ/3FLGTqPpgBgBscGOHg2s72s3B9YNobw4uzG5wZl1EmtalaK8OrouR7+C6GNUcXN+N3qAOrtGb6eAaZSawFXm2S1TZLtHNc3CN7+bgyvbs4Bq7MQdXCw2VyKeOzWi4mRINN1Miz0yJyEwh6tiICk0+DeEZI1XnYantYd1gZ5xUmlrduEGjJSoag1QkkYoC1yFaIaUJUz7SbMZEPaOdGRPlqJv0S+LCFqaRC7ZP6OvVbRiv0zWmOLRhokpfbJRTACrRlb4oWVLELCkagzaMZK0sZq2sgVpZg7hAg/1l0mLh7MYhIWZf+b3f+LWv/V9/9Pk/Fe+rFP+GkXZ1mBMlxvgS+8y4m3iwm9JvFnvd1LW8pFza15WLmzhxL5zXra5syQFlK2alCK0DhqkV5ExZjSqP2OejPNC16jC4Ra3KOGjhbklQ5xnqK94efYY3foX6lIb0etPwDIH9aAh4jZbpZVT2nvc2dmy3jW0MGAIt3xDQeI0yjokQTwYhHlY6f8PfONp1atTadbdb9UbVbqOK3qqr6A+llNaUxq0GWQSNnJKf8O5hVJxXfhWTc7qALuNkLTQGrIUW4uWIjweDKt8QHFBXwIElD/yfjkjfXopYz25WRnwhKoVb7FHhdgLLrWwP6qmjUBRiMWmSqKbGdpI14garpSHporMpe+JiG3+kEDXF1Dnthqma6hpUzeS6VU00so3w9D/hq/ao+sWs+oXs10ud6ufJxsVKNn5qmGy8TtXvLbupfgf2rPpNXKdVJVo6QcHExpCzhsSerSETzpl47gRQJBvEr5lWj7NdqEn0heES/ZPDJfq8J9FPkkTfDknfHSbRt8Mbkeg/CG9Qol8KKybx/ZAY+6XwBiX6Ra/Ti2El0b8bvinRr1eib4V1ib4VVhL9O+G1S/RNb4++zRu/GV5Fom94jTbCSqJ/K3xTor8GEn3dA/83QpLo6+FfJ4neeqNJ9BZL9H5YSfR+WEr0F8ObJ9EP7CbRJ/Ys0ff/TZToZGSGvkRfC4d6sL4YDvVgrYaVRH8hRFRbIYm+Gu7wYK2Eu3mwPhPuzYO1HFYerOdD8mAth3v1YC2FvgdrKax5sD4dvkE9WMnN9GAl7MFa9Gh6saLpTw2j6ev0YI3u5sFK9+zBat2YBwvFxkKNOhaGU8cnh1PHvEcdJ4k6tgPSd3dSx3awq3832KN/N/D8uwH7d4M9+3eDmn83qPt3gzcodYzcTOoYcf7dwPPvBpV/N7h51JHuRh2tPVNHcmPUgbG0zaDm3w2G+3eD4f7dwPPvBqTFEXVsBEVS5V2DJuc6VnkMnYNy+3GXMV66cINCUkIbG1x0Ju0pTOqntEYTorUHfQjsZyQxCftvg55JnP82IEOiH7g0lKpFE7RfYZveoxiMP8G2VWUAChipMgBZ313zxllzy8IBkN8cFl8MnMEQt1Q5PaCQhAnOZcU12HoIWasTPjxAvyv8jJPQhsdHG0LBf5R28hVQZ8MrpJ2s/Sre+3u1tJPQrpc5ImJn2sngwMIfmEoolAN5uSei1q+fLwnQxlQbLwWF4HOCwSOr90aczttwtpWVubSi5TUrrQ/p+Niqt0urxAoj9XF0EQf2z8TDJS9LyERxbXXFZWAwGKS2gV+rjaSsSPKAIsh5iql5VuUtFC4yQS66whMBzOccE5YTqDcFudYzRtdTWGJOYVEmtcKIqVybgP6QpmXVw2kDoMfzWvZW+nyQ62F5XsvBkLQWxYTUbL0FILnk9bNUx+sDuFWf9vB69Ip4vX/A3cEJv0VcZbhIxCmJOCVUYrSHq+hp0RWSeWku2sgSp1yaC3cVwH8iSEzsYyPmusQewu6S64KAMDqXrYmkonXnBVm/Um6Lhr2M67mm9dyWlsUqDMOQPG0Nw+4qlYUn3jUiHcPaHXNeR3W0Bx1g0dvERcKzJqH9pwDt0fuwOzpHdaqqEUZYJ4wdaC/ZkSbdzHkTupTwuOCRASpcAWDFYbFA6k1SAb1GfiEpD/EOM64VQYtWQjkIpXXeKK3zkNNBJFvpmtNBWmytN9lab+xqrXMqyDSlggyx3Yflye5uuzd3N8CnOatiaiCrosWGeJMN8XlPLZmv1JJPDFNLrtMQ37ebIT6+Z0M8A3qS5KcjHngBE3bMwntKL8XUe0ovBWcjSfRS+HnQJ2v5SOzy4ReNSPHEqOJMJY1eKZaZHfVc00gbfySh7fCMfemse0mQb3rWfXOHdR/TUEjDwZwJ506kwgSvsYlPzlbtq2nbeqgR8wM91Ii5pCs17RWNGHlRI4Qv6R1GzEW9mxHzXb03I2ZLV0bMdzQZMVt6r0bMpvaNmE1dM2K+rd+gRkx8M42YmI2YDV1xiw1dcotv6ZtnxCS7GTEjezZimjdmxNBZjhp1rOuhRsw39FAjpu9RxzmijjWijr4eMGLW9B6MmC/qGzFiVnUlvz+vOb9B33wjZsUbZ0UPMWI+o980Yl53I2bZ26Vl7Rsxz+vX1IhZ0oNGzJKujJhP6xs2Yha9lX5KDzdiFvXVjZgFr58FPcSI+aR+04j5UTdi5r1NnNe+EfMJ/boaMduqbsT8QJERs61eJyOm8dfIiGmwEXNJVWrJJVWqJd9XN8+IyXYzYsb2bMSMvmnE3EwjBkFyUflq2kU1VE37rhqqpm2pSk17WSFGbiqE8JYaUNM21R7UtG+rG1HTNlTFob6lSE3bUDdfTVv3xllXQ9S0b6g31bTXXU3re7vUV76a9qJ6TdW0NTWopq2pSk37orphNW3VW+nn1XA1bVVdXU1b8fpZUUPUtM+oN9W0H3U1bdnbxGXlq2nPq9dVTVsaUNM+zWra0uulpkV/jdS0yKVxe2raYqWmfeomqmk35QTfm2raTVTT8GTuQk1NWxiupn1yuJo276lpJ0lN25aUMDOopm3LPahpP5A3oqZdkhWH+r4kNe2SvPlq2kVvnItyiJr2Xfmmmva6q2lb3i5tSV9N+458TdW0TTmopm3KSk37trxhNW3DW+m35HA1bUNeXU1b9/pZl0PUtG/IN9W0H3U1re9tYl/6atqL8nVV09ZkXU37oiQ1bU2+Tmpa+NdITQtZTVuVlZq2Kks17fPy5qlpQ/J4y/IJe1TTWm+qaTdTTUN5uiJ9NW1FDlXTPiOHqmnLslLTTqNiZJdITVuWQ87xLckbOcf3aXmD5/gWZXU06FOSjnMtyhs8x7fgdbogq3N8n5Sv4Tk+rkdOt6DUSxs2jLSbezjDh13Efhe183ubr8X5vXlZP783L6vze5+Q135+b1tUe/PPab+fucrpvUtekyerw3tP3cSzewjpxId07dze5o5ze9igNXR3W/UGN35mjwd5bc/sXfSA/k/pyN4TN/nEHq/rh3NiL3ijndgLXG1NUWkFj5dKwU/ePJ1gyOkFJ+n3qhMkfxPP6yFv3hS+5H5saC7fPxqayrchKrn9fjpwIVBsP7ojke/Ybnl8f3dvaXwzx8ssPktJfDN7zeE76qfwHa1l8N33Bk3g0zczgU9zAt+RioiPlET8zpuXvRftlr0X7jl7L7ix7D2UfG2fGtpDqeHQUGowFTHciTCcRFowO2hhcjdauHVvtJBVGa3jRAvZXmmhdqlA/U6B5huUFtTNpAXFItoRgigJYZiFe52EEO5GCMGeCUHfECHAhm01e3cKug2lmJrd9xOpxptMZI5SYwRtNryfJPsw/LAsAUUeQqLgN/5neOOwOIOGLN66At2tSLp45Uv062n61YzcI/6DfED8JpqF2JYWNALr/U0gPgHPV3DUc+WlOyPU0yElunqZ2z638x2YOFjdCxJveFFfkl31LP2t12Ux3dVL8G2qq+clXyNDa/uKovtjcHF4IwvN4Et+74fUCxKGNyNgemRPJm558HL5muioVR5yWXbVC/D6hujZxX/XF7agUbP7LQNvCdtveDfVLOKTde/Jghy4zQb6XpO8CNFRm8qMzMqu3nB35kCrDdWza7/eF9l/1DRhI7L/rNLQjNiz2OGm8temN1RXnYYOZUeVa3wbXXcDNIz33BAdl+B5VvYKwZeehdgTahmS/gQ9fZqW8LLomZDhc0gJLGvKO/GoGTHTXfUBclNPBDPmAGhHyN0EXuazpHrUWwUjfLIlesWtFZTw2aboFbf5cHq0q+cBLJdlz17+pT6t174ie3aj/PY92bNny29ruLR2NRpitD1SPdh2eFNwk0vuyrYRc3tXb8HKso56CT7HOmoTPg929QZ87uuo8/A53lHrjCamqxFjREddZMDnDVix7OWMpvm4FTkIl9iKPJoV+bQVeTIr8oNW5KOzIr/dinzfrMjveKuwG/J40bpTDLrfd/vfpjCm6hXhIS2KfFb9i2LqjJmazf7xFF3PI6TSQRg14uZI0krHEtMCphbSHVSw6pYJDylQ0E0LtAdpM6JU+N6miyjcd4NXVGjzVmEvCbrcqGVNrxAkYURbBShzjvZMK/t7rGmi5DlaRPBRXnk1Hgqb5priZfDLsaKJsQzgyWAZqUcK9AtnD5ipM8ixUelGtAlQz+ENReOr3dWPQS93kqlkQBVvq2lXnr6tJovQpsdHlVAyMcAeUYvIeibwu3msq2P41YQ5ldx9MJgxkUNozx+hbUqeeKBXmX1T0cRl9gcouSZBCOMMOuoJQ2oH3sH0IVY4gB7sz3+2L2xghImzW7EVXzpmlLtFjIy8lx1RorSdBjOTvLzqAxR83SR9/gmQcB/KfhtHfmwuVXgJHawr7uoMb/jC/stL1OKOapmGaYLQaQACB6aB90PRCQkYF6dCV2SShVguhco8i7wjfrJc6wcIrHf2yOwoq0arQ/pYV03TrzPHC0m9e7+rD3Q1uhAeobtNjlXbjRcml/0cxZ22kz179ufw4jdcfnY3AhDvnaM1q+kuLMemdEVeq4Qq31uKcJlEOBBcjlTXzeEWtKvvMS2bvidGzJkmunAFT/KS6N2JvpUWdBXSTWolaWUA/JDQPh81YVvF+djeaQ0pDO8TA84QIMllvUIi1w4+bgKUQtV1MSbglovSytAGSa6JMJE+RR6bAJhkIahl2Sg4pBcl8rLAhh31XhPYU78BXHXGBCjWAjtznDVDpyD+hTRBWy3KvAmfSzLPTGBVRx25Is/ySuhj/Xpq8zjsSmDPi+qywQCQcYbmtiq7OCdACJxJcCLbxuGfoDvtgrZ6PI+Qw8jjRUpRR92Sif3BZ18Uh4W4zaRWP12ENsj+UBZ6Du/cnviQnTieK6NzYaI81DAZ2MPs/5VGwLiTzgOVC5NY2csTE9qJHqqcE8cLhTft4W3ukUntxId60DKw26JngxNGG7y1HK8wn8j+H5zlBx1PMWkwY+iSxQDk9jM1FhO01cyolgowLgA+01YcrCi/IYGX3zDa575RrKGt3svdX0SwzZdaCML0ma5+HH6M0e1rmga270iPoGxV9gNZwS5oq1au6Cr2xBoCIiwgBR1m2qTAojKTElNJLTKV1KDLKrUTvVkJgEyNAi4TtNVz0jF1NWPGCAtSQjbYYuS+rUKPC+FD5HGQEQHoVEVoAiC8YtStCFZXjNFai8xf5+Nd/YxDYvc/7FD2XxH6FpEdfShlgsAbFXGCedNEwFG0aaaqnBdMiaciTWjc8GPmmofES8VtmuO92EFbrYDkCdrqtMzxHv5lmUfweUrmYx59QZ8InmxciHKD7JagPRkFxB4Fbj5hRkFty8yoiWBTRkGdic0oaDeBGTUYFwtmT87Pz2dddU6awIx2VF8OWWowY3lSM3nUQoyHPdjPezBR24MDvAdv2RtAoGfa3cGdGLPNvInYk99ipbcxmZqBrQERnDHtr8hcMvD0APBiBl7T4ArOSWgHS6EeBiAKa+vjDZVfwQ77Mh9NAJJ28kPANSUAVgBnyowgwAqy2wRAFOR5RswrtICmqCkSRFPg2Ql8BEWJ3oxL2uw3DowHzG6gS6EVXpKfFdLcgnfAwrfpYh+BE77ERXM8Fj6eEaNoq7OMYTM2fRhXPnM8exsseEP0zJgtnbYBqhRjlY4YwJreawJYLzBk0VEfMIEZw/ePtdJkOHnsZUnAeYRx0x+cOXJXwroRN1ExOFHhT7RZmygumiYraLIJbbUYDwTGl1V5QasiGXqbSYg7Z3+iWG8PEdvSEROAaouD+qt5tKuPwEiPEKody3WriYTteNroXBruZGwMppCJKWZi2ncTGFoIZBSaUSuPg2wmvqZmSgKSJkRdie5Xa86l8bANjE1s9l0zf2vyoG4iD6eyFSe7cTjNRBoxkY6a5hCa3Mnm4mDGxMTlYuJyMdBky8Sw9TDzUSDGmDTnOpeLkcs1mau1GglDSBKvGYWnemY3ohUVgBq8dft468ZqW5fx1u2/EjFPEDEfMKMwzluImG/xiXmyRhIPpQ2GMGynchuqSVQJo1MF+zlS7qc33RGzz7gpZma3aU0AsRo3BRy9tqURbelIcnWWIgcpVfqUqoexFMksJXYIEzHC7GOEGWOEyRhh9vtcvTnn5nJibk+sPU4AfZi1R8Ta9xFrHyPWnhFr30+sXe9g7c1UEHbkCnElT1pR0nr73piVJBDs5FImzKNWmLTuTGxgTfZJLRLbP90XNrdnT/dF9gvwIDAh/lJxtCtwM7JKUGGbKC+dBh7HkJDMZwmYmLB4TXwytCLJFTFKtWdGiToqSOZgxsjrujA7BHU/REGhoBP4rTb764XJOZlXsMFlyddpWdW9lAFYiTAJf/gjYCVGxM+buTQ6VwZD2ojthci+qZgShAmzC4roGDdpSWKIMmEuItAiS8HSeZXv/QQOlKABCfQlTJKN4cM8SQxZREgfbSVM0rN33U9UhoNlv+8NxVyK7dQ8QqseeMphsYRCSMNIMXzgSNrE2Rg+BBrVJuaRNIwU10fSpmmi7LwbLTCSthNGYbs7pv4Tr//E9Z9A/4nfP6+k7D72uw8tAszOHDfaiux38PlMGsGWge4qiZ/kqZGwlZG+LijuBKJmIMYYliDoRchwKiDGMJCGDxwoNjobw4e5BkaneaAYBtJ1IMYmMU1vlXhbOHSvMeRAA2H/Ta//puu/Cf03/f6btYVA97rqPiIAxh4AGwjXyE72isikrPqhDGJ8tOJhfvkZbH8KnRLrdR9GX3bVcxJkegO+mtLzFXgeHef50uT5apLnK+oozL0nJwROGzNRfNeKwJvR3kuG90mcwKnaBNRzsqs+Sr8frX4mXzO7N7x3iynkHWYKOpWVpX71Vo9zq5IpnBd+k5PSb/JeaGGoxUcTzwN0sj75j5IDCJgf2Uh9x3fWa34ZcsholrD29HN9Yf8OCf+7aYdLVxyDpO6L86DW4rfQ+yTcXq3ImjsusMuy5o9D1uUccjefy27I3p2YxNpCLWqIS++x0qUXkUsvvlaXXjgr8ikrcsnedF13+psWhkNgHQXODZ14TaOBbmBEo5CFuHmUfnVUoBUuRNt2r1BGewJLG40Cy8DnsXwKGN57kfHrtpopmuQlx+MZuQTGONVV9xoNmsoRo2FgAf8ERsNqgTG+A3lmIcia1sybYNQWRwZC5LogmazpFRHIIw1s0kTZu7DxXAqvX/RQDKapAsBy3VZ3kngwvKa4Ry97r4L+KhA09sL/2Bf2AaOzu3FFILc1kPohPVPilw8QxC8NupqPXxoQnh60goTaZyUv0XayhOchFeRT8EJbtYirTCG2I/WVbSs+pEomhH780u/ehNc1rA+oHXbOX59BSoeu1HsHiUkz6WNq3HXRwvTutKDZu50CLczLobTwTEkLgmhBXSst4IXyQA9MC5FPC6YFUoAoQVOeh8Yb2QGpQBrOHAdtIjaaCEIOEkRc+lkjIAhoUu1/ZCImiIgIIkKCgEHUDHwZIAqdmIiIIgL5ccSQKgP/BCayR3oWQPcOFM2OKKJDKiimzhTSidJC2+kP9fKmkQXoJqHRRk0Vas7ouROpotRXIw6LySK16mHawol8FD6yPISPFrn143wfwSEg7z4s8ctgiRphp1ygJjLiHnHrA3LGpKkEmXu/mCQDeafxvI+M54CMZ3Tfxia6R848IG41sZ3qmTHuNQa0iY0CtFFpiUctUDzxfAgAHLVJXaJZIUwTJDtFpiKfpqKKpiJHU9FQmnJtK5qKr0RTKjFNI47b6Q8DyEzzofR6qEPDMjVSR4QhT+BikZEmNhL6LrQR2btw3yLqJELjX7gtB0hGuDTgahFxtchxNcw0Ed5rxNEij6NF2d2IjmSJIAQqjhYNcrRokKNFHkfDAYHNRBWbiQikxGaiIWwm8tmMNPHD181pPFhOzZqFR0tmEzGzaSXXFIveEMcLcacwHI0uyZFH/oclI0EWIokmWa0DamLmVcXJ7JFeoWCDBfAWZSSprqKtZuZS+L0NdnwJDiNAL3wv8BDRVvcSHI7wilFxqsAMrwLmwgR+9uf6wh7EQbK7cXJkPDfYC8B7KyrKwK0VXgwX0aZ0MRBpCJ+svMbCkZUYJCvJZAWQMMIerU32SFcF1K0KBnFClLjNpC551Ru4jwns4+JwobEgS6kxRlIju1apoVlibFFg9OoBR9NCdx2hAZ9NKSVJyKFUjTKERIkeFCWhczGQe6eQJrCr9ajaiuzqY/DHssyn2FkF4oSDHEuyUL48AXYJ+zBtAmDFk6WuRFpUYOOOesQE9hwGY4/xJFEhHxqNXeJo7LLMR60qT+SEFDlbR+tissex00fL2OmxKnYaD4udxrvFTtNa7DTzY6fZrrHT1E4cL1I28YA5mbiKnc5LP3aKLpUWx04fcbFTK3Nh4kq4oP9wXlIo+ZgJkGibZpS6Y3DJwYhmkKfwIaqI5mgwY0YpojlKEc1RozB4ZkcoeIYicbSMaI6alCOap/yIZlZGNI+xTZeQvzcaiGg+QfuyyBFNUHTi0l+4wAGAS4MBgCcwfYxRofS/z8te9l8zjmkXSFuuQpqnJNoPXkiTJhaxi/gJCmnGw13+exrTxTQ1xzRX2T18lj3+K+zxP82O3GWKaS5JBtDwmGYMCLeLt3+MFJaMFJZ6TPM8e/sxAje41iqmeSzXIHJoF/bzLkzUduEA78Jb9giRKqg5uBdjdiRvIgL5Qc1TFNTU9aDmKrtlzzLUVtgleZrd4stlUPO8C2oec0HNGkgTcpSUnu/1Ac93PaipyPMdXSmoueFAOkrxkdG2CooSwxmbrhDU9GE3Cs0UfHhRzVEX1ZynN6qopsM0F9V8gXHsmAtBrIsexSA2B8OaW0PCmo9QKOIY8ZAPlmHNR8H+H0oie1qUKuOasIDBuXNcEzAvScrIwMBMB+Oa3kxx2TRb0hUeTWi3S399Wiplad3rPerHNQHhUvZm4qD+ch7r6qMw0vsJ2x7N49YIErfjbGNz6Ijz2Juq4BQxQcVMUM0aQe27PraGgc3IjFl5HM8GL/uBTQwjcmAzAgYs59JmOT9vak3gFDzwvr1zOcmjupk8nMpWM7kan4tLSpVDCHMns1N4GBR5nSJep4jXKUozUESRCv2VA7xOIa+TLrIZJwyiiBhOs4xsDqVcUUEo5s3juLwX2VzgyOalwcjmDoqeIIo+YJoU2hx1oc2SoidrVPFQGjOIq9Ampm9oCm3GqYIdrYjSm2+ye2jTn1cV24Q54PC1TdW0qUmyB8YSDZJr5JNrPIyxRMxYmg5nNOPMPsaZMcaZjHFmv8/d5ZybDAc3r8biVQIYxCxeXz24Ge9g8TIVhCB5iuiSJ61G0sr3xrEiAsFOVmXCXLeipHXHnoKb6Bw+Vho0chdbX4ENM+pxwStwwDLuN+rF/UY57rfOQpfDeOc5FnotvJVjodrFQvfGXCmEeOWgYZVBXeCpXwY4xuz2FhW9QeicZxUEoaRdVPT1XaDvuT9C6aH+RI52dZt4CMVH41yBvYJ54M4yoqBdEfXIVNMz8KRXaHbloAFbhA9jkmViQhPZyeNUAqcNs4lMeNxOHreTH8a2wraOO+9HdtxfWQDfioj9+bisaJdl6dzRdBFSCBfoPTTCgI1mJz9cuGDukkxZFh4WosqocU4Pg2FJ7UK6EcUII47hRRgjjDhGGJUxwmggRgiDR9kfeAOa4LBYlveLl6RhAwhPSzgDdVP27PqvYIo7eWQIzbLbuQdVe/OXz/SFbTjfrYvgZrfyy6GzXds4xGHxksx+G+dyLI0sLDq2k370Naboa6p5wU1vwU234CYeyfUXXAUtB9arrmW9QGOOrMr16mHrTXm96cB6oyust4GJC0VqYhckBWEW0Q5XQdJ56uU0DrlRj5Kuy646JSnz6QK6BE5Ll+dPeSu8Vny/LZ6XHfG+atWPUBoyUv1pilRSYgx2pstw4imMVB4lB8cj5J0K8LRGGZSt0u4pl7JBSk4ZlKXO2mqyEJhv1VbT8AkURdN/VvbKWXgDd9VJToi+JHp7muYTPM2Si1wQfhMYp2ryCLRoU4uT0qVaaHrPn8lJ2dVrkjgnWWjrnv8IvTzlrqyR5wiwxG79TF/YH2Od427CCj+mempITPX0jpjqkh9TXR2Mqa4MxlSXq5iqMPJKDl6PTTcG2HTjanKo3E7B2+lOUgR2C+OuI9fm/t2S7P5FOhjqAv6JygE8j4kSghIL+IggnbQRiCrCvoBHFQs8bSkoKmnP0rNpekaqzml6dpCeoSP2WekmKMhT+5z3AL2xp7wHpme4cZvP2qHnOTQ89FHAKFk6mE/iZmpyVYd85AooO/umUjOG1zVznB/+HhZ7qR6wFzvx3NggW+RQT3YfHaAXJG35hvSc2dJ3DvclubLnZc9ufAoP5FTu7Hnp+bPnpefQXpIDHu1FOeDSXigfiOz95Jt+CaFOOFpMkW/xgqi6K6bpGWZLcI/Fwa6b6oIsbu+q99IUsDmOPU1/xbAX8Je5vUtBI9xNI4Bb+yvekETxDd6SHR7xigGI7P3QDSF1842K1EW4A60LPQyxK7QejtSSkDokdC10GYDRJjSyHoBZl8MjMFfAW+GlCu3A3R2hmDdx18PdGHB3WQ49Nrokrwmvl0u8BnxzeB2bFgCiCFE7pvQWVgXbqjUeigrVHy+0C+AdgSl/z5PShC0lPnyQhLQwqISIMgO5xNQyR5kf8DyPldRAeHO0l31T0tgkg42wlwWWfVE0E7CjaaNfwekgZ74kXFiRs1VyxOAP5jHQDbpyghmq+GjBqsJiC5oPaSPePQmKUn2dknYLMXG7NLj85eJW0msuvocgCUmIwyARDyLsO6CfV4XLFBBG3CP+xQPibfDXYfHR+8Wd1PfTXTVNf32oi34EGK+LPgTZUXFCSEtHYRFsVKUUnXBthRZAXOjjNvj78MRoG2YZPgSjA7+jDi7J6CikPfMXfcEKqbRBz/7aX/QFTRJLmPl9atdnMNBn4PdpX3n5938t6oAxE1vAYIdQx3AHF1gUXqizlEfQeST4vJpoq0UvwlkXhfOyxBz7l5+io72svQHquLC94ND+jj1kbnJJDHCTi37YHvGAuIY/9qLsqg8yXX9wJ1l/rwrcqzmOfWe/jmWRg96AGbqMFN8Ail8dTvEr10bxl1x0Htr4BL/iCF7vSvAV2R8plCN7El4PIjkoIvt2z6hyz+6l9Egke0M8oUb1R4cS/REjHKkZoPcd6QITjoQJInmE6QzIBIglTFKmceXRNVZmfygLmQZWsp/LCPt7OP07oGWhSqI7WEQPyEddjF4cUq18Gj4m8oNAidN5bBr2jp7BFg0TPSAOgq10v5g2DeD+E6YB4mAwqB8lZXpDXKY8NKtEBzxOj0RrAiNNzFJWkJTdFL0i9oL8BN+gqx9FRkYU8TgjTtzDvN8SJx91cr8UrkQJR1xKHuYWVJSwPkgJpReHCeFoLSFPYPpLNoAPPntcr7NHRosh7FFxph50UjLrch2Pd9W9aFBZRdCOO2qSWk2Q1ZqZxuzy/Pz8fNBF01Wi6WoRI6Wd7Nn5L/TFISG6yMyynt3+De973LOX/O8Xyy9ODqh7d5L0gyVFN0u7SpUni0u6liRQ6qTu8rEo2SYCUgduNl4Z4y2UfONVynQLqGi8PARvWkBF41VuCTKE8SoxBRnCeOUebplx/MtA13KAd/TlUOaxJgdye9akpwQzK6Ehsg1ZT/IJHdVmXI5NHNIxUBQaWKVmOW2mTJgdqWX2oD6799yecEhiz//xXF/Yt9/kxB6kWU0LwfVk+TT1ONnVk0j+Oqvc4pr8JyEh4TTb75K4FM5f2rsIIzQAtA14cqM5QFcZSLiBqhQhxL5Lw3OsnzAhLfZa8oIuCqqWcElhSrXRePHSlRPDdvsf7JIN5ZCJMpS1fUn5qbnqgsI0ZcRi76yAho1YlUabHEWmprMDek26U3B5WB5UAW1lTUHnW6KXnVY8aw0yMjvM0xCge+JPsmf0Ib2mKOl5E77afjUr+xK+ADPDry9LnnZRplfPBl29Lsth1mUve9ytF0/j2FfkQDY29PY9DIbgYDt+1GuYxC179qdB+/maoDVRHvZFVJwpn5gzsPKAXjeYHv49WSQ0Km8SKQHcNnqIUsC/J9PQaKwgpO229PYBukVaWeB8d6Ptguplz8PXJYURsLZ6DP75QPaiooxvqtCmD4tH8X4HTMgPKG6q8eYxbedVmemN94nhsOWTTYCDn1l/kQo5aXtOcYKQtrKjvgSPvvfv+qKjEEpRR51SOO0l1euoPv29QTWJluCNFRwL4Pcs/PQcbuGqt8cKC2XhoCsKC2WJ7D/KVjOB9byvrH2Hx1sZAtmXFSW2G5H1cd2P5JQ1D2A5VjQZGjPlJRsKr04IsU+Luo98CgOy6wp961dKtzMKq9tFVCwv4iJ3MTxMlW3mqnUA2MD8x57KlcXCFvgbVnRWrQmu2KdB0LiJ3ZfjB5WHxGIyNELxUCrtfpvhKA9N5aq1j3/MhQ1y1RpP6LyC6+hIeS8BrXAcV/hOV/gXG/Dwa3g7yboCEJ1TdJCsr/IIPr+kKFFvTRWKKtVJ7Iy9cQBAhERsQ0z404mJ7O/9Mt8hYMXDVj6dY209ZaWJ7O//y76wUfZNDUuQiWvv9YDcdGcPknqQtR4SE5WRMUv63/zHnkqMOlEIgM1ooJUUMjF3PJpqc/uZNKDluk7eDbjVV/k0LxGrqwXVuoGjkAuCCEESKYqOuqCwcjLD7uuK6LiCkrYvIHqfq3PSL6muOquIw6xg0w60W8F2D6VIlTCQPqTOKp8kX/D6UTj8KJUgu/2MlTSgmwpPhGsCa1dI0gpCrXaJGKEVedTSiU3pT1jDYXGokPbw8dFAC9FEeffO4xh1af44U5tmxJH2yPHPzr4qfyqfwos5sO7kb6lZmd8O/Rgax0zl01i0/LDIi8ge+bvVo8je9/eqb4yMWc9MzYrZkex3kfAnH6Uk1gioRx/SWXG7idzAHy2mzO3/OBUJvoCsd0P1bHDC7W8XNwl2k/AB6RvIMXIbn+zcZGWiEwToEAGdJuaOM2lFKP+CAAxrS0HzMtzXwVmZ3wHS3m2h7te2cF313q3EewgVYE7Ye4uxCGbNWP/uYU2oTxBLFTMuO0mSUs4tqV72VaU+Vgp2RseXsCvCvOrNr6jqvYdwjfReAnsIMi+fKjv3ZthFJoyxPkNLXJbsBkW/6CIGzoF9t0ZoZwErZgXBO664VJNwMqby2EYwQ1O5Ks8VbSlQ+lD6lZqJZwShFPPkk7qgwAq6KIeZQSHZ0mwmjLlYD5HyXqVhJYj3IBFXf7GUiI1rk4giexvt8arqqOfqcpDUmd+QVuWCpN9O6NCe1MCDMlZ6Gg1DSjs4L0k6DvesJOSaSyNCdgASYvbqFfSSFcYfDwYX4NGzCAOEUFyHwSb9vQJ/L6lSQ9yo6wT94TrBmnITPavmiGuv4ESBU9g/Umh9YGlR1mLwT7Btt2DYqKNeUo6bAlO38UceEN9GLrKFRAA0AC3JvNJtIIfQMYzb38MaMLUOeYELsmd/42f7wr6L13E/MqBnMYNDt9UCHVusjg/BM4k6Cm2pEVzlApa4KLv6SQIXw/gZ/OaimPNSzRiqiDgbPmamZl999dVXx35qVv7EU5gPQWESHnrNHXdbU3y4h5RTkf2BIiU0lYRx35O0HbS36JM85d7GnWM+QEfnsru4df0VYsGwinmZ3UKvICdaxVde8Y7/anvBneVFxPweRqtXGBnPS1TP0KjWbZzYYXFKZb+Ns16Xc1QzDKCMGTt8LAHBB/YjnX70YhrAqGIyIydLXwYNvwssIw+WUQlLoogL5XLIl8vGSwk54tTi+7IjvuXB97wkgbW4R2gsVNCQDgdrpOFI4gKrF6tkEUBnvgZyXhKhAnkHMyV1Ox7imzzAbZA9IPcvsfqiZItnQ5XhejaeBk9tlnZki9/SG6qrh3Bu3qQtNXBEdVOV4XptLykwp4MEPbZElGg9H7w2Z+1OqxmrEog9W80sMuWebOY1yVFBFIxgLYNhuiJLJ6ssHa/hnk1k+cM0kX/4RrIcaiTLnUZy+HoayWJW5AffSIay+CEaygCrN43lN4axfDsYywffiMbywR9BY/ngD9NYPlg3lg++Fsby7Vcylu/gvgwYhD9qxrLYo7EsBo3lg3s0lu/YYSybXYzlg9dsLP/1NWDjK1n6Yq+WvqhZ+pLPSrxpGf9QLOODOy1j4bjDwbplLDzL+NuLfWHf+dpYxm8aulcwdP9mma4l2r3Opqu+tgTZxTKR8OhgeDe7JAdsUtFWR6tMnknOHfUSYjPK/jonekVY5cQacUg9WBwEPPETWMukVjBaDWWMuHTVoz2jgZJgxFQatJwf7KhnDGUnIuZ8lN7D5C/7R/+SU8VML3snNnP5aDQfL5N3wk+cfbCgi3AEIE+L0leohswzmLoHhCHaKuZ7IHZZNY0xfMVt9X68FXWiTDltuZRTc7B0GU/XUo0meiZ0aXvVgrHjtrAdMV5CpEXZ6edEr0yVLNMNnuiqB+nnLUEbM1FLx2h19WPQzYcoHeOJsuRMPSPvMdq4oz37ief6wr6V8t4wIeNoieGw4J0pDedEDcEFniIr0zY2BlOV1geT9lzuEqZt3EnTNDzNI87tKNrqLn62iFl36kc3FYcqrsRvFXardBEtYWb6mquoEqGXqFCu7ptLUCeDhqt80r2vzLycxoF3t9rzXoq6pstZ7TkvRd35kr7kpahr4i+ny/RzTRzorPfAoNXjPWjzuQu0crnro84RhemCJVc9JQGHaKkRRUT+Ia0Ga3thRqemmi9lbbjqnA124KrDnZY7S1khe34ZV7Xm5YZrzBd3PRVsUeChJT60Q7nhmsRccXtXPbLn3HDN54TyfaQRsJcJzwzCr0FHHaOPJWkiw56Qgje8CLN2zjo5qH32wn8ALe20ohqBy+zuX1EGVUnVy97u+wYPi8cpZ5ruL8HcXhSQfCrVO2nkTqWGnEM0WWYWladSbZCTye4K+Wg6JkWeR7BN+ORhQImlAyfug3zUXuJT95TxiEURKRN/kl2NRepYCqHapugVSEDuZlp0ktEBeXQb8nn8F1i9W1UlkM4xkNg2WJK9jlp3niaU+dnbsSYJgQldJDbo5Zmdzkc1UtELyoTs5huy0KxaJevcYXaIjIwcz3SN9opmucYmrNGtrgmrc+tqwrrKFZUHwteUGbXTvXy0PmWTchKsSGiK+WhC+5uW+9vk/W2W+9t0+5vuvr+uBiHSW5NO4TvNarVupQEFLkiisxzVILwBgtA6xSPHIpd6xs2IUZDHzsqxW17W2nQPC+WXJ9hGoRP8DYl+wSd67xAI1U9pUP2UBtUH4lp0QVLyErxBmHMXeYWSV4hzVr4Ku4IqLPy1Kocl+6lOrY4XcgksuEHNl6F5OXB2aXBAZlP6EABvGl1GMj9IbOsFSTJ+9xxjHHBV9ooxYCUZcV9y3jcp3bhkOfsrlpPyOsdpYvbzn+0LOw3zA/kxAbvwGE9T0TQbtBRcMdGif4BxsucKQLQIZfDaFOr7d6DvKROZ6+rWw7Wqa0XmLMqL0soka/poZTiTHXTE8zlIqu1ZuRzwgakekJFR1Rclg6cS5+TY30cDPqt6JqA/Tyq+pA+dHGaU/vyS7FHlHoq1sLx9QfaoUhKZYfvpz7OyZ9LSRojxMBXauWgEjnXUc/CZdNQCs7bL8Pt4R7GJppfhk65pRLjnEd9aFd4pTGiPsr0Z0gWnf6A8wRCCphrMmBCjGoXqqMcwkHVYCLoQLM7RroK/CgEfeJZbGZGN0c8Cb74GToWXKyuMWtFpbkp/voBJphPOnAtR0eIxQEWFocV4R7yPJ9FRj1BDcb/4AI5oJI0p3ZiSiswb2bMF3yTtTyAw8rgN/z61sVGWDbYqhP3MmfKcC8g++9kzfXGPEA9wb9FAb9L1pnb2Zn/5lbKdwqMvIRV+bPeMyu6pwZmLl+RTWJMknybASg+wwxZ51+AibxQ4TbeckaHAObdS5sWDqLXnV2rAGblx4EybKaOyIwiXVNKzEGS8/Z8+iwf0I5uBXVbBjc7S4N1QdIVdHsCvj+XKhIfFBypsDa4XWzUg3YJkbHXeA0Jg+tOEh1SL7b+wPFsfon589UaPuzZ4UGB7T22edG1uAkWMuW3Khm76b5+pb/r/Un3HRje+6YFpGkXFWn3WU+39n5/pC5tSOVLoKQIoUS2HnYjiBFdbfTT7Mfpd+b874dNW85JfmEtBqVrf0xb3yy3G2P7Snhot1vFiZU+NlmUNMdb21GhV1jCDT0Q8hrSQ/baCL8cw/BjaI2BEhN4JO+zlka5uw1sPBrgVR/n8yoZXDBze0228FQUQ4n/9t31hD9Ng2d0IUGeKhSi3WG6HlVhFwR76xy34DtRKrIfou6ikOQ56tKtaCfarWoNOgrB0SuB8wYBHXpu9312dQMVWMi5ta9wjOiPBT5mHiJKzFHjQEMvIhKWqGroGYamqhp6qGoKqGmIpq0JyjWI6xVRqrBGfTKU5PYnP4uyzshUlNrCXhKu1pKnChzsWhXcUjpM+PJcKvob15mjTXuGHqryPtnEve3+C1aWpl9g7SRJXJ0lid5IEvYvOefJGPGC/p6oRVzhcT8fpZXnoCUzme36IZ+l/7mfxruw3z9L3hpylT8x4idnjHmaPV5g97jC7xfdQSCDRLSbREQdPaW6lK8gZPrfR9eP8Da8tp+vH3RMz4g4p77x3fFUOu3ecMmD+s5pLMYznLjyvXeYt+TLv8gldeF6VIy8v8h523/nwca/7vvN9JbfK5lJlxsobz8+6G8/9C+Fh107zrLCTVdUDKhnBrAdJt6c/hLeYr6oeKjn4E2gYeKE6qBh/CcYDliMeQV0H3STudvpV1bPby31hVXaeL6lPXf9isH9R9i9c/6Jn76er90XVtenRzf42OJH9Sm0saGWo4zYPeGcpAXB04GLXNPxfifr4mAEUJLQj5R377ir1Z6ur1PHCfWCHsM9UJgmgBCS81z3lcosjFPLCnSHUgOnhm+RoyP5bogq61nvErvszk9XM5MDM+uXM/AvrJwkjd+KKzghkBMJViq7RjfPCX0dGN8Jjyelnf74PzIk2KbsbGh7D0AOh5QWk0bU6HFYVq1MjyJrr1NUfpC6+8X6jTm/HYA720i9iRR4c3J461Rf21L/vi+xXkI9ww0odw3U+wpOH6a5x+XCY9TKhDqiS5WXD7hvqd7glDBIUyEaMJXbj1/vCdum+fbvwub6wL3+OZ/Bnd6jxj+uPvVXYDY13yWd/qoyy27JXREZkX4QvgNmS/lxRPRNlD165xDso/iuKXKcKXSkKoMuQUQhPBejknhhF0dA+mr59laPtcE7lLfhlXeUT8H1D5Sl8XlD5KDzfVPkB+P6CzDMYQffIyluVxTh8rsnsRVwLZ09akUujDotnMBePkE0dFv+8EJR+aAQl043kopUlvFjsN/uGpDVh+k0qW2nCAzayLzuwNLJvSIBB9SZaZYfFWZWPle98XXm/p8qoe8RnFbz1OWWzp0/g5ez1R0mOg7+g8hBXp3JNvYJO9fSJXLbG+PpzmAI2fNLKp3IBfz2VazOGpdrm0pRr0/2leDhtGZ75RWzWx2Yfgp7pfvm2eqIIs28oAtHjVj5Fa/lJujjiqTzW1XZjlk+hKWtSu6xJzJgUdCvt/MeewmxJzJTEmyVCGn4TLBWe9T+iKT/mUiVdt2WqpKZUSSxNRplFgQ1yLOqkyI/EPT1apsQJK/IAXzgs3udyJbFFWO1cmK2rCrRtdVblkb/fDRPhnTBzZd17usB9/mNPWXkiKQKccdWbv8dEAycRk6qcP7xs/6zqqsuSZr+NNWM70G5b0qgxUIq3qL9L4DlGqVUAVYKAopRXh2BfrSEYWeF13MEFMg7PHEeksTKPMYyjOJ02bQHg4KsFoKeRTWjflF3WsJZ1j56X8Enfe7KoB2ge6HVVdfUCYJjoqL42CtSPNc3MRhBBleqHsgua1Y9Ro1BwKNvXPgD1mgapQR3OS2qSvY1YAqA78gJQPtIKClGORRPjj7QINCcZNPNMVpclLPse8VfIKl6VjgIR2iXFNRIgqNAjqMAR1NGKnh4EgIJVoDDxgffxSJmurFGMK0TOd2KFIthQ7XNSHKAIibRCJq2gTEjWgD2UAamtonqQLiFZt+LESJoUGGA8/CFaZ9tRmRuhpLKQqExT/o1LSNaEY6bqyJREpl3atTosckdk2ICH30YBQkR2UgGAEeAI+MuSiG1bFprIJcLO1AxWD7dYntk2HkZ3z7/Gep2URkxXY/DPWFJ04Ge+DMVRbOCSiTUnE6OAous2MLE1BkMMycgGJ1xfXdhrtwJMC67N1WHmyTppX6bKl5jvPY9NkbTnsd1DqU5I/sGrZB0isVBvZT+6o84qE6fRwBSqi1SqqaTQxWS1OZO4vbjTt9o/E3jJtL8XX1O1xlbkI4iIh/S8yvfTvrR0NezR+k/FiN9c3ZaY/bNm4Uy+z+w/g/XN45ZOADPMCEA6yd0K4bX3wOownXo//Yl6r7dmwDyPnY1YYeIpwhqPqQ5nayaYM825E2nTBED5yFxjkowky+JSljWBnFJp9lH/Erh6K0hQTeBeYuyFhQywQP4BK39T/0BlCpNeGPTjRGDZjhRYvC7NUxhItfjKoLDYZV3NOTNmgrkTJ9KIhkYgAetFhVrZ5zSHk4j9BgTQuKOeBW6adtSCpjb/yUuuZOCTkzhA0wbL3b+gSgRUnFz5eYUUkpgRgo0wI1TvhjVnmDOLONQj6PQHKS9nFTI6lL0SEwaS+jir8CndeJi5gOzcnvt0X9g7CWLZ/YnJSttStdUCF6FTdh4FznPaOWiQCp/VXb0NHb2ievbyL/UJx+z3VM9ulN9eVj17tvyGRAkKainKiC43vCeX6B3dK7jRxQp/D3T1JixhFPNSlUkxs1SZia4G9mdamH+gTIL5ByjF+pQyiMveYgpFellRPbzxeVtRDM/g/UomAB1NUVVsvKYoe166e2xEWZZvFnOLxGzQ1ZP4TWVGzM7Pz8/3BSZkzcZdLfieNOCSLgUEWSZlBVSuwStWlCEzBCvWBFiZRhhh7+yZgBqRe24avk/g9rgsusC2qu/s0tEdFd+USSGmlnVuAmvAFkKehfiyglx72VNZlvHJkq/W4JNFX63BJwvekwV8Ml9XdLZlV89ToJS1paUd2tLiDm1pod7J/G7a0oraXVv6PYlq6N61pV9nIbWIOL2svZXhkyXvyTw+WdS1aS4Ajck9T3Pb+ZTknqe5jT6lVplzjR7rlFkP8dF52cv+m8rynLuqzk1r1sNfILBvy579wc/3hf2OYFjdTfjDOYuOV+yU/EjNyK/AdOfp/SosZUOzRU7q8gAaEKfxsYtGGIJdK8p5FUhfIa/CL7FN7+x9ZFID9v73/3t178cbYO8vR569v6GxxhwZ+YBLbO/Phz0Ts73/cS9TAJSZ0Fn4K4TRoUdMhNFhHaPDrl5CgbYU5m34PBXmh+CX5TB/ALcuzP8Wiosw/9toMYT5g/D9WZ3/GEwmYAt/QRf3wueiJgt/Q/H5SHVYbKjK+GOd9FvKO1+Iaiz2RJJ4XfH5QnVYnFfIcHFr2mpdFaPcaV+VSnvMCvuLCi9Sl0/lIJ2Wgl5+F8iGAJTHfAJMW9Qj89sBl8JefhjYNv16K3Hw/G6j7F+GvfwePajwJ6TwJ6zw34nKfgyqRorKfkynD+9ERT8G/XCUVgM45Cb9RTZp1lRd199pUceU1A+KSmoD1IIY+1xfqxVUYyvyFN84LD6vnLqPbXgSm9iQ1P2X2ZmzxbrMS0gSbbWpipgUHuoN9HAGMMIhser4aCi01lInRt8jhP3uusSzg7E7fajtmefLs4MxnT6MGY7cXimFF/zV2/PZQ1FrnxhdyhYr8jsJ1Em+40ZDI0x8okj984hqxtz3KNIC7Pqp59HX/G5A4S2Vd3m95DtKTJQGJXq4Gbwb2GHYI32EhSLyk5dUV50M0fJG4Gl+sYtvAIlRXVlUH06GJkpHWklSboKzWDZVZbFcduP4fAvGeSUkxngphKZosVwKyWJBxREGU4fUKyGLLeznclizWHAKzdYInuRkDuKts9uKyfF2Hx9zrCbqYQVKhzZhH9iWpcFaImBCxxzxT9LrDxXaHXOMMPGyfswRCwOP0pFEd8yxo2fIpB2lY473eWat6eRdVO0Pi7xICk0HHfmhpoOO/I2xPuuZjjvoqKqDjgmSyiGdFfeZpDro2DH38UHHhBQFhhPjTtdBEXe9YDvcaKT+xCFWshMZhElOlJo/bMZcGpP9OI/bNR/02EU0H5YmxyF1Miw6s2Yhv890ZuMFQtlnQ07ZBJUpzLWeMTpbkZgXR7zPxbkb8AJK5OacuW3uRDqCIWqYP17+1ShNsWoSXxmcBA+Ik8k71zlwQgMnOPAIDQxQtK/onjGkrl/SPXMbmwKVzXSxsqRe1j3ToD+3NOfzKdPt6k1tJXVXUddurvCK6shCWfG46Yqq+U6C1igi2meUc0XbEXQHFQ+j84sG+y1Z6xJdLGNJKx1gu7+FjquXVN4YnMEAoaHpnpoGOpM0KamO4hrQx5I3S3ShHRafriQpTXysHH0RW5McfY741ALJ0UVVJNAtuusPiwXXrchvoVua8iZ7aD9Jh7TlU7nhX27ZcWD/4wr0fZBjgoSkYCFpSq/YATyKj6QiLd6BaUqv2IHW/sQkNGVQaBPekk8oCg7Mk7BEQ4IGQQGX5QdooHSf3Z8foMP6oMy69tuyBNYBXNE+XNEPpBOQ2CapdiqpBGTAAjIaEJDSCcimkdi+EpJs8dng+KiWWuAp/UUnzPiMPVggVlplorYQ9uUvf+vfRA9N5ZLkJJ/Ncl0oQQdgdnQhqQtR64KP6TtRaQjYSY51nE8UTRKNIBsdHPMmAAbQBeh6X94wOpfkTwZBuFhKQQSIZIA0GCAhAyQBUZSQp2A5MAqo9FRAnoSlgMzq54KKQhNf/slrkn9JKf8k1hBIzF0s+5Qwd9l4UPRJGNncko7CGm8hT+Iiqnv2L57tCxtkXaChEGfAP/Cqu+aWNEUW4E36isVdaEGRI+yLjIckCC/K0sP1XWn/SICuN5pHrSwxIW5FaIM8gmkyNm5hc6LclyUDX+ZTFAEAO2w1MApLwqDiIntmimIGkQ1gbw6LTUkxNfj72zKPSDE+ApyEbhEEmx7pKSaije0fw8TMEeQDR0CaN2hSUzSpDR4FVXpZcgzp5g5qvcwj3LBD6myQH4WnOAZ0HczY/XlEMY51N2GO/61XpBoxX/uGLPkaPuJJ9LElQeacBHTEcK1qq74sMuJpk6hiVzMUVuT7kTc2sOsvAkQbAI638S+iVPcrXjZQcuRtwMdAY4lLLhYmNjNvS+VtJqPJrcqeyRhCn5e0tFVZ514SVH1lMyORd4nb7P4knzRxjkQiyxjaJEnnFa/LlQpKk14Q7TMlQ8M2WcXQsoqhjQwwtKBOghLbAvPxmdkIcKIGaPyk8yPXeuXPX/y1qOJmVHPkAtDNCGrtA9yM+1CK9f5gsA/W/INaH8zOAmZnbyOoJ+7uthrpSROdKLDqSxGU1UjyPFAzZj/e2c0cbeN5JHrH0e5giAQMkdiDCMY6S5uAJ+YaNrhha0A2hFTZZP8cbDzwwfmI3IuXQ7IFtkPii6+EJphL9+MNFyD7lLmDXw745RhervhPNoRpTpjb2SiZANZ3e1lgmRlmAM2IYQbEMKPEHDYT3OgwNJqoqjIju3wlNCIdA7aExa+R7QJXZAB0YUb7iZHyLwzTrhHML2G9uBTBSwmwW1zidmjiuXQMvtj4I8X+B8SLAOKvBD2z32YfKVrk81aH1OWwONpV50B+3HG/6AfUz5dYvpwPCERrvEFmivVn4sAoUu4Rf4w0818wYA87gvr5UdbEoOVa0MtWZGscNfrVgAIoZwPWDYOeGckeop/yEQpQEiNeCYrQjPDtoQ26PfSO+0VsBEyyvC9U2KRncEnCNntm/wP4V6tnjpIlOWJlr2gQJ8eo8lQZVY7KqHKIDBa46ngdGa4LHY766ADPMXQU8I6BLA26ejtkI+dyQDSyHeQ5fL4S5PupN38aQ+XgmJODyx77Wq6k4PMgBYlnjQEFMM9awreJuZ9isbck82kyODFHjsXeRsC+32kSe2NO7C0Su23C358qxd47QezZIH+XxexcT/iNE5cfZ+H3ThQY7yThNwba0DRNbYHHQnXZFy0BvQaqshN+bXUhIO6wEVCIvi4Ex0gdmnfTZyE4X7H3MQzfjmC3n6gEYfmYJ7UtoAeC10eBxWPKiWqrZ4q3kCiULveEpjtiRT7uhYafyiPAw6dQsYcfRnapxkWCkUA2RiAbY8EYlkq+BCWfi/+Qkh+WSr6EbX5LleDyFoblPyVkf8IJycgV4yIVX5L8RRVfkoq/5bV+vISYxFWRhv+TTh5iCx4UKOAtLA8vB/nbGbNDxuwxJg3mH2O5MBG2VzNmjGQiyh7zdquPj2qB8jC0//dCX1hdaeeRE4mh/fMFrq81hWjhOqi6QHE4NqQLlohjtS44dD7GEjHk0Dkq+BGHz4uxUsWPyjQBTEZ6K8hjM16EJA4vBT037rsZIC0GiGSAhB5AMMSI4hAa8qxcw3dww4PccIQbcqGv8TnYYfOOjrqojDIHO+pl+ByhyBqIiZfwhqd96DXAHQQZcpGjjy9z9HOLUkZ4G504rDbs1lKy3VqXbMSxtrAZisMtbIOFwO42t3Kju6HRrb44xHI2INJGQBTe7lbdNQfT0VaQmHGQg7c7KHaRB8DqLvLqXubY4hYv5CUFG+h8B9OVxBornS0vsXr2ssrHSx1Dlv6UCCSQMAeDGQ7zRrk04/kIyGtJvyHrMQ3ivRtBzzRIhG0E+btwuCBvJOZdpoHSK4JdmTARTDszEcy6ZSKYdGwiqvsSOVdLg6XVZsApYtNliljkUsTwwlkB3Jjz38q9uq7dOurvlpNW3wsYxOqQejno6i3yYsEPhMIXg/ytCMQgH6d0iRtCmdok1K6TcAiToKwecTN6B8/oIM9oxKXFOQb2PoLeoy6DbIwSgUVJvWOsnwzTOzElksYF9o3TNuJ+gSHr/81PKTBv5wmHjJiEkC6P4Ds0bzMyZw7OnUglf0Mke+ucGZ8z0dyJE6mowvxboHg4lLvI5sXL1dzG2JSBAZ4+Qa9tAFPBS1HDqxyRKaIdh2Qme2SzHS8adGkqYHpJGkBDaWhG8kalnpzzCYzCgzPHS2XEkmicwdKdrThJHJTDHWZB43oO9QzOtzWXKrqcVyUwTz6z621r6jwrwHQAmcO8YfhA5G7GxBgo14jlpL6DOWs4+q9McL/YDs09JijRYIT7ibifSVbOA0SDH4SGgvQ3Y8UW9LcWHqShi5bgQWLyObN/zkhCp/2ETvfAyPccFqJU1dXlkFT17ZA24pUQJCAp4w1SwvMwqaUABjXcylbkcKw5G3gMFeMa2JNz9JxT5uisWcjvr3t0jp7J95n7z3DO3dB9C8z9Zwpyj+PVwNmKdJf9eu7xo2cwUYlqPIZ4d3wewnYdxWytBoyU4jOZmH15ajTiNGAAutfSAfdahO61hu+pMgP5aM6mRUe75x+9JKuMtO9LTkmruUO/pmrtrcgLTknbUnmH1k08lt7/aVn/rSj89uq2xHRwle82nTP5bVbmt7SwVok0Beak8ZrIcadM5z201g5mqC0H5Jw8Uq3gnUTERzivq0luTYwR1e0/VstfUkXDxh9JCKdeVnmT91D6Abqjgz/yBjc8gJYJfsteDGFZVQaOwhxdZZNcowjHy58p0cp7AGZJYmBOeQBTGM2+TCVbWMe7JQ0Q4cxtvP2SQdRgEBVWmFumiiZiRTiXhuUqvqoGgoy4Bsen4xJ5r4qxVUBnBOfp4jqK4joYKTtKQKAgC5XWJTjcR2C4hlFsgvdY7v39IMHAR8PNq4Hzcv6xdyOAcoOgdaBGId1EPmzivGnSXGIenmneLwC89heDnmmWXDNg4EdMewcY+E3kmp8O0LmcmILGF6ags6BYoXDoOjSsQ+M69iHPcmJ1KShohvBlOSAUPMVK+XNBrgkxAj6TUHNx7MBpF3RKODDMUbVnwzKqthD2KNgEAuDpE17EGMAxSjVF75sVFNaMK0xvUhqDqymacp6CwkA+dBxh7pKXfjKPT5a8J9vhQIoK5i6FXX0p5NylgHOXAs6GEeS08XKXLoWcu9Sg8IFRth/Uc5eCLmo6fMAOm1BC+rN6LkV1e0GXuZv/JuyZtMzDBPCkhAJJRy2GBJxnwzKSq0yKKPBJDOrKxIuQ7omgGGMlUZLko8QNTqSiXJ3BIDBAjMrEqLY6GYJ+0Jl9Vf6U6c7G/2p2/v979dWxnzL3zZp/dfJk3klIYuCUO12asuioeWQTumd/8dN9YQ9REDi73wowJ38smDH30pFWCmXgPl3SveJAuXdb+Oyi7hX7y2eb+GxLcxUot6Obuqs3YLzzoZ/xeS70Mz6/FPoZn5jUUMt8o7yGFe/JOmFPUGZ89sMy4/PBrl6Flf7tjjoLn3+ro1bg84GuXobPQx11Cj7bHbUU0iyXdFfPM3TWQsI3chKGlPE5H/byET4dre/ckYBSyVu7EfYKQRunHguqXzpnrDw+qqSg2zRk7ZpDqjcj/Go2K9K/6BCvyYO/lmVZA25Z9rItLFn0ZBFSfaR5meNR9Y/mmIj6NJZaX5ZYBiumC+We2XmfLFWFKpqubhadXsP6RNyWr5bEKlKFLCsZFWn2j7jxPjrKHGAdzEPqNNasDeydvfISjA4+mPaKzuGDCa8sHT6gF80+MEObc5gmT9QRYNEhKvUkMIG0LA/HReVOy7zDXbbVWUkjtnqA+9BlE7qkAfDkE5OhmDONuRPpmKlu9enLXrFvttqaIuIvswEW/dNl3u4KfIm5xk/aUUeMhnHuoopm7aqo2lv40lu8VtKO9uyFL9QvO/1d//vXqi/aXhZUHAlvd5j9t/Pz81uqq56mIZ4k8FmRPUSrpuJURRNtfCz4+mRX0RhUUpDrl0kq6jQve2VBsyYeZn1BmsC2+W4H/g2hva/8MumBHh9kPSyYQ19ir1gUAp4KSSmxE+hNAjrWur6MBTfzDuzk03nXIctJD3sm3F7Crnbpr7Ta1VZ6c2mrRtpIZ8K7u4MmVnBxqXt75RKoLOGDru4UrqeLKCE6qu1TJFLpkTpFMkGF7soOLhrWqAgz5nJuIV9WQTXlXHUWoNRiH/XI3T0GaBe4gWE+H0C5ciZ7j+mcKe/JRewoojpVOYp7EgtCS+AKOLjkebZsenxU6QDb1wDDxb+2RAWZolPW4X666Hb1Y7TJe9zdfTeBB4Ref1lC7+SNst8ny24j7hK7anQcljfLDqlrcpdxh6OJkZTVCYBOzT4TmkbJIqXb0b7sebxlT5yl0VGPU7HtD1Ahycd8VLUvfaEvbELokD3syHepTr5lMb6KhBfqJOxzg2CQXwQlKwFeVHgVKdkJgAe3WnS4HJNRyFNQXh8BVO7Yu93P7J1qGbbw9OTNEh2yo+LWyA9DzEalmJ0kMdskMTvmEzVWV3ymeOugoGU0EE7MZr2Suks+cZrrqi5X1flcxUiPrKlU33JZa5U2j4o9lntbFYLcQSYEaiq9ipX062TlCs+e9SoF7CQ1mi5Q9JO0FztoTXikMZIQAE5j3atGMFNJxhGSjHjYT8+OEKeMgVM2rDxub3uyCE3j74PNTGEePYO1N18UvfvFsXKb1kXPymxZG2nC40Vib/swsahn8pD2qIVbmDZKhh7SYcaca3cdS1U5JxPSnHJU63PTMmH2OzpvkQp1lxHH/x5uYbtnwHzL4Gmb+PIRqiga97jRbYBTJkRF9YhJ7G0/nio0FFrMc0VHPWP0LLJYYXWvkDb4cez9kuhZkNPqI1lGmWZAVSbukXmBJYMOC1FIO/m0nfzvipYVx6Bj+3eeUh83wqodv8/8A/Tb3fEUrLl8T+/23lj5nhE2oLds4ykbPX0iKf8ppJ2fPyce4luMQR5lvylNbMJCPIwWD5VQ1FwsrKyk+CSWtQB4AhuIiQ1YaUIs6JL9tBaJByiJNhRiw4+jg7F/ui9sbpe+0BfZL2iR2MX/1Bd22i6UD6QdodowN0W3gLnZt1CHJRvbR6ejgIMUDdQGAE8plHB1b2CjKmRF5VOZfWLR3YZjn6UL1XWMVmJbYXYMlk4FgQDqYKujnqzdDY/7UVZIEh1ljJjFSql4ozvNyZ77OhnUwKdf1MGMfenreFoFy8w9t94X9tK6K4/BlZhMpfpg1Z9J4APMuAqJZcDgNwkgDYy0EaVE4N3muOXBDO54UjEyvuHLUEnls3ynfY0zTpLoCaka1s9o0rLKEv5W3C9mCLcmu+reko9lNbSLUZcpJTShbJj9g50Meln2cknH/KgiFpe0S03Jh9WOm/XbKsCywKl0CPmKQ0gj8ZZ6AJQcuNdeDtx7jyWmMJ1EIiSp6ns1vgmzf0LjxlStVZZ30EvUqKqTfhIwW1Qn/aS7nN59x3wVdD9QnSYcEevmG96tmyVpwuuU8pK+UJlgTzQCIBrZPxnct2vVrypRlBDbx5ReaRPHPRLYCM1XVLRVQJJFFML+yRe8ooyNnv2zL5RlS7HZo2SkPUKtjxlt3kqa3BhpclFHPUYYRrVgs17RcIXFq3B0SFDZFEBb1VO+OR8Me4LQBBMg3wtQ0H2BRdxWgm54ALU1ewgQZyIHjOLKTBPwpAVIiCYjVgt0JmPDNxddqUDFrKWQKAJtu0IuQ+yh/O7wWlW9xOWXmJUvh4mC/woJ9V4DPTZbxYPck3MnUk1+OH3jqij1UVeptq5JpXpsmEqV1HUqwEGMK+q2isuKXu4E7oh3AneEjwWjX3egD4JBYsZcKRUHjsrBH1dOambdwn25l04Ca3u0fhL4ivNwdZHKOoWSjwJvaO/o+Lbn7ttWPXOgdty7cjxeVFygnVyT6AXerB+J3dBdvcmxioXI72o+8rv6/8l7G2i7rvIwcP+dn3vPPe8dyU+yrCfwPgeRPLVSEB0vSREm0X6TJ6GlCEFWZk2m89OutmuVnsvK4gkthVnDoGusOMpUaURRG0NVqjSe2p0RYKduIlqHPIEoMhEgQFMECDBYEAEeIsCADALN+n72Pufed58sC5uQNWLhd/c5++yf7/v2t79v7+/natRqyp9ejj2PHkRLn0ezy+/Nn0d7l186Nr+iR4/NL+vRY/Mnhud3S8Nkl9/ncmy+zmyzhLS/Daj+W3xSTS5EF1TL5XfAlkYXEZWHoyHL/oPRZnVe05xpPosr0HzO6bbLLwziF4hOgssvHRZfHPJYVuf5OBfPtdnlF4aHLr/H48bl9/5oFL5HRuHLPYyhqEHUuPwOInb5PfGuRS6/R8yoy++0UAesREc4YHrF11C6E8VllWXvTGR8oJX+Eispq4uvqSrJpYNd0KUuLb6lSumm6IdyBf0wTvBPp/b1q8gNBm8Gjdiquu6735oHWV/CDr9r2urduUSPU1P7b6K+1bumuU0rins01C6+q6qo+LEqzajpdXGVXLtttBuFg4VHToFQQifBj/mCtqb4nsoTa6ClGJSh1KqdeWJTq/plZGM3UDtzY01xSVGQmu+SjS48jq2xqu/uGaQ7rXKmtmb3fB75RBkw9rqMrXJ31m4wMAyECnOtKehKWgMaoXBFv9IkUenix8ol9Fu4Xh+KYpMy7vQjpwT+ZwY3irhP9wvuHDw/R88rbTFExq5peHMG3pzhNwqEYat2wpteJ2Oo2siqfmV25YgHgGOEP56BN8b/eVIBYk9y3xFIuWp384nxnxhqTjm5F0YMH2BEWoQ9xhjp6cw9OtTOzlyrbSOjQdKLimfwqtTnCaHOAKzQZ9we5jVlYxuDdPuWeRAPEb0om2Jn1LOivRMzW+DOC78MRkiynU2qZztQD919TwDgTtAw3Vts7PT+35rfpEQDtd04xEWz93+epCszmxbPgHqY68zq4rICzEurUJn5rnJvcm9GMp3Gs3DA/c5pUOVJqbIYUieByq2Xq302C+yguKpWW1kMdJZtEXjFPX7l0qGXLO7RxVUFvxxshud0ZmX2eqkOvAQpUK4VpDGkdESGghodRKCVjC4xPdVGbAsj2IKeI33MDaedwlOm6RL/mnbwjQK30UwLmX1UyggdHg05eQsA4YzqlbhwUjZmlcG2x1TJnA/RHlldxtaUCWawmMspv1qOKoKhw3uLi0fMppvVGiscR9aVoHfpAn+ptZvVDD0rNustJHuSvojB9zdxTBIOM4KRkkirpDIGLF7P5WylIGXH59xOrSz+XGf/WcrkgOV80CwvV4nZpoHeNEqzKqjYykshiigUo+NMBXuzZzNKG2/wFIMyH/Mph6zRybIY0um1TegUpDkwRSBmj3ZVckC+hfV1zBxl1VYREV5Scl0RzmwVBenuKerupKqlTvbJkGHRFWRKbtzGiVdX6Vyum0MtY1PQbuiuWjrJhp64Wp2srYGFkVhtOxuEcHq+SreKOBT3V9FWwUYwaDSACXdSp3bkioZ+pzVoTIdq+SxnEF9fu02bfK5J0MmPvn8Bj8I0PF+LGX9svUltwV9RjTckVruk3qQspTLVsAoOa59WqPCSvCB1HulFbxVFr5PZZL0QlXLXxfy7y66TZQpCzKtxfUUklsvteQzVJFebTe6z3YNl16HxnxOvxs1LcS3la01wLd2upbmW9rVWcC3TrmW4lvG11nCtqF0r2p7HLi4jqBn5hzE8TOhh7B8m8DClh4l/mMLDDj1M6SGigZOHMvBP/xkCn3J63wBJJ2+EpDggKboFJCWZTa3hczQb9TErsrHR9lw0pBrzmXAunLQxVQY9N6ltDFSq0EzCxrb7YJXszJXaZpGBcYA63NAshQZpNUrPfOMml03jsU36ZYQEE9uEHBvEqyszN3QqbA2fVGsYjoLh0BmvKk2GzKNSnMaJDy3xvkl6lyBazMA9UyuACRryGhJk0id6MZ97Gj4FHYfDi23c9BAP6dACSn1ytyGMzAxhxDYYsTHIWj6986LujhHJZNTfr2IvZ0To8M6a8qK1OtSUNlIH/k2a7Vo8IZxRtlSBKgwfSgS+rwlCCu/oTYgWSNnE1ors86nqHFDANa94rom3jpLPGIKu3Qp3r2E/SkGp1m5bH10h6DDFMF+3pn08YfhLf0JhwgkFHZLRqRpH1jJ0nsZSD4yazhG3VZTO9U4Ay6dFSI1KJxqcbjKj4U7VNuO0dS8T/90rxIsIXr9S9TZra7XtbUY0I7/WVm8Qv75VrFHbbPZg1Z1r36QsZxsDIGy33BMQHtmUnELgC/Ilwm3EOEOwTsKukc3aQ2S/KoHuo7m8ORZDQREWDLroGNu1EtYgGyQW9KdHlnIpRT1ULq2dLL6IlmuWjGXXkNnhqjLyhoIzlXTscLeqxrvS45r0x1WAebVOral6NDDy73RqO/LTvbmwvQdLY3uzM4ceJMXe96pCrzH12qFeTehxB/KLGA1x0QEVU3IFh1NamVNWgMiK0gzMLqzalFYtOUbgCQz2k3orshm1lgKWrrPK/e2a7ZqzMqaPTAit5m6vbeyK/eQjuKK2MfkITtVW0rOCgwbiGkmC8JRydjH8CDqi726vfYdotAbjSEabS0JzcWiuQ9KbaY0tncsVOeQofxFjJdETTVn4KZNJ7lphswfhmy4fGQnyH+HmYFm5a+8PSYrQ3uXp97fsXZ56f+scdaoGNkCjm/3ng8HgOG9TSL+U7XcLcZgmOwOuLLlO+1XVWkE434xYX494zlTtFHVB1kB4mrlWZL8jpQRJfVvtJbJNrbXn1oQd867aRWHHnAJ+8gFgk6BOb0HzH3h+t9XuoQ/Cc+KVM/UmtQp/banJVIhY94yljJ3FX0lkUWtFdlgrQ9KhxcXqI1oOe10CFoomnkjaxLxMKcIURdWsQESTISiOD/xakGE2yKxrfGRIOq0jpWGqMnMYj1Xyrsr8D9lDPI49JMAeNLEHzaw90JkMAQUBAyuAiJOsIbwVgTSbT7RPoAu8YCpsF6oVx5DqRLAaxCtEBJssfZ7UDhYCZQCe4CUDzeBKBM5AyzrGZill32Jqx4Po7B8QVWzsL0UVzZYJtHBthBaGUL8Y4RtvoYsTt9DF3w9aKBCUIOVQUJodoI8/01aj8oR2kMDQQVVyhz+wIIr/C4Mhj1gvq+L/1iWRJjSY/Y80B0+x0IrhKLjNbkwk2CSfUZx8JsXTHff0qQWBpFwco7YttT1JKqCVxWW52onsrGrPhsI2iN10A5dWOC/cWoTVxVN4nZaWwDNRT0NOjtE6iTnSWSRMGtX7QYH6vRsMzB7OovXL824g924Vk5R+bn94MIEPes2DHB8s3++SeXcFHvScIYccufijJ7DCaJu5o9PR1he5r7NATaqslHxLyDNGkwQUdopvtObLs1R094OHG1ZaDSDIGHMuUJ8NpEEu1zeNOY/qGyDwVVIesCro8YuGrcYNW1rFY1Y0Zieyj0rCvA2muFbiCWcld+XCpV7TrpST+yqDL83O6UrC2HdPV8YdeKO7cz/KgZgSHtbaKqALXFp8n1zQPiM2qakMz4YMLadvyvYVIOronmGZOpyCSXfPYDB40/ZcklG3xFU5o0TLtkETb/kLKXUDe5oO5oabG5qMgclonIxuTUa3JmOQVg1MRtFkVHsyiiej8LBL8WQUTUaNmYxecjJq0WSYUf63Acm3jt//KnE5m1YGC1biEfKwqeXKSUoliBu4ocjobHWBB1m0Y0GVZp9SKB5zrlK8+7SquIAS4EgdPMyTLTEmrSntF8kLkxkdeg2/kf6NGHrDdUX2LSkNcyxg8XyaVC4Ko4DncRNKSGAaIMqXGCPAHfvAgigN7mIUO9LK4jD62eMRjgynfKbiDRu/a2/aatGmrVCXVdbQpq0aPUPSpTdPAfQ1wbJT2Kh1cxmtkZNMjuyfV1eoCZJijkuOlYySgDv8QbRVVcFMlaIlp9WkwR+9srCiVPCzwOgEktsgjQ+Ut8ROVsJGxSlFyckpoHjbYJczJ3DkUYDYBuFagUclW0xWEUUh3ALa/IKCanejce1GtF3YUg03De+blAExmY/JeVRrhgIm+MovHwqMluOZc4TxDdANKaHeZzhbiN4g1sE2SwEWc4qv1MlslAvXKTH0vODATT8S2/MImrEpxTwQFJIUtXE/aGgJQyjm2GhIB4D6PvdNOUfOKLKUI2NHspt7PXkSvM57TSNd/DqZHL2GrBp+taeyJvNIy+VBuqTPdCzcH36QMwGgCewKOjSQWwVmVQTZf/bJL7zvjx58z4VHnha/hlfKXEdAHUQVpt2ysviSRPeqYBe1uLuo3R2Ce7iD1+JtASXz4Ab1jHoVRTswAKZf5fCsBJkvSwICJx9BKE0QlDKCUtexYjLmgyEDRILu68sOudtgXn6P91UhUkeKlJUhyd5RxvBEgWQWt7JPADVQBoq8ZyWsEtupkjxeDdIwI7ZoGl9WRu2AwZ40CnLWi5AsKNVEfhuS5kriqaGBlCOKaVIpmthcY4kootnmi4gI8DZnghEmIg29YvJRIsDIjnmDyrk89VjLbVR8SfbibKgRs4iSXpsb0pQbelAj5GcyWGE2KkXvNral+3Xy5Qj03W2oD7tFRLfIM7N5cw/TEFLcEFJ3LjgOjBBHdylq8gb5zuz1o39S2mwux4gPnVzdkDrHE1vAJeaA3yAEefAFYvP9vQP6S4snJT0VW8Ue+PMKsRtghdF/d8P3e9D1MIXN4TXlMpxuKYgDXRa1b+ZSe3yw+inlJoyRM8l6XpM4UXaczIDabTfnwz0//VY7ZOjF7Uw07Xj4EYoOSWTg+2iDGkg06nk923lvUm8GLtKEJKUc3iAbdTepg5LsKQeSSOLNNoG63qTwgsCgrWjozeFS0R4cbb8PspfEQJYSLViTJoBHChjs0TlJLxtq74OL2htqCNtPW+1lc3lODeV8/jVBvnBTNcyE5fUu/erVMBsSzENQD5LZ8+A582zwwjCa8c3UzDDjSJxhzD+ZIRVhijo8BLXpK8Q9QAj3ytqmfASm7bLNBPbYN2C7czbzESlSjkgh52xnzqYUQqDDh8MDsqtiEOP4vAvbQZ90n/ziODaOTTFqAJCq7WxqOVPZdJN6Pc3idc3J6pQ3DMzJps4dXWjlJ09rd3ihdYB1cKHlvSWQkcxigknysJFsrn5ygSxy+AS7+HOFi5osxc4NG0u/arP+DTpZfp2b2pkjP33DHP19PZ3DzR4dDAYLakgfS9mpd53+jc26ICrBHnyGXjQYxCyxTropFNrcuQW0XEGqdIdOLQh36ZS3/y0AApPBIy/fpNZbg+LcJjVjDU59k9poDYiJd1njLora/SKZsZ0VtVP0cwswWYMGfpvUb+CvjTUAyrhjko//jLtf1m6GPjgi69njg8GgIKvSQ7JGQ05LRTxrM+6hBTprwwcDaQ009GYydXuTNbOWfBXUJvU6+vP3secnBN5hGHc6DNAaQMAmDMe6qoYB81VKwoelaGLMx1EmXFwDSBCe2TUp4/ZZCIq9pHUY7xQiRPscL6XoTKRhcMSCAtRXDoqid+aopvXKBHTRPgWGs9qifYV04lXtu15JBBvP5SazUCuq/bFc44AsSNb3Wg7FLScOUpFFaY8PkIOg7zW9SVg4xp35LwuiOOq1QCdZ7t8hFd3LVyoosDD7ZUa0r9ip1dVWcQrdXuNRhGfL2f+hZDqsG5Okh3Aq+KRSBIiWCR1dpJpPQ1ObLKOz8BTVHw9TvTPXBMsOwVJ4WG7HM0/AwqvyqAGnCOCMAzgFgFPYTsunkXpYRVFkpsrYUmMhOXTMtgPeAwAUGw9RK5eCKenZR5SMho89+OhDFd+RJF6MpTE0Dx2iLRJS2rSldpIZKdGW8rSlWrRlxtFWBMBQgbbUDWhL8WntDWiLjNw9X2IqU0tT2YNGJnxmGuEa0/sAn2XiF5Uhg46yaztlak0Za8zZKarEqbrKbALTjm0GymS8Mze261KonaBGlfarFJDErSWkU6fkiCFe1b4gS4ILEwZoALEcT2cj2GN7NoJNJQXImgNW2k5dJo2tSaXwnJFN2sqOjWZUz8acwR8T5scOD0+iGZWCBAA6MZIhxjxO91nlBj/W8y7dv/cVQtgI6tdVTFdz3Nqu0Jb1bWEjEZqa2LjG3P8f1attZJWN+XPATSXJggVbimySDbdmlhqZRnuS1XQQYmxcEwF44/IIz6QnA0oT2nsePo0+E8dOe5+JyK2tZ9koXG5Sa2zkznwI2PwqG7mTuO9YtEt35z60IIp/3mrkrG/kP6TEjDf2q3QtLY8ydmnZtVHZadQhTWmOWtShbYeoowPMNwbqiG1SdoBQ+lUXoAL6bFLGoEZwt0+FsWs39fqya1XZGY6riBY1VexkfyKKpNIGo9fgMqCWQB7HdG0YUDCloIAMWkRutgvzhicwuhjopOOm6rJj4zKxXTfVr7pzuQHByw/q8Ie8VxQ/uHh65ME1/6A1Tjan6ADNxyM0z1YUHab5xKZE8ynIbz2bkru9xBXVovaYqN0QtWc2BfpMmNpT1DeJ2lOgqQ78KTBKju3AQkj32XiI2lOL6Eoohh23tiu0ZWNuCxuBNquOTWqboR3JaovmHvw5U3sXqV2jZT0iUGMsG1GNWFshH5+IIiOkYmQZQpZGZNG1dNrMemcOGisg93md9rBWz6MCqopEGABayCICehGFd1NO1kxq9JumQL+J6Og3UR7+xsS3QGjquYBajgE10WguMn/l1ljiRGNajpaCjGH7G2QykU2YyaTMZFJmMjYNXCQlLpIGLpIGLpIOcZEDUh4YBS1qzC3o8t7FtpgEWoXH9wRa/o2g5d8IWv6NoKXfAFrcJP1dZLZHygNtBcTQca3Z5gwL6lbhDacVs/egZNzss2QjitYYbFtjsgd6MmMm2GvJD6a1rZmRJW5a25pNmaOXhe25oi4za8qUjrM7iyOiwF6AsFKKsvGkc2yEh9aLwwJFSv1EKF1FoINBP5HNaN/MyOYiIxMpPN6jo/MubkJ0BBDNKFPm4zrS4zqKWh1N2g511KGOOnYSgNg1B+CJ7QLxdWiH68woEdkogw0OlG+gvYwkzS7SXmY7bGY1AZpSzpqSH+ckj9NJHDyZSkdkbTbOAbmLx/NdPO/6qAZBhizKOmRK0iH1vmOj4ikco6gmcKhVl26/oWDKZQAPDL6RjnTTAMS0ALJ8EUCWI0CcrKtng8rEjaGyzGyzExS0scka18HLg54OrICM35y0KRF6z1kiuGhpgotHCC5qEXY0QnBRIOwY6ZqBy5lt0KbXdusqB64/4a5LOvnu1k727YST9VaBdJgTjGO+Ds8INxnhJiM7HTr44ZhNMWCDzFJjRn6MSQaGyTQOwzOw7rpk8wjoiAkrMWElJeTHAfkpIX+ijfxJZPeBxvQiKHg5nsGgF9EYqoUw7UqDpAF0wsiHfQVpAJdTDAjXDfZBSxrG/mRw+81hdXR5dTAsECrDoGrwGN/ATb+l5d5gBikPPl1q8F2kfh58ZNORweMZb3c8wcaeYCNPsKCL2R4a2cCfVfAfW2n4M2PRHq5Y1hFQ7JUK/qRlBH/WAqlhJ70ZNeVjsyzaCCSIJ9IalFvgT89KW5CxKbte02biLvyXBdFsK7Y3IneTJW7YU8ZZ2r9fZ/8L2QcUwbKD3F+LGjt2Fy4vCHe7O/RVDEMi3BUov8uX0poeDL62IFyEh5HFY0OGI0s03+Pmj8PXuXs3/OmQz/pJ+H0G/pNa4S59ckG4c1Qa0/wyth3Ba2mcz4vYxRpg6tQ+d/kbC3gm5nTxJzr7p7I9nlY4zQAaYDRaKnTqdl/+0oJwy4o/0T0NxbNQXAlF1PVPQnEKihSg1xme1VF40XXvwj9kavPQlxZE8Z901h78Xyip2clBWVmc1HNIFO/T5Hkli3fqSRDAxUuEG/ANKXp8KI0X77W7Lmq3EV3RJucr47o7p62pyfpN9rGryV3obmX2l8oaypE8kHWl3D1yD7lkSnf1yClSwq10h952SjhFrQ9k7YQV/eJf65IPg8m/7ibG9Gnx0x1U9neCccsoJOHJh/QkHlwUj/sfZ3T2QSAGhj/RhGjTRHOAh0QRo2gY44D+4ht4/fEnmOVZunf8JabR+BPKw96iGjNMNUhEJ+Hb28YTkUBZfhwRiSEioqNqUHizXx6zwKiBE7Aol7k/gz8JUeHZx7GBNhH+42CdNmQfNMVmacqhuZpyx762IMgI+HGxSa2lg+j1aElmazqQUG49eg2QFUnxp5pz8mM//7axvxzqqFfPaupofY1Nw8+14SfyhE3qLupvi1VO0/n3ocs+quBHBIj9yhJXuRsHsqomEVm5u9FiTmEsUxgc/LoL7emkVX6M2/o4xn84BIsGlipY6XnrGzd4nKz0lPuLAAcy0yPbOuhUkinOMBx6wdrtnTp7nx6iwI03S4EC8MPZnMmG2T38DcKPcMc+TEOTyKCLP0UiHfPFsRt8EY394vCXlv7CjP3iyhNLf6HHfnHwBqNSY784d4M+JH8hh744Er44i7Tsl916KzDEARmHi0DO3Bqtu4207t6pboi6gDTeS54jNMfD5kbQ/FmCTUPjH9LZerT5avHkXA6z5DMNb35e7EwffXy8mWIHJANZ/DOVHTN04L6t5vAvwQdPkzV9pa3wwXMCzyKfPKvRfNod/f1TwvXQygPvcGZUb5kWuSArrx6qfuj6A+zjHWyzR5yhQD9+4GnAXNdb5R74/VPCs6kCDcjRQMvNwBzmKOw7u0XLGcUuKcsyMXvq+89cPvv2P/6E+7VcNN298yfpjpO5p3gitLZ232M2uyb8RAM34qUSLZJXYYof6pP8RoCn30XMGjq89s9u0CEGgEcW7M8lm8sZGIcaMmg2rhfkZEmycOpFYklOFbKguHQYpJkdP7D9yawJgLRlNACSM66HgvLfC0aobH5MltMY0qQ4oujOSfONUC8I9WpGrSJn1Kkb3gVl31cqJtM5oit21y0ictJBasK5rVOmTGkmyqab0W5b0x48U1eGaPxB2oFxg2kHepjZrFfhpldF3gHg7rqKKeCkmlF3ldrS0oImYjIxjNh7Fl6j78t6mtEMRwE0zV0TXtVpHxBb4gUYiTCcOUsSp9Bki2/oyojcZNBFxSMdwzXcxYwL91egmHNfoHtnxYxrI07anfwin+GN++byF8d+c8V/86ZR62Jg03O50JQMHH0sjlDQlcrwDXwvkJAm/GqPXwX4Vbg20ZqTeNgRtfiuCziPwLE+n9bYS7G5lkrEKt4/fG4OCOc/4h0QPiqexQPhXyrvgfATm8B++G+cCexzBOvVWwHrbzdSM4aRok4i6iQKXktR8FqKqLvIPfQX1F3E3UWwBO+2ESzILTayEXcOv8hnKcKzTBpGxMOIyGfJelmnYgtwNe298slf/1quOiMu724L+SyNUsBiQ0XKKuBLv1gZ9znRn3iJkbG80b9IxmiWUfUnMiX8v0hkfi1/JBg3Gmy5Uxq9zRq3frs17vNi+15r3I/E9r15Qi5UOnwjS9MyooP1jBbzk0v7Ik1kZJMp2QyvQJNKbGWZq3bkEXfhtvXJS4s8SdmYcEb9Clm3s/fUBJsl+vgH6EFl5vKcYqrmbAjsOyMj4JiMgD8ndoQJIWNBw2e3rU+meKvKBOqtcXK+NC1lx1ur+sgDVrHVao4p4e8oU+2jEAwlUf08xYRBS1Zj41w6ujMl21EV7FQVw4RzwRpM6LasTDNqsJVIVtNeaZPinbjF2lbux5fCVz+Ptono/LmeNrOZMoUXa5mDeNtWug4DxKchqwHx64jgLGE1dwChkU02CbrPFykslq3C2Ih8KSOX1LZDxmzBKxLxZwB/qcfq6Qar2xtc5sRg1K8Eq6K2cyO7p6HB4MYGo2iFDi1vEC93PxQ78o7H6IzHKMwaUbkeUIngb9TrgE7c2bb1q04TeIjwSmk87igj3Vi0R8NpgykNYIwpADF3pHGDt8wD6mK0cY+CjfsQmpdRwkZaATILrVbbc+lucwW2vH26jHqJT5NsnCkjytSQNg2lgV4izI0RZ97pES2U8QPufiMbKKsZtYWckVmA2VhFZPkdo2XhnDfVQVsOnI+Te7MK8w2hSEdNNbnNqAE8lVpfoxDVjkd112a1ticXEWzkM5sBhXaHKXSYjCk9iZ+xJNAFvmMYOopSCXWIojQ2fHfZtXFpKIFpVsVAxR3bBSruEBV3iIo7dGzcASqOGyrGM4+Girueij80lop7N0PFyCkzCgrsP+wszTPT4L+ZZNh2mVHc9F8lmTFr+W/GSzcThWbMswzSBPfq8S2p0JK8iZaa0AVv10qPuPSm4zc/T9a0+tB/Vy7tv6uezX8XjQJUf8KITkd20HpbuL/6r3J73iFb7U9/nRNN5knjiCu3CoNJoZvPo0hGmTXh86iHhNV8rkc+v4FbbhKgGLNbbjTklhu10Bqhm7CV7sI3FoRTxf0sPnNXYqswbLBhgv+5fpbq7LD2WXljpDyvqGD3zH+tiAYN/oaBaxr4zRLdjcEV5vZNKUbpyiX9iVxFEWAy0iKKDJ5Ff+prC8IVxcc1Wsw96Ut51EBNbRVmMhvGL6b5+w7U7o1gX/u317/W+F2Et8a/PQ1vJ9G1g6J5ufu+jufeH9cYHYvrR9w3npUe+zrm6L9fTY7i9K8Dl/+mhct/84LikkT8J8R4RaIgX8p/q+jsqeBoxMCd2G9+RUtnWdOyuESW5bUQuUn9itVu8AlQC7axFvI/oe5xgaykvRryGyiKVBSwoFLFYQ0K514rKS7z1CYayF2kDG9km1C9Tm/bHLz7QXgN4WSLunhpRsbprAxjW3gjyeYshn6h1vz4BrXsQPoWBkm2VuC1LZ536P1A6PNO7KjJmFs5BY80PnL69XQ9n2Es5pmhBZK5mRq0x5y0R/SbzTkQkLS5NcVnZFWgPUzmttRlZGXZsRns3F34s341S1i2X02uFe49H1sAXbO8zb2bfy2/gZYDo670RCwiqXSExmS6pzPXpcxfWal7MnO9EtVV3a+kwyWxe7rqObuHPN0w/F2Hzx1qCuv+SnTddX/1sQUMROOuS6D8CFcN6YKCzDn5V8Re8RotL/rlMrUNTz9iGztbV2Y3ORrvySUC9+AzC6L4F1pkbuH7FPH6qreATN3q2ua7ckkmGrZTV5rGhIN5uRDV1Ox1+dqc/PJHXq2EV6g/yJoMALRTo5VWhEoqVNKjlW4PlXSoZEYrrQqVTKgUjVa6I1SKQqV4tNLqUCkOlZLRStOz1+WvoVlpUqMp7mJ8xMP4iDKb2qKuJuzK2bvus1OzW+87WK20K2Z/4b6D1Qp7++zMfQftqtnqvoPV7faO2TX3HaxW2dWzK+87aKdni/sOVlOzgx/re2dn4NvB4Fpy7+wq+jm4OnnvbHrfQfg8PcQP7O2zqw5RvYN2xezMIfzarpzdcujgwYObBSePcunozKZo+i4tEyDYDiav6YzFbi5cF193x+I1Fy7D19lYjObC9fB1bywuc+FyfJ2PxWIu3AS+nhiLv1y4SXw9uQTmxqOMjRCHsDbh4vpnBGeuKCXjrcB5JYuWoltWAltfNvraI2w5vl4++toj7DZ8fdvoa4+wKXw9NfraI2wFvl4x+tojbCW+Xjn62iPsdnx9++jrGyFMsmk6IiwJCOv9zCBsVUDYqqUQdgdO+46lELYaX69eCmHT+Hp6KYStwddrlkLYi/D1i5ZC2Ivx9YuXQtid+PrO5wFhy39WEGa7lMCl60y/7KJVcZnaZdZU8U42yj93FXOXHP3h8D7pjvqdtJkw6lHk4257Lt2ZY9Ipl/arZE8e5Hs8sUzrSluzM8fwxDtzaVMXg4SWYvxfzKCi2F0ghoexjW2+G3Ygm7tLPxzZxM//sOUPYA1s3T1yW1i0dfd4644Xb90Gtm5DaWTUaKUVoZIKlfRopdtDJR0qmdFKq0IlEypFo5XuCJWiUCkerbQ6VIpDpWS0kt+6DWzdZiyVmkCiMZ9iwNb9M0OiSJ8S6FOWqdWlsdome/KkTZ5PB/IE2f7RUQJ5wL/2D0435GxjIqj7sVRKa0qdOWm70Ovu6bLrhNX9Mhm1Ynm2/2kaNsY9JCov4M92s21WlCucgIYpXIITvdWY07cul1mNPlfwalaUU1zVOFH29DY7Va50wvsB6W22Y3t1heauai5fiX4GVQoE0HWv3GG22Q6e2FtcWuhIGLnBD8Qr5AiXAvXKAmNS8+ifI2s0pLexnbCd6TK2iU2rTm2Xbc9fDFAHzYpf1hX7fi3V7p0B5md/NIKEi6MPnvIP7MrZ7mvz22x3kaCGXU+EXhdz3EDLXaDlF4W2D//Ytz1lV87KN1dTsz+4fv365Ftmt/3vsz+GX/feZ1ccLFfYLsYY7dkU03/ZZTtykQGa7MoHnax7d2SEzeVWAs8yVu7Mc2tAdbgNEZxPIRIrA4hIx8ygVL3b8ZC0rmKnduYrkPWM1KYNEURutZvC/I7WoD1Rg6KwOzfIdEZq0LYYgZawO4+R44zUoJ0xARVhd54iuxmpQZtjB/SD3XkXec1IDdofM1AOduc9ZDQjNZAHUbapfplYCYqBafEX4i5t3kKchfhKNdViF1MtdjEV2MUUsotfQk9sU9uphhWNY0Cz9tArMZRjXMOWjmpBpXflk0TbLqkrZfWefIWnnYMNd8G1lk8FPvKMJ2HllDsPpbdTPcWNLPdVL4Wq2mn3dKuq5qpF6O8Hvqpxxh39QVPVcNWJwNlC1chF7tFW1Yir9sJYQ9XYxe58q2rMVbthrKFq4hL3tK/qXx+9NrJwH73WZr+P/Yh9YP3rh77v6zO7vvajdv2D17g+rCL3wDXPvIUT7gEPJyeddI8GqN3wRCDloytTdu3KB7PFl/ZjDjRua3IeY3q/0LIGqaaA9YpnNulO3Ez1fN7JZtNyyolyAkOBEJcGzt2zaqKTyI7S0kSxDGA4FljQpOvxOdYkBeeadI9eJ/PPSfd9NP+cdIPr5PU1aSfZ/HPSPXadTT9mi3IK3R3jbHYV/cSwl1E2a5uik2XSM9nszPAjJ8teT2ezGxc/drKcANAttyteszePyIWpDYkos8tnD9ipQ3bFva/ZSzHWcoAJDQaDo9FuIynBOB7HDvNoJ/vDbNoEyjh7vclAVtRV166Y3XLobkHpn0plO7iblpLDFNoc/r9ruupsR59oWdsVsxv5AwUfmKEPuJqqUdagahqqJeOqaahmuZqBar1x1QxUW8XVIqg2Ma5aBNUKrgasp9eQRjPt1BygHRs3GeVk5ERWmmAiQYZhEV/YTOKRa081W2hoqGNzd/G6Xy/ZOnV3OWWzGbWFwuDnZpstKDiLndqsrc0cpX2clZv1DB4ZVgoPGVt2gxspK8SB1iGkpY2u7WVgDSaEw8jTG4TcKhIr3Vq27JBuytvdSaeB0qW7ePAUUrqkMOGSrfAs/CITT4lB9tFH0K3yBqUyeEpK8pSU7nRo6eL3yVOy+ULdytAGtzA0OXZoF+5dcmgZelbiLbzKtc3cqtpmZP5G+bfwBHimmsKUFY5jXzRBZiXdFfp47Dk59ghbkFtNHoLU5u+2uZ3CMNXQQr5r+t2z9r6DFC/cmxJmGDRmOJdixmfdz9ymegc031vEawW7RrsTfGSsKSFEVEmnf7M06gBmBb1+/fr1/21Xjm6aal+pHMa5dPr1fQwdudpqDFDnNEBr+7RVe6EOOaEo3PN2ZyXofkj7Mc5XDbvTGf5hKvYSTdhL9NXkf2SsLD4jq2Qu1xmMCvOzKidKjWYC06CsRm51v1IO7U5B8NfbbISHEXsMR+4Eald8pLwbc7cYd/ieU8PKxrXBqcDCEsrlktVVuk6IamJ2y33V5OzWQw+69/IJ91ZmLnaikVCqYrZaVEXWdhIqkXJ1sJqcvevQg+6X50eqKa7mBZ/iIFT9hXFVdW0nZ2fGvYlhOI3QNdESuiaC0DWBQlc18WDVcSv3L26EbUwWv4hqO2EnD86uGdd1WuNZwA2h1bk5UHQ9KAJYW4BZGizZkmDp1XYcZnLq52bhtcTEJ2q7JCgnlwJlAdDq3Rhay24OWstvDVq3LQmtqfHQWvl80NbtSwFkxY1oaxVAa/mNoXXHzUFr9a1Ba3pJaK0ZD60XPS+09WKkrXQsKO+kuGajL1QpbRcPciu9h43MgBfayD01YI4HrBPkwjdUnX7VtXo3Sz0yw9MJ1GxSEgUjmxIXZY4uKWUWclHYC86OctHH7vFcFBVlRVwUb+R6Tu0fHiuwMn/fli+aCfBEf2Wnndpncxfv37u4mqxtz5l9oGYtfi1LZdNK2+6eXKOemNrInRgd9TE/6rE6Rgd1DKExGZjZk2vcIWzXZn5s+xcx/YpvLzGDi3Zmn9u4mOWX0GIvpRBET8EY3s6S2B6Eb6uTdLSTLh8fKdj2cEzoPm0x8omGT1MAigqDHAccUncxNBAPVO1zd49Uwi2H989e0si+b232S+MutkfvrvlSOMZ5a0MWkTv2Vl9ZW+NOhBLm9POlSnrxBEMamV25UQcQKOgxIPukH4Kk0nd6vorQQhRTvLtXwsAjJ7fnSCDb/UPUD+mhCg9BV/JCy8l7uXcQ362sd+UGPcZtYk1xXIOokpptNl6nehWykcGVO++lOHG/lsdZ42BAKQcoG0bMkabcE2cXhNvgjn1sQRQPhMDW3kMaIXf0rFfCH4DKf8udO8uVbWwnNqspG5NLdkwu2TEmDXG/99EF4Xo4VHcMfh/+GMuAayhvmhLBKKIVau37hlwRvAPIENl7L+Qm0gu7FpO7BkXAL9AxckaJ4p9qdNd0H2M/nbtYPCdHzV7j9fPYJ9k9wmrvr2mCm2SKJuCSfHLIY3FGrQJhEN1B1syhBfNfYhLH52k8R29tPIbHY2g8phnPKupNDjmFXPmEdwp5PKQ+oMYbP9FWN2hogfhaor3zob2P31R7aqyrymOfGHVVaX8jn2VOx5/bnLLGw/WrmgKrFRSzGwOrpW07lTmzjRQyU5exTTGcGS4/gdnZMawaBcuKSo0nlFWSYw+gtehdOaxqULud2ldXsMWpbaSvcOAWDTpGMteO2aFtEmK3sF0uJTKmjCKGo5riDpjWGAOwibCW7sfoSTDv/XvLDmlY2mKAcVMlHNLMYHS0Ah+WCQYkh37Q3YljRGiOkmYoSho6WiVW9x3u0wY2E2ogBT7IX2K4QOVWNZHa9u21nb2bhKAvMNpa6uNPpZwv0BqfsMtnoQr5p8nRxA0+jOz78qf8SSA/ePQj/sGRx/EA6IKvQTwtsRp52nnGM6UfV8H1Jq2U07uMN0oy/UpbTkIZ1zNCVAbmYpq5mABgAwDeWyV7OK9kmVIGRIlJluLS2LTUTtIdTU9l7viHcYRX/QhhodukX0m6x5R9rI4JQDEKCxCGGiEMxelnogxz3QKaEEm6VMz0e008wrRxLqOcSKT5g2StbAL/x/ytnIN8MrNRcJiNyP01cg+cJ/fXKDjMRsDbT5zng8Tg6jsc04k8aRXhdL0/FsGzB3RqPnyKnWq/x061bVdaw043eMqBQTWOHT5F3XEKBsbqm2U7YkWTW9QKVtxbEZ6ElewC1Y4x0mvHGKFVJsmnTNKBsJwMu6Pw8UPILfKPmmwWnOrUcNgM3Py9j6b3u1TsBMmglgHUkkAt2cUPFkfwTYa5Ny5+Y74hF79F3wQXv/dLJYOhqFzb5B1U2/zcDa3mIQaj8ITEmoLicA2HahXs7LlOYe5HmGCw5NQUGhYTznppwwPsVsb/YRkcBAWnDDHtPHA8B/S4jMj3NRxxAh0ugWmSjiRJR5LWBeznirxLI5yTR9UYN/Kznxl1I0cyffSzPi6jn3P48UuLhyIowlnPH7cpWrVDq6ggCso+DXAAxuL3pTFASAAIifWMGppJfHrBMdUZElGIpOP9hYFrSoodXWAwNx+aB2OeJsNBesxQY5wf5PRn24F4JseAA7+DH79rlArOv8MEOiIGajcA2T+QLUg84+jWmiKuolxbje6UEbBe6/ziN1ZgdOWB2dyCNt0ugKjgrn42RLRWrqjdlXY5rd3ldvmJUACFpOHTw7HGFDLpUrFN8lDOr2YIOY2dRMqI+Yi2ESyzmEhSUgovz5qCICRJEJLu/s+RICTdOeSrdOZI4pTEY2dypZ3hGM8cqhZTF4fTYJJbsYcZZdoJgg0JmA0WpbM+HJT2a/yu9hpfH9b4TFjjG3EAzRq3kpwq3288r7ohKYwhBDWWEBoiXeCgxrqdJNh/j0ShZhfQ4VURUoxVRVJpCkON/C4Z5ncYN2tzO8tbg744c2uH6O2BwWCwMJbebO0WPhfCqyP9nfzcMP09/Llh+nuoXT4eCkA0mokmsprGqoloohsTzRM/daJZGNlKnXRrPfmwC/wt0NFJvQQroWTfnB2cL3OfbfdryOSzDfHIccSjrJr9bIt40IRMFWmlOc840k90M/TTkw0SzXND4uDiC4nEsKVz1IgW4j47gstbwdxXVNjl23jzQE5RaUoJSykBLB3BUoMPjvuR0h9DecIW19QY0IBSnWpKEIH5GBaFW8SugYV3KjORccghIUQiWikdY5/jkcPmkzFj3Hog+PZ7jBC0cHGsEHTmomeQhC5ytPGpysjXhoRd8p9BQkHyStvyV4OaBb2kMNheErjLjxEjxgFbjgX2CPhA1SBxoluleHuoJxIplDbonS7w3Grj5qFUmFFm0weJ8eKKMOj9SxFANImclFSZnBjNcwHshQaw+AGCEwdRcOpjwSkX0C0JekvGSrQ3FG1fCHH+9/XfhIWSvVALZTAepIe+cAOQPvD5sd+c+HyzuH6CJXXIEELOCcQIXUACDP5dO/rGjCr4artMAwL4OoMC2BCuFMU5xZsmY6PRRixF/FhVRiO4MYQbQ7ihoJhuBj00RtvYWMbwZ6ZMWvITCDwxbYExbYHJePwqjIzcq+LF+I2fO35Pizay7g4I3hKQtc1Kt6V2D7UQvPgjwvCij+7/ws1gmPY1CuxDyYY0P1kTEjwoftILMV0lOTq3KeFWFbycFLxH/ntVkGXEwxGeRS6pCN36//y4Jsw2O0GEN0GEN0FyxUQxgYFvkeMu4yyU5XKMAFTe5jAVKMDCuJNodLjM3lacguLDuraqeFxZs0E8rDHQwUvg9yO60pSG0GoKU9AtZe+lmTXuUFRTO8W/wrPJQxF72LsJrNJ7Scb9pMUHFH+QjlaGTg5HpQ7vP9x6vyN/CSsM1zFwAibhsWnxOBpuwKczONRp+LmukjxS2Yz057OxHe/ILUxiZGCY633M4KKxg8MoIS8TvxdBrd+PMPaBzEYfZZQZ8mhEp7NHsDVoFdNh7C117+c4ZsRcvhrT8+D8oI5t5la6ake+dni8Z4bmc6c17mjE8fONOxJxrjIzow5HVYeSY4/kSMATttbpZGx9mgSdYfhhCoYfl1FGuYVSCkGiFEKGg26YDeIOThZpMXTWGkx1BcTW+7nMZaWEhy/Fh0Q5D+lmkg8Rsa2C3/9+LLHNNCg8NobQZjKA4BBkjj0nEvs5RXG0J6Je1u2kGIHnsmhG+LoQtEP27sjgyT8JiTnxCff9BH6zgN/8o1Ja4y6IGjr6+5Xmpn4jpOLEPKG9Fdjc/1BGwAvny8Qad8bUzuwtJ/V4FjAc2CTErKHAJgk85OAmLwUeN3jLfBk5DGWJ7zjIyVrgkTjmc6K2fnCvJcp8zXCUk7iJchL7KCeVj3IiMcpJCRA702rpVUNhTiRW2CB2NmFOyjCACwY+I1K+xBcZTxhaKxcNrZ0LJkQswcb4VgegSNKpi/oTWmipgapDhAcndji5j46PlJM2dpe+zg7+03hz4xtomlAYxGtME5KaUENNZDZGGYyjryQE8MxGeysJ4JkwWkkhM9tBI7MuncTinH0X/8JPUFK+QeMuGQ4qbtwThh35GRYw8axpgofyL9owajdRNE30uAkMwHIQ+fYDUbiisXqruGKscd8BZLhVmOLO2GKTOh5ZY3ub1DH4m21S98PffJM6Cn/NOnUs2qyuscL9lKFbrst4qOfS/VXyCvEtQxWPRtXUZvW0CUvwQ0OMNBrlmkAI6/SRqJxqLd7Lpi7+WAL1dudwfd0f1UQ3dNN0BIrr1EWDidZAijocWT2XV4gioNpn+0TCJ70XZYEwP6wo2W9DgsadN3UAMsGPWlBnDZkcnsFP34kzPGModE6aNb2dpd5oLNBcaAiH3Hsx5ktkduXMXo/pP1C2l78YFnN3DhHNr5mW/kD11kAvp3F810xdydY9nE1eIR4B+P8HU9uE8xgavs9/zBAVPMy4PMG4fAjKU5vVo1De1keWSLx/G/H+qVl7qFwBDxwwBxSvcF0fx0E8NjoICvt3v8HsjAr3AkSqi8uOy0rO1EfPYDdZ8WAZ26kHy6i3vEHKlyVzi5y5hWLy7jKqYmL7quxQ0BcANJ3uwRbJZ8yIjS4NK0a4r7oR3ic9loWdpDvOQAFtrL9rCOuqRXLnh0nubJtKM8z/vTqjeiVeyp4ztGzP8rLd2PDXlxOn3khBlaxkXqzKqDeVIefnIP948UWEfzRiqds4pHJYT6irHoKfJHcfYUGndbI79kNSjMd9GHTjRmo27jhv90Q5x3VrP5W4M/yhbm2oMmyo9+tmQz2mkQUc0QjL+3WVtWIRQYUjuklz7QRT0gbxNl3GsLvPo7ed0kO7aNhNKVVxQrtpwrtpN+ymmDk4wt00dmig0Q27adzrZTZj6UPXNmMc/S50bDaIQ9rvp76TsJ8mtJ/GvS6/LCOfQNu4QautQQMymBtGKTMbxD26SW3cCYMAAs6aHbXLayThNSKbNYKiMrYGGhenrrBdZ2AbSWaEcN/45Pv+KN5BKb343XY8VGy9y2yCTiC8C3YJUJmN91YoJDhFyZrlPGXDD0MMy7jDQ+SNrlKtIeZmNTqVNNveI19dEM402x7W0s221xm3cy65yXV4M/MbWHRrG5h5LhtYlgUYtPhM/Jz2l6zZX2LcQW9qfyE+l2TN3sHQ/AMMB5Tiq3E4ycJ+22n4qG4Ymmy3H2dLbjeje0w0ssdcUW1WcUWN7jLfUq1txkU3sYnc0d5EEPJXVbOynlG0Sq8q5qURr0NMfGbc26PaRp5YcKYRTaTLwlDC9BMTa7SRS/e/QrwtApK1GvMBs+GAeZl4W0RNbhDC0wgAcp0SQCbQPLlQoM5Wyow8Nfzg70TFRDWKyWXV4qR3Ikv4mmpx0jsb1UQ1nPSSQn32gkJO+oSq4qGoblDlggqa3WcUqG+onLTCKspWandK6z6kfUjKQs6hFRvNQwKbilnzULWNeSKfgE7MBnFOeV7pOwi8MiJeKYFCab/TOG3E0plWW2daQHGixFQBZoN4XHleid/wIB4y8CHxyocNacsnWJ54iIVyA5iMKNBiI+rrEGiR+HvT2ofbX+OCvoQL+tHhBX3CbFYXDa3FC/jhO4d0AVDiF1rzOsUwWlA+lKJmMLCbmXGG92QYh2dQrXG8TLzbQAvvNZ74ZtSjrGrR5DeIE8arybB2XsKtAkd0J1uUd1L5SW8Q7xtakoaXIMq7l4eXJTEX7FKVGoPa7i8TEPMCa1yG6+TzOM4vtsZ5icf5BI/zoik1yMnGPTzEMR5Wi4SLR9RY4eKh1pI4QUviOC2JhxTq634xHFdBsJC4+bLMEhaGWrQwRtRy1VoYiRckJAkSqrU44qAV368aYe8djPj7RxbHYsVc0iWKFyQwxJZxR1ptHRleHBHW2CDe1loc+rmq5tKr5tCaV81lKW3ikh3ov37W68xO7CCnR36NQvrI6xGlWrE44TV1gjKo2IuFi5WvyVWzs50NShOzU6DJlQ96AcS/BzlinX7CwP7i54Mne36SuNWt2By2OsXn42NUBXmrKiLJEM++hRO7G9cvHnO5Qy1cHxrGddJTmcvpJxH276oqdhv6E0YJYTDX/Mv7CNPOHqYFxbQQu439d89el/eWUxi8ZYDdfETNynIlyqfclZ0qVzC/vUdVSRW7jTubp7H7xV1NiYnssqzt1KyY7RYf04CIK/I1MGYYL9DmOn1ZVitt4gfw5mrKrvy7FI+BHPxIYkSi71qFSyvxGM0WYy+x3b18O2nsis0aNZfvoANveujBCiSVirZ4p1kUHJL+7IoHK5YkLYuHYwRC5rc3KxAuEpiiIWkJRjIkJT0hG1b8hGxkJC8qqAPw5kuyzZh1WypyccY8udMSlVYQVgCrs4Kgd1U2BPWMJEZ0VS6SleQNZaWEZaWYZaVGRrp5mWhEFqIjGtlm/RfkItb/GTmW9Z+TDes/LxERZySy/nNykV55Ro7VKx+XP0W9ckE2EuspSRLrgrw1vfJkq62Tcqxe+T75QuuVXzrztrcnS+iV/t1PW6/81NdfSL1S/f9Mr2Ro/nXplWqEYz40xCoekqN65b8f4pXqJvTKlW29EqXdh1sr6xFepQ8v5pU/c3olHhofb20px9ucNCFpt81Jk+aErsVJj+H24I4QJ71fhkuvI3Lk1ouFTvlCXHvddoNrr+VB6jjU2tZ+V5JKcUg++8VXMXzxNYkHda22BnLk5muShCHZXH1N/gRXX5Pjr76M0De6+5JO2XidELPf/shH7/3+Rz/3vq+I146/ADNC3egGDBpSixv6a74Gu/h1zFz5M3UNJn8K12DLn+s1WEHXYMXNXoNlf83XYL3RazDGNF6D9W50DdZ9Hq/BwhYiaUtxV0V7K3nT6E7yvz63ezB5E1vNVHuriV/4e7DxSuZP7x4sveE92JWWocE8se43jLkIw+Qi8XbmnNOoCiIujpshYrgHcHrvEDGYdfp+s1kdNgSRQ+yweZCpY8DUcU2TnHcVSHRLs31uCYenv8gblHFXNWI3KyVst0wbVzSM5/B42risQcQIX3olfjXKwr2gcMkhIUIuoXCxECG9EIEHMNmc7aEgQSVKFj5nu3NWzu3F487u8yNgTP0NHPMEbmUoAeWN/dG7hgyHzI1MrlBfKBqqKJAq8ETLbBDL0GAKJZQIZmPobDzYTaXBbiohu6kEt09POWnTbkpSC/zsAOvJlf/SoKkfrvxR+zMcoO5F2DHUVVRXMW3SySwwI5j7JaTTK7rN6fVlvVld1ISwC5oQdl7TyjjLK+OMxj3wupy3iUv37a26m9Q5PWQ6+MHRU5OhofqzO42xM3A1R+1k/MadweWR4fEj8K116qIup6xAzoghvDBO1hTZtxaUsLFnBXC8liknah/L5/LYLmMHIEHpDCZKGQ6qFxv3kdC22LaPTrfDvEvdci1DiD3NPOUKe8CB1GBRanAghzbZQN1j5xeEO4TZ/iQZZcDuNCs364dYjKj47sGHaSMRwariz1ErXqdOGKD4GfWQKZmdXzZuCqMzz6grZD08o56ipJC44Xlh5ip0deiewWCwbLO+wmNECSflW4Fx45FjxyOLPyUtfYBs+GHTRDdDgnrIVFOb9VVthb1tk1plhV1OaTeXkXemHBf0jMWhl2Z2gsxaH47IwF8CzNDCn4OaIamMRDX7fNpOj32j+L4hhEWPrKaTtNPNehglYG07lsEaq9z9X6Gwjcp9gnJbskM05q/1CbunagpCpzhkXG9sU9cu+aY+efNNZWObuhiaevzmm+qOber0rTTVyShh+8dDQnQOosGhKQoKowHtHwvtfzy0X4xrPw3pd9s9pWMHfeXJWxh0Mrap87fSVDzclJ/qrTQVMSgfHwNKMwzKwZj2nwMozc33dOHLP1FPeiykHw2NfurmwaPGNnU8NHX+5puS3JQYaupQaIqsn2zzRdZOjL9DqgMjmZ8l51dfysGA4z5I2pXIxS/7Q7k4fzNnVc4ljro1wF5IG5yGARbkeHqllWp40Tfe2Wnkm8bZSXhvZ7lOGXRlRNcaSvn0byLipMVPwEkZIT0r3em/XBBu0v3xVxaEi4kEz//lgij+EzHKVs0/gprFUM1HuWY2XPMdULPr3v7VBeE01Tz7ONXsDtc8DDXzsTU7WSBsqPmRr+I4PwN/UoogcAl+P/3VZjjXvrogiv9MbKnVycJXlxxOMlzzP0KVbGzNeLjmv8dxsE3PcM1oeOD/kmq+C5vGFtylTy6IxZ38Z+3jEflPrwGoe+7QzXyqh8d36SvYaxtZT32FxqeGa56hToYIgGvK4ZrHocryoZonqSatxYLW4mpY1rAQndrnLn9jATMfOl38ica4VjMK435Qmul2GuCOT+1Gvybg1zf1zYoNSxL/VJv484nJYtny26ZwYX7zW+hp6ypQ+5X7f7h4R+82KL6Pi2t6y6H4Li5O95ahKcEVKt6J4ardZ7j4cz3MSP4IF2d6E1D8wV9RcTMoOMp9ios/T6LIv+LiFhInnvymL6JI8B+5+Au0rf9rLq6ivfefcXGS9s+3crFHe+Bf/r9+zLiPnQ1F3Gx+9BQVP05xq9wpLt9NbP0QF3+RyQCD+c6gPDijBGF8KrD+p9GRGlOMr2843eAp5nQYT8qzfgpeIyn/OIXn8ny88F5wPtHd7YLiqYz4gmXrOKk0Jg6QmNMOGPpk5o58hyLDPs2Rg/6R1Acskg7FMCJ/7UrtyUXIly/0Nrcc2C6qsJ1+Zdztu5y0Zp97+2Bg5uf25mo1UDX05keD8ZjcigyG8wklozHEyVGTqEcdeox83nhlKQeAcZ3+xFohjBFm0b/2o1hnCDhZV4p9ITkslE8qyAGFOKkgHpt/XmA+WeGWY4AR/hzj7lD6P/SUT4fe0COLoeq1Hh5pFRN04gY6etyoQKkbxcaiBzi+HZjW8TYaHo0zuyClOXATwDQNMCnlQvT8AVONAhNt424SmH5Ci6b8e1KmB5wutTv5xwucmV5UsRmeYQQw3zVNQdSa9N6TGKRzB516iTL1M2Dn5LguO+hihefXsi6NBd0+tZ0NAkcO4+p6QMOP7GNS6gPPEcgA4r9zEyAe/qfNcwb4jcAbjQfvt5fJrMmtPzwxQxOLh5aiNWRVEIg8xTskm7qLeBEnyoTHkStirDSmyMmyaxMn34gnFqGnhE10aKow0S5fnVuzM9eApV05J1g3GAPOmn5xXGOG9dywY/86tQa9/GdXbFail2btYRiOP7oHw2PHu83QBR682U6BuSnwNnFw06+67IgY4fMgL3fJGTGlKEFRjUaXgvyku+Qnjb7W+LCgP1Mc1zvW22xCnMHuRGCRcdooI2SYdAgSBkCbK8yIIPAQTm2zxm0kq6juTszgF1njTon+xM9Rcv5syX/+vY2dJshO1TaurdkqBJ5exgC22JkdFCFhqjIYXt93ZqgjLMY78R7kS764J7/DGvdp0UebP2gNRgYDH5qfcVV/4tfFZOvfUOHZ/lFlOTk5qfiJnpycNJN0izkDWtR2zMijiklyMVYc/iS1imaKxEF2Rs/6gUtbH6Q380Gv9UFyMx90Wx/EN/NB3vogupkPOq0PTGYzs80tI8uaMd8Cq/RNKJsOgwxvdI27+m2fwsG4zf1SElGm+6sIyCUOtIm344Fg9qBtTItgpI2QYGLK6LG5j9Y3vRXUXMHNdZ5rc53QXKfV3CpuzjzX5kxozlBzNnbpPitdb9/eSlpjO87s20uz3luasI4HV/S8Gzys6bbl+nU9Xxk3ePjPD7zRXf/9xw7sqmSOS4RskrJQyw1O6j25dGkZ0a0hPrz+p7BiMTuXLDNryh7gvscv36t358pNIicYnBE1PrY9NzjHv10XBusGA1PjKPQb3WBwWvTd4MhjB3bCV4PTYvveHDhZ7H553g3k3q3iNkwDHu8PD5ZjTONe82AZPli+3yXz7go8KJimOKInZjUuijErUc+oguJTmRqTHmBUUmCJB3g4Vk7DkCXGwnSDYg+2J4cGI2EwT3DHw2Nd5lCFa3+xzNdZwC8cHthrK+G3zEo8+KbR76Kx2yXG7oraGnREh30ehw9E7GI88ncL38GgnCe+08ootEnh1gRbQSeDrQ92D0rGlosMuTjxfFibNsslLUbkwwbGhttgYpXfAPGGxNn65ULM2vsotsxrc2VNiKc3ycFgUYznCAwUeElQ+usQ0DkhjQEEhR6KGb3ah93zufh8JZQugDCl7TYOfRiM5/B3ffpF0PSxdL9/d2zo3bHwTrhJjkIUJOl4J8s6mvP/b6Tz80USsQ7nYJrOwbQbPE3nYJpVKotgc4ee5iOjN8j4wIjwZkbUjSDdxCDCJ+723U44aRMW4qfJeJBTt7RlNOMDz8ZbhQQlaasQ2RbUv1odihqTeUDXO6craQ5YuUGIyKqMvpJO7IAPf6n9EZkiIouWTI0UPbMlO0HbwO1/BBJh9tu5jPj0i1OipFXUairyTUUwjQimYUIrUe0q4Pox9NHD2MIY2EdjXGAQnNZj1HXxasOBMMoIx4EC1AYBKw5lozvhhXZ/jxLjxftsshdrKl9TuV+et4mL8d5KuzfsxDBREfBWrKixYuSW73ODwRUxD9/o8A3VMTXmqll86GEjl/YnppU2SRQnY/5JtIJD4dVGyHN25AnSNnABhpTxkDIZQcfU7iIHjzdtuN3EF1Af3YWe9/ar0Hz8QjT/5Wb40QvR/tNN++aFaP+bTfv6hWj/q0376oVo/9tN+yhtRc6SwDKQmE3hxp+zJecLNrrvPucvNv6kH7iNbrON3OR8pV1353SZPDsM3BU578x+t3Hvc+wcM0604X8AAF8wAgaoXcY2CmLGJJaW7yeJqIellmAygQ9aQlTuUMZsNxHqPDG2iZx8J9pf5L4OyjY9p7IyshFPDeUZieG/ikWzi2G3jzgse1RnBBPlA6kvBZywAZn2BmTC1lHUa3+CXezzuIu9RaoDw5v1UBOGzoSwJd6LOfIZ7ud+MwQZdWT8FI59aASaRwDbHG+i/42UzW2ZG6TeCgIkADdI+YZsdsBBA/HA9Z9riuBd4KkK5vF0NIhZsVkLlCqV6/5mZVz39X0kxo7rqgOuA493YuYxa1z3DfgqdalV7kmxm54rd0n8pn+XuMQqdznZ6d9dTsK7GC8ejnxMhJdHPtZ8GTnYN4//XhzeHv+9OLw1eFGzcPCV4e3CwVeGtxovVAbv/rIJr6EQ3isH8xt84NMva95/4NMvC+8lxqwZHP3GRd1UgNJv0sJ0IquiPh9AMe6ZfEkcDwgnSqHsACSMN9RkKcmFJiq8JJUJMSoJK7fXDsPjQg1GDPwB/UfNdt/6IA5m2t0GCh08+bsGk4STV62E8QFma3g1qJLwhbBq9pL49TKySaksCJRZ5qas6Vdxa0IRTyiysZ9QlHnRCxvGdTk8pwjztqco86M8zFrGY99jefhVIGq2oUYqmGQVbMySM0NL7ptff+TJeJMQWY5Xqhhx8KzK9jzbEuar4dGVjFePaEnnO/gcLqrX8jB/Nlv8Ibb4DqV0IJhorUCPoNbB6JitYhEbxJaAAzMgYdeeUWLObHuWlvj7rTe7S/HkmhGMzMqPBZVUlKZXwW7Ya4ydIgwIXiWUytHbMQmbbFYm88keKKFD1hOzp77/zOWzb//jT7hsJd1T8iUlkl7x5zp7EfU8Z7ahhnfot0+1Irdnf4+Zuig5PYKg2PPE0VuxtNMQBl5SPH3TRIMfbnMyw/AuxJHfb6Rp3YWO3HWaykxorSQbSlURapCg0bUMM377FFtTUDcta4rc0B2fqMQmNWWjEeOZR8OXV9mkYylDjlwjnkp069zn0n5pUPfEZsNITvj2YJRrlxrQot5hVGtvZhCGB0GxC13ar0wusmBk88yokQ2lIFXubJjnM950hWHSmE+lvuPQXbnIqGYR2NrNUWOLmlAZba+YH8Sdvc9n/ZigJf5+fCCoDoZPtQLNlylDjHv64CnhBN+JFleUyAD5mb9b1UDhH3362Cc++G9PPvBGKDx6/v2f+sLnHnyiyDLhLjxyCoY2l5VSHvAUJefycEcfHASzTyiykSEDFLKyEeSQL3ZTWo+U8jrhohZWF5NkkqPRtMWvZlhbmoySyfoHlfID4UxMehlUtY66JrE0JHUqOi1rBEZ40Dq665EY2m4lfMRi6EibLIa2v8h9nUYMhcWLvIEmjHsfyEGyKJrp8iQVch/a+GDNAwQyNplwIvsHIVJxA1GkDIxEjlgmAwtEtS+z+XpKq8vgxucO/c4pCn5fHKObdUs36xeAe2Bilx8rH9fdiuL7KucONZavKrq50nWJZz3FdVUJ9xhRxw6K8W+cnnd6R67co4+c8rFZcWf6kZrM8GNX1JS+SruBAhyK4hInmyH+bDxdVRGeUlA2HjTUTXsycyceOSXwPzNKuLdY7fT+35rfRCGmv6fovh877KlMbXMLVJOSAanWePEngEfgYPE/aHFSV37cxTUFUkeodxLqnVxcz8m9tBJbrWOb+NVj/tckDPG7qtJW1qXkFAxIxgwCFUCgGAQ0ag8C9awgoEEvHgntQ5gQgKFuZfEVxIl707x74L2nRF0qdcC3WmmHiQL376vQj0LNND0DGvcipwJKRwrjdD+95phVAhk/pmSEthirgIaAiqDQw7XvplyBOWEqukaepvlS3icMMkziDXxQURBqP380tyhqa6ZxB8F0AJWEphTF58dsAWoadCXsRvnGKWU9gIKP+PyY1ji1zx19zylRV/AxBT8t3BQe2luxfZolBDmXK2YAWMyFexiQ8XBABjSGyCB6RyPqGVVUlGdMUUo6uUmtoow4uIcgB3VTtRVMUPA6+yOF6xL2wcIKTuI8UKBDuDspn3OC6Zyli9FD4x9Xqr/fyXnYTPf13S/VWaXpkNhPrsnB70dcGSet3ldFjGUQUXTxtALhoPiushJXNu5B+AksxL2854VjbL2Pt3LjXrTfmXlY5FUUUhwZJ/eVxurKt4iBcwC9TDXasuWMbifeAkStmsxshD3xEf4qSmiV0p9e9j/L3gF37L00F2W2uaPvPUVXz6oiWZiFLJK/UATtrbYg3UZO1kA6qLGcByxevxMzqV6/czcm9Eqz9yZIwMU9uhJWwNr9m84kQfAcYZPePuGWWCUnwFDPxip9vVFWuT2n9Pw/db7Ygn5PZ+PYNRrGUfXduXSpS4tvqRIYF/5QrqAf2gn+6dS+Pt45vhlI2qq67rvfmne6j3ne5a7puVx6KM/dqElJKdE9ACtUAwDl/bquxG6MNC/67vp1XUNveM86MP1S+dZLSQtBYApgMngmOvptbSWmU0T+KiiKC0CouFcTLfdW90RWfFU5YXUfsM+jaAMDfroDzOWQKUneUmglnedPZJ8kZJGL4qtq9WT2E+842u84emTH0bDjDCo1SWps0a+y0RyotGjdd+Ues80DP/bAj1rAb+NTIT7pNCLgE83gdk1bsTvvkPktfmo8W53LUyes6Zca+bZp+LZp+LZxMRoR/ONKEN8WgW/HgWWjyoq7okALGpXhvmlqP8aob8Wuae6fV7KHKeb331+J/ZVymmO3P+qxmFnYbf0+IOZyIILvqNcNdw0sG+ZhZfFWXQk8FBL0ENNBK6t3wl6riaFMA9/DmnSUag0wzMjK4pKnbqt3oVWgKX6obGR1cU35QVUiV2QdoNyBNyJI6ko7va8S7sR7eUiR5wFWEBlVFOCrRQ8tygE+wEwgAo6wr/iBslExAL0qAwERhIk75yuxr/i2gkb2zQMQAGBDvWruVQ73GuQeOZ4HKe5b03Q1wqPCi759CMKh2c/lsRXN8kg8uyrj1kKROGRYKAIWStJeKMJKXChJVgqbUDYKPM3g1MLwB1YPpZJ4lo7UDTtSN92RhGnXxQ8UBQ+Ji6fVPjRAQ4pG+zogswqN4IT1pIW31Cjb6ZzUdUmJdCXLTcqiqmOTRupA+OyYhhfTMDCQPBIQ0/CaOtpLYa0iNFEtvq089c8z6EfJHxnjXC4zIHoQRFAEsGYPkC8Ocud8JadLTE5nJa6ChvgjcpwP2N2Nu4Lp75nPNWzZsDJiGxWXlNoW1sZu2s6BWGJcG2E3hOJXFEkFYzkoEIZu8KXGEYZC8+wRfKkWviSuE8JXhgsF8731TEZSQOSlADqX0rSS9KK3ZMog8ftcjpj9taGyyzT7nLBmV66YNVtTM2/2vA42O1N8C0SqYv82UUqbkTFi5oQVuBNa6Q5sr8Q0CBkZSszFPitQnMvQmiWngJRpFkg+8CXATSVhPEEG8MMsRSMhAJMAJqJo6mRvCbgUjUjRSExe9FCEU/4oyWA4adlzp6FiNqNM1cXfmBIZmzgDHZ4JkJEkQoSMMn6r9zKv0Ly9p9tz1ezusGGcC/zFCpvu2ptjmCC/4xcHte3tYDm2CiJEJXebA2zeX1u5K3IiyyU11rRoMUMuJcBNbbduCR4t0WOHP/wRKO6N9L0dmvWCS6ctuHSGBZfOOMGlg+8qv49Xk313e79CwhOM1z5IoJi8lx506p3TVQ6YmLC5nSTcpV6aG5UHCCI2tSm0KakJ2UdVoEq8sGu7nLPIRnVtZd2v0FMrsZpEXt9+tFjYw/TKP8bEn2jAUddQH0WswWCA+gGM8ocKQbMOw6lMYD5fKm5Wwk7YYrMS7vh7TwnbgzHdD7+68As+QitdrG8nNikkFYc0KymjkLGyAqGCTJFsx+bb8wT+2A4IrwDjH4OyAKsMmRE8+QoaiIqlmZG4OWbUIWbUAS7UIWbUIWaUZKxcURpmYfnMvYtp4hEfEUMTORFjpxSYQivq11VMSzOxsd+AhZV9oAZj47pfmqD1EJE2egmdU4KuJnfkkSKpp4qWUMhUUMjkDq/p90jTHycWRI1qgmbVaIuGdNiLWI1KFqlRpiZhOgFBEdWoOHCTNmDCB7gcF8JSFUNrogKUlpqIV8IDZN4LnnkDJQ+TrvKkKz3pYiUgXTphH0e6MJ+ThHTgrr6LMCzinZUYPkob5pYR7y7JIg20BRJgsgwPQ1wKSQaQlIC6BNRrGHuJNcVXQnWM0LokEZubI+Ik2BX2KNEf/MHNiXtR4ZBh07Mu1Iffe4qkTKQBKJzgwon2mwUoPMqFR9vVzkDhMS481q52DgqnuXC6Xe0CFM5y4Wy72hNQOM+F8+1ql6FwkQsX29WuQOESFy61qz3VfnMVCk9x4el2YfDwKXoChWvvbRUOwZtrXDjYLhyBAjyBwuF24X4oHObC0XbhOBSOcuFYu/AQFI5x4YF24WEoPMCFk1A4wYUT7TcLUHiUC4+2q52BwmNceKxd7RwUTnPhdLvaBSic5cLZdrUnoHCeC+fb1S5D4SIXLrarXYHCJS5cale7CoWnuPBUu9oA6PdpLjzdrnYI3lzjwrWHW9WOwJuDjzCy2tXuh8JhfnO4Xe04FI5y4Wi72kNQOMaFY+1qD7TfLL3XDu3lw7wQN+zWXo7bcV1bURNrfJ4YIkY1aUu8u3Pxk3LIzGbkY6uzHygZHQgSLQizfmjZIhEngMWobcOHHhEeemAu3ubQQ8Pkdk2jPLUb7/8KK4dPIiSfRFS6kdlNv7isOFNmcY/GEz5BFiWKvKFK74dUgxzfn4dazdhQOcTjL1T3+tbsnoYNXPYr1cfXdOoqrCmeQSnK/3kSt2g8+JUhdya8qfkoVBRX8QAXtc+ggtU4OZTJ+BSX2rMAA/qtiydBEgXgx9jK6szG2T8RdAkv1gp3le706aqDb3/Ri61nhTv9O/4K93voHYtKw3rYxNkFFn6tR7dYNG146ndOhSSMG+u16FVqhhP6s1Jw5D0kYly/fv16Mm+2FV9UoL+6wXv8uSD8wqM7K3MzUj+X7nCoCL/c2U8u0AJ/j1eW4Bf6klImyEVJ/R8+5Od2HGfJSf3PH+IpFF8ECrz5bqzGCQwPdC4XxRdVLtxBrLZVCJpiMK4g821A/TIjkEr9TTWJaas5cKdg2yKR/SiYTJEZBX5EFwaGTVgEmkzM1FXEiuCs3Kwbz+X1Vrn1fM+qi2N6NV3U0kUIX+2v07aKN+uC4kdxlvSYMuS6tK7QJiGkj3a9mnoy6zC+lQQ6auUKVDberIWPYyGH4lhI6IxTfKbofUIcxB383bYhCVsBZH8gWwZAYfp6ePpklFCZ1vSLEElkjVVuDU9f8vRTjDbHRjc4/aKK0PYMOSxzVZx+e2AELTK/2TMUwAMvcxQjo7GXwYmnYeJkOEOhMtzRoflmt4159qMmuEe0ViCteYKrYrRKwDVmYydelQt38REcDf9C8kMzCW8rQV/YCAYyZSN3Fnvr2YiXRGoja7aKVTaCMRZ+cVaKmociG2xRwS8Lc8BG5FpRLBNkxKTFZp3696A91n5pzaipZUL4tp3sR1ZlKAbgQQZa9+YyExn51ltZO9l3wFbns0lcz/sqNBvp78269MOK+Wy5cHfAy/19PHO5c8d01iXlw71pHg3pNgjj1LyT+8MLOZ9l/ELPz2U/7/U4J+et3OvUXkYFKun4HJ5kL6b9Ti/xutd6jXZZzUW8lURc2UuQ6uCbt8zzm0V1Epo9/+3jX5fW/Lef3cEBBQryXYn8vW3G8+vB/MLP/RmfpNDBSfZ1IC0OONOy4mFbRGQvU+7//HenhOv4zPEzqrdMo9ILaMrJsaZ1L5rW7j3wAbCMI//ulCj+ULv3UQt4MXCanpXY8QbRA7raAb/yuVysdtKqnFaSqOQGscaZeV7gU+6DR04Jp4YHwnvolPsAvJTDL7OSLuOBYWSfUmGuoolDc0P7n/+PvDcBr6s6D0XX2sMZdaRjsI08r3NisAyaJUvysTHetiVbeAxmCIFE3jpnSzqDzpb23ke2CWAZ3JYACSahQNIQoA1D5qRN28zgliSkA6G9acltaUMS+pLbm5dwmzTl3RD8vv//195nsGxIA/d+7119n3322mvtNfxrrX9e//ox/z/LAei/8/+NHkDPv3thD6DltHle+aTkSY1XmWArFjHG4luD1sn57Axy/7nbfXJ/4vYacv/l2yW5/yedjmW9xHxH5LZCWiMUrfkUQF2vtg2q3UKlu1CN7kLyKVXB83sH0BXjR/j6O6yACE9+cmBQPYTOwUI1XmCFNE/+GR4UXJvCU40CT2IBnJJ/ju9XEpeo1zjGBqf90FkIcbx/dYpceLsSNcfhlWpUwDgddscDmgPKEB143IwH+bVjQjWGgJfVYL7VNmVrKgQ/Q7rgcREqoIIf5htDN6JxHMe6WShFQ8FTpMYQLAw1+J5OYw6lgXlNa8bn7zjFuhhL65vwkIZSML54B/YxHSL3f8VQ/XoBVN2D6q4Auk8zAK8Ervpa4E1K8ErgJlP+QXm/x7uD/taMV8HuptBZRymgwoUGDFy+7BiyJVg1zU+T9utBQQSjF42jji80WGkFUterQ4P+3KvG1qIMnKvGATXWnPD0l3TdapGuAarxEgPu5EcqD0nXW63B9ZaCyQzLs5apEKyeIvKvfDZNkTmM8GwqrBwTihEe1baKEF0JvbmAN+68fPr0aXU2pavkmIPiJP0m5W+r/BXyt03+dsvfoSKhGPmH3OvWYoq0zGk9gUzn5mI8pYgwunxohZTiN6dS+Qh0JgziWpgsuqTwxNlhuxJchIBBhHUyOpvAMyUeBt6k8LB4RXgTbZZdCV7dSSrtJGWYwhIzujZfJaygyHiU6N0B+7sG02mE+QJM54fqBY66SaI4zUgCihtOKMZf3X6KGX14Zbkxf8cpZjx+xymKO4lzbIAoJ8O+aZJdJpxQEwyYGGRgNwhTn1Ljs4FHtxocf5fqX0IfJHk2DJrXDhothsm/VlPKgiHnWoIOUgjNQ42utZGUGlADwZNfUYWKu1nawRXyZ/75u0+x5MdUjE+UQgpbTKs4kUry42ptcK69tcHjUNxu8uOA3XmKGQnjE/AD3M934OGzlKJYX3eeYskv1dXWTKRqubq1CTjMryq10fOqTt+fu4s4Y8X40Z2nZOg7Dpwxas6TAcOEHgER9BWMpKXnfFNaxegvdIo6AJ5a5wot+eqmgj9XxwjJtylas8I4rlQFY54Aa44rlby0WFolUUPFmFZqg1jBjc/DSiNn6DaghG1KRPAOlkQHa3LzD7z3ufGRc5U2nv/tU8y4xPg5yMgYC0m+eNF/YQfBzpCG0lhVMjCqQJQVOhTeXkCNAjyiqkE1Xr6L4KpKVYOKFBODtcBI2vCFVqCD45GCUJBqN7ZHdcpmz9nej99/jvawoTZq+Q1q7857/jPt/TzEI8eCYHDpmGTUHLygH89+A4lJRX37DgUv4CkNvRW0lCpRIpRURXQkoSjHhNqOMabwjLi8agRZWlxV8ox4ROjGmtmUJnQ6I64ZIU9EHCyp+CXxjHgEz4hDeTwjHgH85lFBOiOuVc+Iq/KMOH7jpOlk90iCIBBPayIk1GIBfR7pzDdZYbHnjPqtGWyf0IxDo47QjJlRh5yFTvPZM1uRPYSey2FBzxxHtkrGfnkfBYYgQucNRYTI2Y9cOUSo0M6YsXUXXqYHJCMEKHFFCvEiPHC8W4AM0KkQYgBi/oWS/CMVY5MQs8bkswHUEstpFG9Ig4op68ZZ9DjBN+pWIDXQ+hPHLi/AEw+elOBJxScMQ4GKkLCh+TRQhk2oqQSLcSimw7rQsZgmQqNy8CGhFdM4Clp0HUwYvAgYCOERgiVFc8rnZHwueArF/WoZCV0pzZc+UzrKpNJQTngd0KFOYbeTizgbTgD9aMHTHugeAbOjyANaGslviPwAIqoIjUBnW4ImG2rCNkRotCUuvbMXS6fEOpk1LtSWs+Xieb3aI4lNtcEsAII+EcCdv5LwQCtu5NYCYYTfFF08+Z9CFxfWBK5MM+PFT5J7kGDGs/Ixea+KHMIGjFn5DTX+dYVOxc7zOs4QCNfKtGIkUeZWDAFMU/BVijVp0uTN6EYz0oqfZgWj23gOGvTPfwu1IMMUAUPHjJbdOMnaHFB54uzmeSHNjON0Xt647W4U7bG+eY4xOYrJB1RyqTpbk4NvTouoeJ3nxssnT7HkPcRr1yXxRh9kJN6t81jtXCM7SFOqZlgbvKDwJ3I6GXm8V8ORRaokP5mOEdSbfL97JPUYEdhQvRRGSfRZdEL56BIv/SXIB5mElJUkvpOgKbeSf5SRdJtUfhFnCRWZQ2wEj78F3DehpppDAMzQvVQ86MVlZ+sEr+sEr+0E7EChi1ghzckfjnYQN1YWOhhDiPkaHACYZOdBOgFARAyGcde0eq6WcJWC0onqiUgh3dSmaMa9eDqgieK2pkKAaDRoPkRO/XSGk7pcrbGuOk1WF6pWF5LVYUi1aJzqWQy0CqY04nv/GapHR0ckuNsUDWCt+ECO4/HNtE6nDYDfE+HdPthQwAljFdWDnDVA5HEMjWfweIrLcDyCx/9W55FjxiUUqonBPo4afDatr0jFZHA8vCEB1Wl4ioXHz6BaIaJaCUbkKhKQK7yszydVQBFB7gsJPSBTekCm9IBM6QGZAtKuFVK6iAOZiuOgI0SmaiqpnnqIAMGIYLGQCBdS4XjADZEAE6g502Efi6eZiOE4PqciIa+GNSTOFqidiBqR2QQwHOFiOpQKI6lLA1FsVrnCQcZ+raq1Jp1CGoYIIiGghDpG6oMnvLwXx+DTxFBAEyO1NJEoMexxdHU8gybqAU2EEqGasYkIaWb81WCwlK4cUzFQjwiPJPjyAIz1NWObcREepZ5jZ9Bmh3qxDiZSTbJhnmEiAEMkAEO02guGMMRmGodjdIvoAsOhXkdlr5lgoglbEfEBJYmUXW+JizCW8klyhaiUjGp+zCA3/t9T6VxRq7z0i7cpi1MancldHAhryZpg5+9FsmpwwIi+ihHqQKcyqDBeq3D8QjyI1aQu5KQPeKK5jUfkn6JFImpkgb8w/BdCcet5NpLAm7yZMa9t4jE8OMUBHTz/AtvE2cJZP+KQFVoo60XM0hfKeh6ztIWyPo9ZeLh2Xpml6KSNZZ7B/mAoZQySi4i/sdBTWIgHWkm8YQYkybiXChmplG6kUgosDDT7HoPlMSe0Qlo3FM/4+aPElRhxLx0WoZ2wlHavSIcNjre3kHYCb+UzTiPSxeWsUSxQ9GbWdksZQeYgET2GnruC5BbFS+vVhpbM4TXNYmeCG8/pKd1YQzdqpYxvP3pKhk7UjZdriutCo5vDeDFe1+fTp0+zWcC+LI6xKHQ8DFAgoUwrpsLGczqqN57T964gjFbEm/40Gao1hAEIhWK8/NgpBlSvkNZEeG+CUzTH53TjxWqfZECznbh7MQSkhHRNHBODbeIhoWKMlBakny2zxucfocozrBlfaXP1bxP4NtLwtskP4Vf3loL2JRvexvDt4oa3UTRhTRrKnKEU09yI70e1W6iAx6yMnz+CmuFNyKkpBeMXj6DyCcbBhLqehwZZoPpsLnRxLMmMWIZOSWVYDCMSIu0XGDMSsQI3TlNkFTS9jCY4RXycj5A55jPfaCoaz37xklHBjb98tKlo6KOO4MaHfx4vGt+Pw9vvPRcvGg+2jjrw/uZZ48MvxUYEN37/gXjRaB51nIQmuHFo1njhr2MgnuIl6n/44ClmtBu3P3SKGU9x45mHTzHjz9Tk19HDD/bCF38SKxqhoF9PsaLx0q3eKEoo3Ljng6eY0Wa8CD8PKsatD5xixqcV+BwX17C29f9Lk6y80ZNcjREyj4Y2hFnMePERnwmvT8nIMi/oUnMSeFkY4WJaRd8cdf+KFPRcLRg3zgpexGuZVbUBsVMs9XTYaPWM1ko6YrBddDsxsI9n0IGw8ew9BBVDKTarjCvnkYSa1oUymgih9L8ojrK9/3p/Iim40AvtDMTksPECyGCEbBIjCYVuRMDC2l6pP0jiWSX6Imj5JV5s1jljTGFxETFaCnTl8d5EBLratAhQ2kuM3naPJmJNGAf8rmOXJ5qbovB4aNZ46NjORIICqj50bF+iiZjCiLGGPmvaj+Gkb541yiMJjtU2Q9knjl2OZeGN0I2t+xJN/hgVOca4P0bjiWN7Egg9Q0mFmuK1GZcnokDDYkItGioq6EV0f0JRaR7SGiDc+eO3nDgyi2dVkFevvojiBkmru+VBAtmZXQkKDYx6AgnNvUGl0DDbhdGsEcYU8V0jmCs1MA8FMIeOytu9OWbIoapyqHrdUJmhyoK6pE/Uhd3SwCNXdSSI6EmH70k6YWRkYEZUWo1I3U9P6A9wp6ro5AmztSBD4YRJZ6ORe4OeonMJILWsTEek/TzUpiw2vnLyFDOeOHmKiegKQzFUEV0hQrU6EBJwSDkSalNa694a7ybze10GKo8gxeVt+9Ggtc9DcXWhBlamIgiaDLtA6EZ3wfjQSfSMFLoIrVcWD6oRPOl8AWo+8F1kUBXwi5d8i8iA0g/v25TkgNIGTx1MZNgQSJaDait+HCmkIwNKu8BA88mPAseK/ic0CHqhUuwd2X8o0aa0G1+iYeptSrfUGyFzxjNMF0yEMwxXWRFZxSYmWA+TSpV5ToofmhihC2Q/dSF9alR0t6FD9noQwkU3NheM+yjsD4Vf0Y07T1L4Fd24n9NQAUoDisCnZGFAGZJjHFC65RhQE/SOMxXxwfl11VgpHf1QobVYqMZL7z0lNRH3o4efivZvX6kVIXUThizA2hcxeWAGBarkvWr8ArQeLvZ5ccxMfkiNL/VLpuuKL2a+SgDeENTjD2o8fozUqDHS9NAhmlQT6Q6BmFMA/1EUGGFTkiIVw3gZQOOD+KKI29NM6CMoYeiodmSG1E9QIFkjNpLQhSovxUDWClZppJiO7KXz3pBAZYMaR92jToJ4Omocc0XUuP2ex59lrnH8lhOR4qyPjnig/mBQip2tFKEsEdlLcQaEvH9Ua9L8tqiLQP5J+xWqQVRYEvGJ5n+nxs8cHheh2uEpFDSbDiQgx4yRJfAqESY4fbVTHmPUUhGhUcuK0PZj/AGeUkU4FRFhoaTZSALvV24i/9G48TnYL5qIBdoJwUFmx81STAEJjIomSOxED7FQweBF6qcuonFAbZFUWACzG/IrGU5wbDURF4n4M4rv+ri1AOsapMkGjKdX40kxoBor0yGJ93Tiq3WkXnit5WLjm+QppNUhJrzlcyVqQKolv0KooK7kMJkJOJlPAIWptShMFZpEYSqGtSPlrSZRGHpKhkkJ1S+wzSQpdTWJwlQRBhTmb8B2jITYilFDEEmhOi1AUmoVSekUe0TzS6b0GqylA9ZSEWvFezk/hrcLAASlz5jcqouN5wk29Zrx+L0hRT+m3CyFLIXOOS/Gk0bbTp++9dVH//l7i95GqVPPdV2dUISOKxqPjCWLaU1GpiwIJti2+fkT+MV8uvp8803pyLb5+f9262f/een8Ywb3jNvvPsUKko0E+ppWDa0oItteZPPp6LYX2S1nlFKNEBQ4+QybP0t+BPKfPHHp2fJjkD//Z891zT9mvMhmzizQhAWe/vRDF56tRDOWeOieR96zav4xivW+QLmIgCHcfNNjsJT+9n2nmLHSeOl90pyKAaAjxbQPLuhPmn5vvumxtErxHxcCUQhApBovsnI6vFCzIYCQSrEnz9Y1VcCnpSJZlfWCoRTRb6K2EHqnQ0/uegZd57Rg9RlaMa0XcPlCK2n8KeElBNQe9OyMrmvYSki2TEXPbFH1o/b/ABuVRjYAliIb1bAB7ey1+OH7Y6T0xC/x6toFCgPT5kfKQfUWFuwmMwOdIP4hr3dLMPxD/kZTgRwC66Llv5GOgeqv7RiovIZjoPQchGceT360zmHiujo3v8Br73W7+RlawZh//8L+fc0BVwBsWfwn9TANXAr//wraN9CD8mwQHgDpQSWdriAnSEb3HiMj6F9U5ruRtZJoEv9W1Q1BMlZ4GkkTfLfUdgHCGU0AXlHJgs2JsQDuS4N3KvJpwBEVDHUUKIR/cf2Ns6mIIIsex/j1ZDNQAjuCEtgRlMCOwKUXmIgAniEDAV2DVltJisv7UWodioD5wXB/6BUBXb5xtpD2v0FBnEO39WoX8KUSvFTkS+APlbmUhtgRrdMsxTEUrfEk0F/NeJLvX5HWYfwhQDEeGlJ04xU+mw6T9YUcsKB6r4AmLYADWfx8p6BjrhGeE4oRmnOQiZwtBBzmWTIj58psOmtmiq5uTDMR3Sk9A3Q8uSTQVKUYkTnj9PFXwrNCod+CcXxeKxnJOfLCCw0nWJwCgA2jrouGRZHTmGyQVRtMA/AB1suFvNNugUIFLKVUS0UWLBVPM+reylnBzuwd4O5h6TfAYT4UVAxqo9pW8oC7cTbFke1mwQpkwQpkwQpkwQpEmzKAhcMKpNAdCq3AmkpSgUubAitQoYUa38jomityc9EwugudA0oia7cc/bsMDIWHnCQ6kgEH9mC06qdMsqVKsqUyoESkLfS4ApLQMWNegY7MY9cTbLlxmkP6NPfTr2L61SD9Kx5PhwQLFBgYTIhkVZAODT0VNk7dd4rJe4EIZ8i8H915SkaxxZsy8Bz7H5PmOoyyLNTUWqNdU0bTYWBp0YXHt31jXJGqzo4LRQZKlvG3mFBq3HHUFHZDxlDlacQrqCcPCwVPAvrqvrQ6mgihk3GY5MFwAS9LTEeKqTDWmo4G+h30mZIWUKFC+SjOXW0BJSgQGUn4k1tbQH2tAlp9gbChF9GPRoRQT6Rqx0gJSQBQAQAxXAzB9EQxZE1RFzw+jKPDEfF2BpuN7YLvpDdXCGMH4fYe243XAIc8EXLo1ikd9gufHVDWGqTPlo5dIXTsgk9n9qMcqaBjl0JKwhdZAXUFDO/pqD5/m/m+LLqxubBNI82GhsoL4yP3g2jULXQssgdVF0+zQIvRWhhQDgWajbfhU1NhQDkQ6Dh20S2hgasXl65eIXIoU6ShVJPLYi2FNOcY00oBrNWyFx5VDKQ+P6+Nroin5B5qQ0ciFSUt7LpOXf9xzeAaB/17NYP+kHzWaagvv/ZQp4Kh0qDbgkGvDQYtcNA0Hli9K7Cj0D11cEHY+88qdeNH971mN94WdONA0I1dTeifETa+/IFTdB8QbnDjEqGRYILeHBgciza50e1rnpaxs7lVjdX51rLAagvFfy1Oh1Vtt7XMDekAVhrJWUObC1Ji1tDn4l+t8pLhtWfrYQoIFlpLwsii+ZERwmihAGooQsmH1ZQiwh2sCc8tcYPthJR/ZIkDmUKxmFWPLLGaI0us8cgSqzmyVA8vDAwlecNvVvsfP1f/49T/OPU/LmTYobr+izBInSJGQ4nXDSX+pg0l7g/l76pDaT7XUJppKM00lGYaSvNZhyLiokkk6Dbph9UUU46J5g7WlMZhNTcMi71hw2r2h7VBxrpfbPw/7z3z/BniXkYqGKXmduAfhJTm2gsQDJ5K+FarNmVxuslI48aA/ra0Kcl0M+qngTRI/lF68KD6LpU0sKWURhZ3oaUjQA5i5OwboetUY+jzG4WPIpJAwMs1QCdi5O4L+FRoTioqIoZSIPE6IumCJi+Fihgq1SbvhgoheYiSK0yAobUOxqrXQqWjgXtnBI8to3Mv8GnJByn0rgrl55EBVzsYuhnH6OY/fKcIfXcivDB/EK3jD/BCTp1K6VRK35mIEqiqRpoIORShQFkALFsULYFnimq0Ai+hVg9Z4Ikjll40qCbFosewX/N8RNtqzPNUSKWzt/MYWkftYMvT2P8V+1HLHDd4IcOWi7gR258Ikzo9XuhgJAOgd22YBC8VEKJC914kYVkrolk60UDJGNWNt5XsXZGiNoDlEYoIj65IxdA3MgZAViU7lMFD2PGRhCbV+AVoLaWIJhHqYCyoPt4UiqMdPVqlmtFaqhmVVBMEHmS+IkXUwgtNJH137bgRM15+xPdcUKpyDvF9NTOmVWcM5oLumiumeNyfD14zGbAVoJ+pRFxetSESLXF5IQY3Hn//KUbEiMkIVff7b+KoqBA8ea8a/4LCw1WlAtnMyN1vcVoz1lV3bTKtkymI5DDjuIJLVChygWp01CMF803GY6HKqVc6WCzN4Ce+n64lwKmPCQZTH8KhwbxzmneVrnNj6P0HIiteewLSFxe6P+8KzDtWDJgF5p0aSAMVBjZ6BUYT5ui9jgDhhbSKjQo+QtdbF1IRoYKECnuZVetGMXwdplNh/0inCNMFy9Wp/D6vv8qe1MYk1uvkDxBGP1HJAKJCIikUY4DO5xC9x5PORti/kWMxDlihWxHkpQOfuU9eOoAQplsGiD9Ifkj6yf9CHh6ioN5B1UGF8poFeVnDK/eeo8J47fXtdFibOI4gEYHEnRqP0C0uad2PM6DJaecYjgk5NE3ev0xOA1GD7Uuw5Q2+ApEzfAUicePJ+05hTMkCrN39KyDzScQueOWvoRTw/sr6Qu2MISJ+gRfToWFg0n3HgYVKhmo6UOcyEA1cBnaLkLF1n5OIkPErcBrYnwgTXr/r2OUJvx/SyK8s0GO9WkI9Swl0YwcMEPbdD9A0FUb3A5zlaJ3zQRSdD3aKMHZQJc8wEFyV1+4OxpssxNNqWhH6KN0hLu3rQvMv8VGK8iQUXlGEZ9+FWpRBe+naohb/kh5cGutVae79HuAU/0LlgDIZ3CukYM/Pv6rOGpE59LAEypuAfQpkFRhMENHSuDNR8grissV3A41MhUVTmiMulz52wPGgol1ERtHqHi6g4kIZTqi+zzvUkwojCsCofYmdFIUQXSxgvfzc5+rxuA6m8AbQoD1S/+DRGB0FUuj6aRV1JKjBQpWGDv1V5FLXgMc4JpDDAWkVcrnQjNNs1oiA3Ch0QynEU3iso5jGM4dAXLibigoVaDNSDylnGCc+6NtAogafjX9D8Z0d6ASrsQ41OGzbyWfYlahNhAWqbhWaEQXyRjYiRgXm02H4ufmmx9J61foQOtNkoxRhuGc1GggFpHbFN26hKZTOFMRF+LG0avyA7UayoBTTCvakgO+lvQJbVV/DsIH2iLoaGk0uhAB5bQE0RcQFJ+AxHwjGOnmSgcvDoYLHP8gVhQA5z8k5ANZxSgtMx2rNMQ7tMaNlNq3gqQqlIH1PiikmtG0tV6cUoW3TbktpGJoe3bMKacU4zmkEdeckgkMWWD8dsmB0yAKpJiHfD7zuvg3+r+7aSqItxkOP4nHS+tgSP9CUUC0T79ufgVUIQlbc+Sgax+ulAvLeTzHJqJGTBha/bYHiGdZKrhyLhQrCxLLqAZKmQipMdnG+lu5OS2vKMeC+I4As8CCWgXICPfs+VGmlxkZu4DETaez+xslTTOgrDMXgQl/hCyG+aX+5AFL/nZMYiWERegALfZhiDy42vkaSVN03fkRjNJGggR1gj2ZzXms250KRZnNgdMhsju/QbK6sR/d5TmZz7C+azTkwQ2g25yIyqLbix2g2NwADAhhreivjigTGcx4Yz+MZFgHpUobG4eTeo3awVthECDCcUYPtpGhgPCH5dU7ezztJcFmGRIAEzIRcO08vEJck4QcteXohoZEFnC6Ln1K4WhO0ZMHzWqo8r6XK81q+QxIp+hiQBfb6z2oBDsVDU0bL7l/n3BQ6Li7U2DlOaf3n23rdZ7SU+B8BnYZpSmtGy96qDYqiBhnqbFoFUUalHMHpfg6UkOjmTF6g8AgF4iPwjCXwHcV0xLhxNh0ukFlBqBgNfhYPYYUNtgcZkBtnYZ8VUtygm8XS0aLRCqJ3CA+HqFvR7yU6RxFvQkLzHFqC8A0emyFXUmLYsVoG7Dx+yINQXGeUjoOkDu0QrxAXxLNrZLEibgGvpCN2QQ5PlXd9x6e4fjPgxm2nT58+3XJrWhPcf9Rvhm4Kvk3clg7fnNaELlR4jtx8Y5pvE799I8XQQh7iyk8C53Gz4EK78pPbxG/jVyduvBGYrJtvHFQj8e1cPSbZJxWdevA+CfjR6SYeTtYWv5fFtCIFTjRTqXGhxj+EUYwUowUj2dROqybDDqBbMZM+UehJhhVg0DwF5kil+APsctzmwH4ev+VEpOQfx6VIC1ohrQlGH+MBKUBqGLVFodAU9c3QPMTjf/xJHmHG/PyTLP5bfUb5qF229tq5SsliLMlCjLGQ/L3Cmq1YrnfAzBYt78r8tGVXvF1WfnLKc6y5vJu3y2PlyvS45QTJKcw9YDrm9PYpszxpHXDsGds1S17eK1k5y806+Rkvb5dnoMhYFsu4V83kTM8yctP5sl++bB0eM+FF1i57jpn1tpfyVtmjkn4htzJesLLeWBbzxvI5tzLuenmv4lnVdwcrOXu7rMT/cNqd9B+Hj1jZimfttVzXnLSm6eegPeEdNh3rqplJx8wF7c2UzPJ2s5y1SmcpcKBklsvmtEVgyJcn7NHx7IhlOVZ2bmzCssxsEX48AiU87rMqnmOX97qTjuVWxqfz3tiEmS9VHEv+jOVzjjVtz1ljbnbKglkyc7ngecZy8nZu2p10XcsbG7cmbMcac61ybmzKtos5q2xP+wAcM3M5Z7zilMc8u2iVXXParpQ9fDHh2NOYbbnudL7syRLy0c+hyaJZCaYnyHQs07PGsEW3Mu7/wnio3IwEUX0qP54d8xyz7E5YjmtXnKw1NmM7nnyEFstWiXpjlXOw0LJWfs5yfAgSoP0U/LqeOT0zbU3bEwB2BFy+7FlOdsrMl8dmK5ZzFP8by+cquJjOyIaxFa2jLvzKIgRmeIGdNbOwhN2xiXzJgz5N5l3Pcs7Sjnd0xoLqFvgya5fLFr6p9oaakqDzjtTUaWazMGNj+Zwc70INy0JB1oRlMfYlNclWMMbuVZMsyhjbpibZMsbYL5Uku4Ax9rz8vVlJsibG2HVKki1hjO2U6Yvlb1JJsjhj7Cecfp/mSbaYMfaHnPL/gCdZC2Ps3TzJkoyxGjwAO3PGzAIk5sxSxcqWLNNpWBoSAvUv3UrOHgvWcFC0PJMvj2XtnOUG7858k8W9OubKzTpWod1arftsGf7vmEXYYUziBYlU/KkK+t3wdQ1uC14e1Amm23WCTYeeZEsZY0v0JGtljL2i0Zw8ryWZYIz9hZZk5zHG/kQjGD+kUfk7NKrnsHzfgIFkX3I+/nM9wJf58nYAjF8IoATYcjtMQh3a3etOSoToo8yrANJ1X+++erd1dMb0pg44tmePVyaM8lFY5GMVpzQ6nt3rTmZLthvsXvkD7QFemkFikjM909/3VQxzQyjJIoyxYojW15WhJEswxkbHs5L6jJfsbDHY5tX32+C9T4W22/nyW2HvSfp12HSn8+NZ1zOdSdOzshXXs6fHzXJxdDyL5WQXAfOM5XOlvOv5nXe3meUiljFLpbFxswQrypXdlclrTHeaqvFXKSB+xzzsTpuOZ5ZKdjaTmbOymczVVnZzmRD+GCBJE1a2Y2UyAD43kzlYGd9h2lvOVWS7XZ7IT2YP52jTT5hZK5OZs718eTKTuRp/D9iHLceQhPoKy52xy651li/8oUEXXc/BdwfxN3u4F1vDEV1tOQDYho4Fu8TNlydLViYz7fpVwiJYuMUrbc8sLdxF252GqRpzvVwmg8hT1ibncXN9CSCYJc/NZKzpGe9oJjMMP1sIWjYyGZnMfvzdvOAIt4zbdgl6OeP429QaGzfdxoE0Tllt8TNHPnzE2/LrzHmw85AD21I/RLnQoJyRyznnqmen5Y161rQPzNff5FnmabQ8YfuVNY6nbUF4tosFX6/fUunrBTxKWNwuZTIzZgWgfAB+ats5y/wG+4reVJflFZhuWBbj+bIJK2cb/i68HioD/VvekMaCzxw5hEzGH8w5t/GOyvTMQUDNb+jQz9Gb6hrMFRFGuXx50pULt8qEbtkCy8FfAzUrvbpqtgOnl7fLB+xSPnu0vgNydMPluQUHj435DLc7ueC3khGHZXGWwQFvRIVcGN9M6ejZG9ubn3RMbOzsZUbLrmeWvfxrlfPxQQ0jB5SI+K58bqJSzrn5cs46AgXzliPco65nTQvLcWwnAzT9YIJouF/An12/iJcgXuCg5eTNUv6GfHlS1CJAqOSeRJItZwz5LaCVGmNII5sZQ94r2ZC3SOYBL3E+YyxrlkpWThy6Qi6oSvmwY860rT8k7LIwy+LQsOMcEsijIX8hZF3Ac3RVXKerZGfNUlfWdCbtLmIznaNdrpPtwrF3ZgHebmfe7hiY6BnM9faOj5s9G7q7eya6/PnscL1cR0/nhs5u/M46gix/p+O2NyfZIcbYBxhjaxhjfvqzMg2wgz/OGPKrACvgmQAewN+ubCizijG2Wn4L40gxxtKMsbcwxtY2lL2wpr13NbT/i4b0CzK93XanbXevOzlpz70cSiK8/y1EsvO/Sl7mh6EkUxljP5D5wy2U3mnP7XUn52zPCshoPgc8eAuVA8ZjrzsJ8hnwTcBkIGcVsM213DL+N01rHaQUyeDlqytbvimZ41ZJMrWM/YFs60H5+7OWJAsDD9pC/NdfyPQXWoi//5R8f7XtWYRJy/bY4bw3NTZnebY57npmvly2j1ouYweTNM63JpNMYYxdnqS6tiSpLruIi54dkfk3JJNMZ4xZc1bZcw9Wxve6k/ncpOmOlfLTeY92P+72/eWyNWc5biWbBTRQOmwedZH2D8OngEZMz3Py4xXPcg3/yceDZ9CcShmpUY7+r5S9fElKlbD1x6alYoT1h6n/yxdJ3vSsfMwMvDwHK4Y7OmfaeXcMsAiAzjNLY/jZmOnLtISDG9+iKByIQ3U0OpdzftP9ebjD9WzHnLQ6ZkoVt6Ons1duUZBfOx33rxbR+h+t2Tum5wH/JTxbuJVxQmewJIQ9ZzkTJfvwm9YpEEE6HRf6cB71a73s10Vyv8OaXscYa5N5FzPGYH1kxCZRtI4iTn7pPNqvvziP5vcqTml/vv00oHoQMtrOp30N0oQ3Zk54loMLdOh8Whfbz6d1bGu0/nMVB8klSTmePUZKCVpXnj2Wy7vmeMkCWlNx8tNAS3Km7VrZipP3jsJzdsp0SFkwkZ/MVaZnSKibtLyxvGdNo7gCD26ASKhyl1bXWONrubIohV+7lXFsFDsx5ozl5ywnP3F0zB+z/9tYlS+34d5BqYexj55P8Pr0+UkWA9wh4XVKpv/yfJJ///F80jn82/kk452Wv02LSUfxXvndksWkU1i7mOTiHYupnvsXES29dRHJw9dxwmGAUf3u1eA/7F0jJM4okC/nvTxgYgCnL/sHX03ZdtF/6YPEyo1Nu5Our2nC72g6JH6maWvQGPgdkK/rZkS+8+cEYSuR1PIlNNauJQS7kSW05t66hGB17RKC4YTMv2kJ6QjuXkIwfGgJrc1HltDaRr3fXA/+ZO3pGdPLjwOye0Xmq0vpuxnHmsgfgVVXceuFh4P4briMS3iHXMpsx1L6fvdS6pfPOZHwSlJufT0N0gvA7wwWeY6E0IVX9RiqvSQmXSiLlHHWEc8qQy1BmaxkZ8dmkJ/1Zbhgycsl3iAJM3aJ5LNgzbUzxjoYY52Ai8SOvDtTMo+K/PRMyZq2yh7WLxzLqzhlKwdMFpI+USlbR2asrGflSkfreJEu+OdUXC/bNWTlrD7TtHqHJqwBqz+3oXe8b6hnw2BucHzC6s71jWcta6K3d0NXKT/umM7RLpTBED+SGAYY8v4Lkmw30PUo8YLdst/wr4cx1ssY62t4388Ym867IOCKibxVyolDh1a20nq4pDWJ/ayUi2X7cDnIbxf+gATbLMvubiV6f6hdeFOWYwnTsUTZpm9cFpSbaqX9nKvMlPJZ07P8WhljJ1uTyMc2tjtnOnmz7GGZz8kyfnv58pxZyucECPQD/RnxnVbCO/77q/Jlb6BfrFsnOsRLMo8tIxxSW6and0gADVm8jOr3y1RKJdraY3O9Pj12u0hqcLuyh3Md9NwBbATOh1+KaNaOZUmE/UnkRY2Tf/Qki3/v/BpqauZy9YSUOJQxZFGCFhGcZsmxzNxRQSXEhO0IU0yiRt4RtiOs2YpZEj4lItElwG7wTW3VktPw8yXqOQN1zvUGJWoRXcPLOszWkNdYpQ+Rdk47qw4J+1jVT9ciXIkpG6r3X48BicuXs7bjWFlP+Bsb4OuIGceey+esnN/2NxWGGNJPP6MwxKABg5JpmNnuzt7OHjlKn7GRA6qhRDDUgJX0675ZYcxgjPmYUFABmnSJdkTeFT6HIMxyTmTNctn2hByr8AVhwDwnViTZ8GvV17YeqvQXjF9157dXJFFS+rcVtAvXi5xtuYKayrse1O+XaV0pd5p1FOoKkIRjTwvJqrHNK8nisLdS8vIzJUsQiGSXXFiLkKzS37xdhjYOrUwiJjXKwt/kDvD8YnSHOGy6Qtp/clD2/pVJlOhIoQAo9rBdKeUEiQoiXwY0M1MPDFeMW9AwEZFO9tTKJNsEXF7ZrHhTtpO/geqOrCJKSota7DD2i6uuGPWhP24J1Dl2MrEqiZKgLFdj4Dyz7K5VSZQ8ZdmyOW2dUchblUQpFsWUYMcCmD3bFuP5yYzIe+tcYZdLR8WM7bpAsAFb4CYFDFtVKgAaEKgwd9n9q5JsF0iuq4gyb02oSG22BxqIAIh5V+IRgANbnUQp2seIfo/aVhPGbITb1tWSAzHzsGI9W+RQ9BS+rcBfsRmJ3t+SQSxe9kTO9EwcpTtlOx5j7G2rk8ix37KauJkzS5bs8mS13CdW09p9HW37w5F9QFDJZ8a+vTqJFDG0hihJtfjhvGMJECCE3+baNcRhZfy6a0bgl9m1Jomal71yo9CChkEMIxtgZ7MVx7Fy4vBUvoTzhwZOf0tddeVIx9DNa6iuUdkTqoO2XGW8IxjYZ9YQlzxCxmPhKwIXKMq+s0auxwU0/Y1SUqsgrn61oPWTqeF+YP9sZoxd+htwP1veTO5H1HM/l9VwOVsZ4eBtDe+3L8T9pCT3k3od3I8suztFa2ghrmYqJbkaWV+d+chPSKb3AynipB9OEfzfNKF6yirNWA4I++zzqSTLSs3fojOl/TP4k9ryIMH56Yvl97Xp2vyOhvwOmY84zq3MoHYQ0SVakF1RmYH2S1Z50psS3UdGRkZGPpROIhfu17FV1vGmwSnvWc5YFVgvpJNsSmockX9gxDegxg/2I2NsJ+ACZsx/40kWv1U5FyRfl14FsG/NLryaMXYNYM3fYBde+ybuwrVr63fhh96SZMbJbz7J4v++vmas08QwHD1jrG+v2Z3XMcauZ4y9o+H9O3+DPgdsOsxsl+eYec/tMrPZyjTx68+vTSK8f1fCpxE77LiQdvzBC2k3L7TjcxfSjvfLnCHH1OEQxm6T5T9wIWGR33A1kyjU0d3Z29O5gVTvZSCQOMDPX5hEWB6QO7Di5m+wggkQh6csYGlK2UrJRNo0PtAvt2D1W1h/MeQWPGsSRI+zf12ZmLAcAW34JO2qK0eGGGNjNTvn0Jsz5sl82eqatnM47k9clMR1c4u0CfjpG6XNhDNmbNu+Y3hk567Ry3fv2btv/4G3XnHwyquuvuZt177dHM/mrInJqXyhWJou2zOzjutV5g4fOXpDd09vX/+GgcGhjZd0nX79f1tOnz59GX2X2bT5UvmWcUXV9FA4Eo3FmxLNLclF552/eMnSC1qXUf7yFStXrV4jUum3rL3wonVt6y++pL2jswu68Gs0/eb9NYrizG7zuUeJ3q2cQP2MIL7jtjayg10l90etIe3xNuK49gFezE4JWMDAojzVlkS8Un1PBBTynm8jX5rtxG3PmI5bZY0yQuTLGfFyG3GZLetJR9ZQNrC/rV1PXKZfrhZnmoyxcfmvFjdn3zTbmUvuYy7hKG99EvuwXNoBa9N6TXqjtJ3JMYIsKGRNwZ6OXEx2Rv+bQUlRz2aUxSkKzNQHMXluI/VvZNbfcuWeTTuuyIirzVLFEtMV1xO1ghRIfweJcmcyruWJ8QpKhNO264ms6VquOGpXQPwSIDcFRUmtgHKpZeY6xR67PIlC7dGM2Gl5iLuoAbSQunVSL4hO0InDVqkkqivb9FAum7aBDneKg/a0JewJYVccgX4XZbMkAgcM1xcJc3nAkBYpp8W45R22rLIwRdkud6BIbpU9YM9RKwDkvNqrTnFFfnIKAHK43R8mzXPpqLDL2Jtxa8qcy0Mf7Im6EXWKK1Fq9qyshx/jCD3HroCkWSKVUrldHLZg2DNiynIsGJTjHEUxCipHr905q5y3ylkrJa6xxFR+cgqIulXKwvChXs+mPYrmOUhtt93pa0x3ul1Mm0UAtDeVd8W07VjCtQF/2GVLHDaPCtmK7U1ZTudTFydZRHmz9ld+2rdNf7udbEy2tLfX8h05xpgFkidjbBLp30zFCyRU0sflcs4YokHTs+oShNasXEaw+Q7CQWf7PmuW7XI+a5byN1hnvKip56kO0r5gmanKtFmuz/+RbEf6Wlxp27jOg100Zc7MWOVOcSVMQN4VphivTML2AbBfvbcz0plkQKt9mFQ40Uo//T6ZlqR9l+lOjdjOtOm9/ibYVCdpZvw6PyHrJJkZ5fpeUSmjwtPNl7NWsH5Ed2fPhnPUzNiXO5Mo9fl1f7yh/3/VkP5Lmb7CmgQUOWPjdsXtXimVGBvqIprw5qzBaWvado4Chn9bVxL5o40Sn8v+oCnSBTwD3fG7xxh7uou0N/53l8nvfLoaeKZ0E+9a1S5kgXU7KtCT1fIsp1McDPAZ4YmM6EbU09PJWGt3kg3UfO/mJ8umV3EsWLrTpve2bqLnfv6U6U7JLHakm7Qjsk/DjoO9QheG2j02Vf3+Ctk9dC+W7w76TdJCO2PlbUetCojSNf44P+smvmBHfi6fs8T4UXGD5dgZkewh/mS/5F+hcFsP2R1p/bk1HjqoEML6NvfQvjrYQz4NVBZYCFJ2ejYVnuqRfj6yHO6ICbtSzpFcBH8nZXuSRktVFjDJYvyoZ7lUnXS1E4x9oieJdu8AxtaRIPf5HuKZ/DxUoAHvnQnEjUuFmfUqZunSl3tIA7m4lzQO/jfbkHmrNtjeS2PdaZUtJ58NoLqnl9aSnCQxUxkHKhUAPddLe+Vqy8lPgIBUMyUneqmf1cnyZ4AOBNSuh3wwb9uOvt1y7Nq8Qs3c1b4v1vhWWcOOf+IA5mTanTwArN6w43imM2l5+Haf7Y3AtBTz5ZwExFXexJC/uqwj8mmH6ZkH8zdYPjQZYyXpNwX/pgEXI3jr6Ua5Cl8CrwTmsONI8B1A6A07Tt13dgP8GvNnYJxTpYNTzgH78N5K6WBl3Mjl5EoiyRr37i/6SJv0qz7S7qn9xNP6sMP1a89YpPNlbFbyufAP8AtmlXM98rf3zHnDGrBvvj8a8KmIQfyFTXvP33zst/qJj39/P62/2jmu9qeck0LFmGTNq0np/2qPgRgQuMpU0zlLit2VqvTh18IYe6qf1u9/6Scc8AP5+7N+ksFP9xPMQhsIb0nHKrSvQPf8Dsga/e0zUxkv5bPIsBHiK24gf/+6/cMYu3MDadC3mV52Sr79yAay88vKaFEQXsNiABdY2/9lA+GTazbQPP6sL8le6kuy/7svyf61L8l+2JdkL/YlGRsgHHP5wf37ABkLU2Tt6WlToDsLEsqS6XqE6YF0mmVhOg6xXtPmTGfwIXCjh6fyHqnmhOeY+RLguuyUCVC3HLemTmJOcUMJE1gbS7gVx7EnTc9qF4en8iC2ASsL7C00i80A515jJkGNBWr3UTHeuR+PgCFgJfttSiTV6cO+Us4j8sT/kDoGWbDJ/Wc6yhZkWW7WnLGEC/NYzlqdw75iBtnSYICooAMCLEzqL42yWtqWMqSVB35VmOKQ51SsQ+3i0IRZcuEBzbWHgHYfOlcr47V1rGtfd0h+uO6mdTXfAWAPV+Eq2nZs7+7+/vz7d4yMjKz/dauHp3fU1w6cfF31Q1T9tteuHmrLQG37R6StwyeN9aBbIFvO6AJZZWHjCljws1Le9Tq3k9t5TXeQ1MICk9X+hnybazk5q6Pgwl4A9q27c0NnD36as7oqZVpIwL8lNyZRPrgQteTGyZ89yeKPaOfSBPtf9EkPttelGd5nlzuA/BsHt4+ONg6bse9tJK7Qr/sD0kP4zYSCr21rzSRRO7JWahP89E3SM9dPH5deNdtIT5h3xQRy2p/IJN/cvrqWIzuLu/OpDNkTnpT99dP/5NsX3hBts5kzZwBXdlnlyjRQW1wtezYlUdPdg20ZT/7Hkyx+cvW5VsubpSudBBpllsZmKs6M7VpdxIxK38vXYad4flMSeQdH6pFq02tr0q5c5X76H6SftZ9+oSH9AymL++n/1pD/44b8f2vI//eG/F825L/akK/x+vwwr89PNOQnG/KXNuQva8g/KS1hfvoDDfD4gPRv9dMPNOQ/IH1d/fSHpO7PT/9+Q/2fkTvfT/+R9JetTZ9Xk/6TN8aq9muuszG3MjGRP9LpuDu2JNkRaWUDOcFPd0o4+Ontct789F45bj99tbRS+ulr5S7z01mpPx2d9l0sMqS5QJPklDlniW5Y8EOCNDW+QEZcU3aqUi620yYo24HzAClW3fbLkuxKaSNB1Z+UfSxIW8CsOJaZnTLHS1ag277tMrL++/37LTlvfvpkw3g/KOfJT/+BnMf/VfPmY/tXLkuijLNVrls/vU3aF2vTy2vSvyMpXm1a1KRvkx4ItekLa9IflvDw0w82pO9tSN8vLbS16a016fsayn+wIf0hmX4z7XPXG2Rje7ec20CwMHO5fHmSPW3U63BwKbpHp8ftkmgX9sSEa3mik7EXDJKxf26Qn/WvDLJFDvuMtXUk4LdxpZtioGM87wnHmjZhCE4na92WRP9Xvy1Y/zA/e7aR7NJY9w018t+7pG2t9h1Q/0MgDtgT4gPbSL5qF4w9vo3kmfu3UT3+L3K+h6rpp7aR/Oqn3xDuoKezu7NnY289B2MdmSnls3lPzJjlfPbFbTQn/xKh/eWfrdovTxvWn60Sh/bZZcs/W3WsRl6flxzPLYwx0vbRUUpSjtgTQmIY8mxi7KHt5Af+x9sJ3j5X4Xo57C5+3Om4394u7Whc2m5oWqftXH7iKIpkOAwxZdtF0vOb9Eaq3x3LzL2yPYm+wI1tBOU6HXdoB+mMfkeuTT99QKHzV356v0L079Ya29gJxhAW/loA3PbbEv9qss7bGsrAHridMXZHje3tTsbYe2pg+l7G2F0SN9a+v7tmLFU/Bcc8PDZnAcyy5oyZzXtHa/kXMUx2eG2YxtEkvURNKcujWQhdBl7T4YK9r8HH4sy+TEx7nY57cpjmblwh3PfTJ76y/syyc1ZWrsz1wp1C98dxS2y+FKiNaMu74pDpHRLuTAm6BuseX/50mNbPd4ZJh/elYdo3X5bj640QPsNVJxUTtTB8P+BLx56+ypsYGpZ6i3tq5vR3f729QIK39N4ct1APhEaPsl3uwASI6bIU+tdNm6USEOAJHJYgjV1jqRK8XbhU4M6Yn8x7jeJgttby67sy4O4gOxmVWn8GKz8x7cm56OxkLLeTcNfUCOlaMtdVn4/sJHj7v7SXyFS4bl27eEi+f3gnnSF6oGbNfBh5B5hJu+IBbhiH3rsZ0tpY6L+JOhMyxEHBvCsYe2oneQa+uJN03ocyIuhPdBf19cGaOXwI2pc8o4C/d8XaY+1CvEvcJG5qi7W1x6i8vyaAx3jHgjApowvNO3aRTSovebfuI93d3T3dvd193f3dG7oHuge7h7o39nT39PT09vT19Pds6BnoGewZ6tnY293b09vb29fb37uhd6B3sHeod2Nfd19PX29fX19/34a+gb7BvqG+jf3d/T39vf19/f39G/oH+gf7h/o3buje0LOhd0Pfhv4NGzYMbBjcMLRh40D3QM9A70DfQP/AhoGBgcGBoYGNg92DPYO9g32D/YMbBgcGBweHBjcOdQ/1DPUO9Q31D20YGhgaHBoa2rixe2PPxt6NfRv7N27YOLBxcOPQxo2m61oO7nbCzxlxcbbiOGKL6NnImD/uf+WEM2ph9hHG2COMsUeBlu6kcoujhDP99Ioo8U6OWZ60pKaJptVfAJQD+8Ut5bNIRKVv3OdHaa7/YjSJ0jWVtHCxQw2vjJJu08+n7ymvalTC1WSVc5hgKy8n/X3v5UR7+P/mP2a8795TLN6nnPNPbfjT4I8Zz8Knj12QL2dtwNueJSreRAdZWALNH+19ggpjB3YTL+6jEPogKFtDrKtfndhNvhQf3k3zwa7r7Ox8BzYipzLv1m9neDrEvr6b9L5/s5tgHtlFeGHcmsyXAcvDVLbBw3pysYIJBFp0CJgx0pQ076HzKuftobn266hqS7NTpkPNms7RTQKQJQgzLqrl22gw67FDfn927CFbU2EP6eidPcR/+XWfgQZcz9eqsIf20LoG2XnVQmWltrZrxsmXPRCDSM/wV3uSyOPH5DlvPw1wHUDkqOp6KKSEQ5FwdFFsZXxZ0/JEsrmpRUuq5513fnQpv0Br5cvU5eEVfKWyZqlQL1E74p28W+1RevljykeVj2kfj/xP5Zf6r5RX1dPRTx45esd7fr/7mrfdcefJlf/U3LJ7zy9f6ey67Pp3jH3/xHvee/f7PvrZL37pa1//5l/884v/cpppi85b39M/mNl06ejl7zjx3vd99LOf++KXvv4Xz3zrxX9hWqIZczObhkdGL39nzjpx9+898M1nvpVYtD6zaXj0muuuf+dYznrP3R/93Be/9LVvfvfFf3kpsWh4NGfNn/jDL3/1ib977qX/cetv3fGRR7/6xNe+8a1/+Mdd93/lr7/+zLdG9+2/5tp3jr37vXd99k/+9IlTX//Gc4uWXnDd9b/4j1dPz0/P/vN3m9eU7ZWrxm66+VOfPvalLy+9YPWakZ379r/t7de/8+Zjf/y1b//d8y/9j3933Lu8yr0XdXY99uk/feIb33ruux/cet/93Xet+dtvP3N63/63XxeOtCTXdf3kp2V78NLLtg2fvPvgZOXpbz77N9/5rz989TQTY+lbvqvdsiOyQgstOv6J5vmP62uix1eoyyJc69L6tbDKw6HwotiBlvPCV4VVbWUsqkbUsApbsUnT1XiINy/R94VXhK8JK6ELmg5o29UOlWuLQi1NGW3VhWNiWitcOP+0fstn1OWhW36lXhteGm2NLm5a3FQIxULLQ9eGL9FHYu1ak8bVnni7tjwUV+c/EYqFunr2qvMfiWxWW9TN4aHIJfotpxe1RroWdaipllTL/J3aLfctiy+57R69S98UVppbo/NfTXtN83+/vEmfP63Pf7fp3x5QB6PHr188//nI/F/qsdZNaiw0FBmJNIW8+Gr17dq10flbW1fGlkb3aPO3hz7+kaYLtJ6HteP/cFG4SdfnH00e//cwFxeH9mjz79Hmv6quUFsSLMS5yjVFD4eVSCSqxPS40qwl+SLlPP38RYv5EuUCZVlipb4qsoav5QWtqHxa/azyZeVbyt8o3276u+jfK88p/8Bf0L+n/FD7kfIT8ZL2svI/1V/ypnWbtuzbf9eHP/zgu+54/72//4df/O3PhsLRgUu3XP2zZ/9GW9w6MHj1Ncc+9qlPf2XDC+f9zrvf++FgMcJa3Lc/Z13/J3+6YmU4EosvvmBgY+bxj37nv0YHT979eDi2actE/q73LbLHnvjJT98+/vNXTh+88oO/19m1ru2qBx56+A8+8tjjn/zil58KxZuWrMpcNvzWRx/7q79+KLxsefrCLZf98Mc/Pf21r2viLRde1NY3lNl1+Z4DB6+6Gtbeoaw1UXSP3HTs9o987NOfefLZT326bH/1/e9Mv0tXtQ51QuVdnfO3rFJ7WlZqa6Or9Uv0HVrzxfMfC63V1mptkf74vu3HB6NLY5HWTcMb1Wwk2r1UT6krdL51SNutd2mxcDS8VazTmqIDakZfHtaawgdGB/sSfeHOSOz4RVfsviRy8dLlF61cfEF0n7Y2uiOxLBwL7Yqsi1bi27ZcHNqkx0JvDXE9qerzd4yv3hWJzT/6zvRwPBZKnJ8JxQbatQvmv7A5d7BpVzQ2MrxiV+RgYjQcm//FSGyVunN0UG2OxEIbw7HjA8vCm9SVV/OW3sStvzdRic8/dfuebOJEd3LpXR+7ZefDX7hlY/hi7frQRbGRWJt+/i2fuc7arW0ML9oKS+K+lyMn/v7i6O//8HhfC18VatYix+98t1bUE2o0nHzfoZ1Rb/P8L2JuZGbJyA2wFa6JLpv/neM71d/a1rLkxIE1odD8312ib0nxmQ51uaYc37pmUUbnx5+9+Jb/a/4/1u/RYppy66Idey6d/7PNIa5dpa/oV443t2u5pqtj858aWpVo16JhpTk0/8Fbv6MtUhPqYW0s1KTxliZtKBILtUXS+45f2bRKjYYHIs1aNBwNz//lhbETobPicPk7ljM9s9Nxq06x5Dh7xndVUwl7+gqimf3SZ+X6yruCd+MyhsdBe9oCOaKWp3rM97sIhBMyDFdmxjybXEtKVrmeD3sc5MQrkqg7PSB1qH76ej/WgcrYrZpgd+uH2DvOf4idd4FY0yQOrflp+0OXXNwt2u1HX2hXHj/UsfqXhzrZq2Lgw6cPDfyKf2+Ax1KDaxPfG/x4s7mxq/Xhjd0rzV0/W/3wnq395oGXCg+/db+duuKBLz98BfuWedD6m4cPsn9IXcle+N5Vn/q+ec2PX0xd++yPHr5WsJ9c+xI/9nY2w8Ksg3OucIXzXfHuJUluhZWQonDtLXz1iuvimWiUt2o8ylWuX6JujlzcysUg51yLaFwNx5RVPAOfaxEe5TFlOVeUjVxTNGCQ+GpF5XFI61zR+GJlaYhDaYVrER5WY8pqvolz3sSjvI2rfJBzVVe5FlbiWCt0SeW6AumVykal2soqvotrXFE5j/C3ciXcFBnnSjQeHlVWIAc32Mx1ruhxvjbKJzQe4oqiLFM0NakluKKEeAtnKlNXKauV1cpWhYcjXIlHeYfKeUVJ8zlVU6I8pP6jokBvw1CjEgnFFN69pkfrDnOu87ZokyI0ReHqEMeOqJmIotyv8gQPQ4Oq8vWtjP95iqnv4YcEC+UVpvGYUA4oDLA2X6bo/D5l+XkJflFkWbxT7eYAsnV8ewh4yyYe4V28j3NVUXSF84uVCP8JgI0zzpIY3oR/n/+uzlSu6FqbqvFHFKYx5YA6Eu/R3sUHWtZzRYmpPZqihPml6lqdR7bwJqU/GtMUPqYCKENc4Q9wNbIEIcv5Ut4cVvU/j8BgLgCohmCiYBL+O1e0kMKVFcpVEXhT4Pg5t1RF4zqLcuXfeUzhXOMnNUXRuIi1hXCmQorameAKC/MQ51csVcJQ2w0hFWoNc74LmuJMiSv9ug5PPNTC9E1hxi/T3sqZwjqVCxjnqqZHIkp4tXaPyga13ghv5kt13sLCfBHWqOf4Q2HGL9WYxsLTYXZo/iWK17FKxu3w/6V3Jpm+M8m+O5JkXxhJsvePJP/fAAAA//9Z1rVJkWUHAA==", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "H4sIAAAAAAAA/+y9fZxd11EgeL7ux3v33u7b6pbU+j73Wru8npGGDut0K54s9Ol162PsECUY1vBj11ZsQXzbcSxFMTbrVbdj2SjEGTqxQpTB7AhikGEtEOBhxK6BzmAYJQhQggMCnFllCPwUxgTBZmYFhGh/VXXOufe9fq2WZcPwx8g/97tf56tOVZ2qOnWq2L73vYczxvgv8w13i7k5Pgd/2d1yDq/hh92t5vCH4/987u5gjh6Ec/YimnNXfI4fvpsx+wmfuzue8+/w2WGs+zC7W9hLKEAVHcYaDx8+jC/gL4MuHPZd4HO+JejnYeoLFhD/SgzK/Q88FOx713sPHmIBXEf3vuuug/v33ctCuIvvfddd33fwvkP7GYfbFr58z3sf2l9//L579j3AhLt7YP/Dh6hotu/eew/e9dC++++7d9+h/fRsCJ/ds++B9z5w3z377r/v+/czVn/77ve/Z98D/ln+vv33PPhNb56YfdNdD+0/eN/3PEKNjNaPD+6/570P7T9414Pvf9fs/kfYELwe2H/vN735zW96S1eZEffwXfsO3fPurlfBvfvf9f7vpdEkB96//+Ajd93z7n33PcBC+SviRRFxKQdkJFUkpeRcciUll1xKxaXkivNBqfKIR5LHacxXDUjAChbU/xhjQkBpzrkUTDDGWCAZwwe8nQRwEcM1W/KP80ByOcwZh+8jBu1DMSY54yO55GGgItlKlJJZK8ukYiGHUozLgNt/UspgUHEluYI3behQyAO+OuAJvI9YSP/wY2bvqPkEOgUtCgm9E6wtU4mvIqHCNSyFZ0yytYKFoRJhCKMbXQcfrBdCqog/yD/MPwyjYEPhOjnHzfz8IkvmmDl9/FP1b/RzPAvfs/897z34iGDJfQ+879C+Bw7dB0jzv0T7H95/z/sP7Wd3BTg57O7oPfd970F4ty84uP/B+x9h74r33X//e++BR6d4+979/u5neH5w/4H333dw//vuet+hfbP3PfC97Bf4kH9236H9B/cdeu9B9gt8+L4HDu0/+D377tkPyPG++977wF072C/w9l133bvv0L679j9wr+TJXXe9e/++B+9617737Zei9SXOmeHJU3zquPgP/C3/fNrs/ln+8/w0/zn+Av83/Bf5v+Vn+C/x/4v/3/xFvueOd9z6bXvf+WviWxf5r4qpPXe843t2f9ve79196H0P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", + "instantiate_permission": null + } + }, + { + "store_code": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "wasm_byte_code": "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", + "instantiate_permission": null + } + }, + { + "instantiate_contract": { + "sender": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "admin": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "code_id": "8", + "label": "neutron.voting.vaults.neutron", + "msg": { + "owner": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "name": "Neutron Vault", + "denom": "untrn", + "description": "Vault to put NTRN tokens to get voting power" + }, + "funds": [] + } + }, + { + "instantiate_contract": { + "sender": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "admin": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "code_id": "9", + "label": "neutron.voting.vaults.investors", + "msg": { + "vesting_contract_address": "neutron1frq2hzkjtatsupc6jtyaz67ytydk9nya437q92qg76ny3y8fcnjsgmftuq", + "owner": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "description": "Vault sourcing voting power form investors vesting", + "name": "Neutron Investors Vault" + }, + "funds": [] + } + }, + { + "instantiate_contract": { + "sender": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "admin": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "code_id": "10", + "label": "neutron.vesting.investors", + "msg": { + "owner": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "token_info_manager": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne" + }, + "funds": [] + } + }, + { + "instantiate_contract": { + "sender": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "admin": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "code_id": "1", + "label": "neutron.core", + "msg": { + "description": "Neutron DAO is a DAO DAO-based governance of Neutron chain", + "name": "Neutron DAO", + "proposal_modules_instantiate_info": [ + { + "admin": { + "core_module": {} + }, + "code_id": 5, + "label": "neutron.proposals.single", + "msg": "ewogICAiYWxsb3dfcmV2b3RpbmciOmZhbHNlLAogICAicHJlX3Byb3Bvc2VfaW5mbyI6ewogICAgICAibW9kdWxlX21heV9wcm9wb3NlIjp7CiAgICAgICAgICJpbmZvIjp7CiAgICAgICAgICAgICJhZG1pbiI6IHsKICAgICAgICAgICAgICAiY29yZV9tb2R1bGUiOiB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICAiY29kZV9pZCI6ICAyLAogICAgICAgICAgICAibXNnIjogICAgICAiZXdvZ0lDQWlaR1Z3YjNOcGRGOXBibVp2SWpwN0NpQWdJQ0FnSUNKa1pXNXZiU0k2ZXdvZ0lDQWdJQ0FnSUNBaWRHOXJaVzRpT25zS0lDQWdJQ0FnSUNBZ0lDQWdJbVJsYm05dElqcDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDSnVZWFJwZG1VaU9pSjFiblJ5YmlJS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJSDBzQ2lBZ0lDQWdJbUZ0YjNWdWRDSTZJQ0l4TURBd0lpd0tJQ0FnSUNBaWNtVm1kVzVrWDNCdmJHbGplU0k2SW05dWJIbGZjR0Z6YzJWa0lnb2dJQ0I5TEFvZ0lDQWliM0JsYmw5d2NtOXdiM05oYkY5emRXSnRhWE56YVc5dUlqb2dabUZzYzJVS2ZRbz0iLAogICAgICAgICAgICAibGFiZWwiOiAgICAibmV1dHJvbi5wcm9wb3NhbHMuc2luZ2xlLnByZV9wcm9wb3NlIgogICAgICAgICB9CiAgICAgIH0KICAgfSwKICAgIm9ubHlfbWVtYmVyc19leGVjdXRlIjpmYWxzZSwKICAgIm1heF92b3RpbmdfcGVyaW9kIjp7CiAgICAgICJ0aW1lIjoxMjAwCiAgIH0sCiAgICJjbG9zZV9wcm9wb3NhbF9vbl9leGVjdXRpb25fZmFpbHVyZSI6ZmFsc2UsCiAgICJ0aHJlc2hvbGQiOnsKICAgICAgInRocmVzaG9sZF9xdW9ydW0iOnsKICAgICAgICAgInF1b3J1bSI6ewogICAgICAgICAgInBlcmNlbnQiOiIwLjA1IgogICAgICAgICB9LAogICAgICAgICAidGhyZXNob2xkIjp7CiAgICAgICAgICAgICJwZXJjZW50IjoiMC41IgogICAgICAgICB9CiAgICAgIH0KICAgfQp9Cg==" + }, + { + "admin": { + "core_module": {} + }, + "code_id": 6, + "label": "neutron.proposals.multiple", + "msg": "ewogICAiYWxsb3dfcmV2b3RpbmciOmZhbHNlLAogICAicHJlX3Byb3Bvc2VfaW5mbyI6ewogICAgICAibW9kdWxlX21heV9wcm9wb3NlIjp7CiAgICAgICAgICJpbmZvIjp7CiAgICAgICAgICAgICJhZG1pbiI6IHsKICAgICAgICAgICAgICAiY29yZV9tb2R1bGUiOiB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICAiY29kZV9pZCI6ICAzLAogICAgICAgICAgICAibXNnIjogICAgICAiZXdvZ0lDQWlaR1Z3YjNOcGRGOXBibVp2SWpwN0NpQWdJQ0FnSUNKa1pXNXZiU0k2ZXdvZ0lDQWdJQ0FnSUNBaWRHOXJaVzRpT25zS0lDQWdJQ0FnSUNBZ0lDQWdJbVJsYm05dElqcDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDSnVZWFJwZG1VaU9pSjFiblJ5YmlJS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJSDBzQ2lBZ0lDQWdJbUZ0YjNWdWRDSTZJQ0l4TURBd0lpd0tJQ0FnSUNBaWNtVm1kVzVrWDNCdmJHbGplU0k2SW05dWJIbGZjR0Z6YzJWa0lnb2dJQ0I5TEFvZ0lDQWliM0JsYmw5d2NtOXdiM05oYkY5emRXSnRhWE56YVc5dUlqb2dabUZzYzJVS2ZRbz0iLAogICAgICAgICAgICAibGFiZWwiOiAgICAibmV1dHJvbi5wcm9wb3NhbHMubXVsdGlwbGUucHJlX3Byb3Bvc2UiCiAgICAgICAgIH0KICAgICAgfQogICB9LAogICAib25seV9tZW1iZXJzX2V4ZWN1dGUiOmZhbHNlLAogICAibWF4X3ZvdGluZ19wZXJpb2QiOnsKICAgICAgInRpbWUiOjEyMDAKICAgfSwKICAgImNsb3NlX3Byb3Bvc2FsX29uX2V4ZWN1dGlvbl9mYWlsdXJlIjogZmFsc2UsCiAgICJ2b3Rpbmdfc3RyYXRlZ3kiOnsKICAgICAic2luZ2xlX2Nob2ljZSI6IHsKICAgICAgICAicXVvcnVtIjogewogICAgICAgICAgInBlcmNlbnQiOiAiMC4wNSIKICAgICAgICB9CiAgICAgfQogICB9Cn0K" + }, + { + "admin": { + "core_module": {} + }, + "code_id": 5, + "label": "neutron.proposals.overrule", + "msg": "ewogICAiYWxsb3dfcmV2b3RpbmciOmZhbHNlLAogICAicHJlX3Byb3Bvc2VfaW5mbyI6ewogICAgICAibW9kdWxlX21heV9wcm9wb3NlIjp7CiAgICAgICAgICJpbmZvIjp7CiAgICAgICAgICAgICJhZG1pbiI6IHsKICAgICAgICAgICAgICAiY29yZV9tb2R1bGUiOiB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICAiY29kZV9pZCI6ICA0LAogICAgICAgICAgICAibXNnIjogICAgICAiZTMwSyIsCiAgICAgICAgICAgICJsYWJlbCI6ICAgICJuZXV0cm9uLnByb3Bvc2Fscy5vdmVycnVsZS5wcmVfcHJvcG9zZSIKICAgICAgICAgfQogICAgICB9CiAgIH0sCiAgICJvbmx5X21lbWJlcnNfZXhlY3V0ZSI6IGZhbHNlLAogICAibWF4X3ZvdGluZ19wZXJpb2QiOnsKICAgICAgInRpbWUiOiAxMjAwCiAgIH0sCiAgICJjbG9zZV9wcm9wb3NhbF9vbl9leGVjdXRpb25fZmFpbHVyZSI6IGZhbHNlLAogICAidGhyZXNob2xkIjp7CiAgICAgICAiYWJzb2x1dGVfcGVyY2VudGFnZSI6ewogICAgICAgICAgInBlcmNlbnRhZ2UiOnsKICAgICAgICAgICAgInBlcmNlbnQiOiAiMC4wMDUiCiAgICAgICAgICB9CiAgICAgICB9CiAgIH0KfQo=" + } + ], + "voting_registry_module_instantiate_info": { + "admin": { + "core_module": {} + }, + "code_id": 7, + "label": "neutron.voting", + "msg": "ewogICJvd25lciI6ICJuZXV0cm9uMXl3NHh2dGM0M21lOXNjcWZyMmpyMmd6dmN4ZDNhOXk0ZXE3Z2F1a3JldWd3MnlkMmY4dHM4ZzMwZnEiLAogICJ2b3RpbmdfdmF1bHRzIjogWwogICAgIm5ldXRyb24xcWV5amV6NmE5ZHdsZ2hmOWQ2Y3k0NGZ4bXNhanp0dzI1NzU4NmFrazZ4bjZrODh4MGd1czVkano0ZSIsCiAgICAibmV1dHJvbjFqZmdyMHZndW5lemtoZm1keTdrcnI0dXB1NnlqaHgyMjRueHRqcHRsbDJ5bGtrcWh5emVzdjZkc2dnIgogIF0KfQo=" + } + }, + "funds": [] + } + }, + { + "instantiate_contract": { + "sender": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "admin": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "code_id": "12", + "label": "reserve", + "msg": { + "main_dao_address": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "security_dao_address": "neutron1wdnc37yzmjvxksq89wdxwug0knuxau73ume3h6afngsmzsztsvwqmrmfz0", + "denom": "untrn", + "distribution_rate": "0", + "min_period": 10, + "distribution_contract": "neutron1gnpgscdagzl8sfhpv64ex2ahuqg7fkhky6d06krgyt30lfdym78q5c3m8x", + "treasury_contract": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "vesting_denominator": "1" + }, + "funds": [] + } + }, + { + "instantiate_contract": { + "sender": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "admin": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "code_id": "11", + "label": "distribution", + "msg": { + "main_dao_address": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "security_dao_address": "neutron1wdnc37yzmjvxksq89wdxwug0knuxau73ume3h6afngsmzsztsvwqmrmfz0", + "denom": "untrn" + }, + "funds": [] + } + }, + { + "instantiate_contract": { + "sender": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "admin": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "code_id": "13", + "label": "neutron.subdaos.security.core", + "msg": { + "name": "Security SubDAO", + "description": "SubDAO with power to pause specific Neutron DAO modules", + "vote_module_instantiate_info": { + "admin": { + "address": { + "addr": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq" + } + }, + "code_id": 17, + "label": "neutron.subdaos.security.voting", + "msg": "ewogICJjdzRfZ3JvdXBfY29kZV9pZCI6IDE4LAogICJpbml0aWFsX21lbWJlcnMiOiBbCiAgICB7CiAgICAgICJhZGRyIjogIm5ldXRyb24xY3ZoeWV6NGdoNXFkZ2d4NTB2ZmRlZ3Fqc3o0bGpqZ3J5am5ubmUiLAogICAgICAid2VpZ2h0IjogMQogICAgfSwKICAgIHsKICAgICAgImFkZHIiOiAibmV1dHJvbjFwNm1oNzNwNWd5Z210ZTU0eTY4ODVxMmxhcTkzbHFucmVsdGpsOCIsCiAgICAgICJ3ZWlnaHQiOiAxCiAgICB9CiAgXQp9Cg==" + }, + "proposal_modules_instantiate_info": [ + { + "admin": { + "address": { + "addr": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq" + } + }, + "code_id": 16, + "label": "neutron.subdaos.security.proposals.single", + "msg": "ewogICAiYWxsb3dfcmV2b3RpbmciOiBmYWxzZSwKICAgInByZV9wcm9wb3NlX2luZm8iOnsKICAgICAgICAgIm1vZHVsZV9tYXlfcHJvcG9zZSI6ewogICAgICAgICAgICAiaW5mbyI6ewogICAgICAgICAgICAgICAiYWRtaW4iOiB7CiAgICAgICAgICAgICAgICAgICAgICJhZGRyZXNzIjogewogICAgICAgICAgICAgICAgICAgICAgICJhZGRyIjogIm5ldXRyb24xeXc0eHZ0YzQzbWU5c2NxZnIyanIyZ3p2Y3hkM2E5eTRlcTdnYXVrcmV1Z3cyeWQyZjh0czhnMzBmcSIKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAiY29kZV9pZCI6IDIsCiAgICAgICAgICAgICAgICJtc2ciOiAgICAgImV3b2dJQ0FpYjNCbGJsOXdjbTl3YjNOaGJGOXpkV0p0YVhOemFXOXVJam9nWm1Gc2MyVUtmUW89IiwKICAgICAgICAgICAgICAgImxhYmVsIjogICAibmV1dHJvbi5zdWJkYW9zLnNlY3VyaXR5LnByb3Bvc2Fscy5zaW5nbGUucHJlX3Byb3Bvc2UiCiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICB9LAogICAib25seV9tZW1iZXJzX2V4ZWN1dGUiOmZhbHNlLAogICAibWF4X3ZvdGluZ19wZXJpb2QiOnsKICAgICAgImhlaWdodCI6IDEwMDAwMDAwMDAwMDAKICAgfSwKICAgImNsb3NlX3Byb3Bvc2FsX29uX2V4ZWN1dGlvbl9mYWlsdXJlIjpmYWxzZSwKICAgInRocmVzaG9sZCI6ewogICAgICAiYWJzb2x1dGVfY291bnQiOnsKICAgICAgICAgInRocmVzaG9sZCI6ICIxIgogICAgICB9CiAgIH0KfQo=" + } + ], + "main_dao": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "security_dao": "neutron1wdnc37yzmjvxksq89wdxwug0knuxau73ume3h6afngsmzsztsvwqmrmfz0" + }, + "funds": [] + } + }, + { + "instantiate_contract": { + "sender": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "admin": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "code_id": "13", + "label": "neutron.subdaos.grants.core", + "msg": { + "name": "Grants SubDAO", + "description": "SubDAO to distribute grants to projects", + "vote_module_instantiate_info": { + "admin": { + "address": { + "addr": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq" + } + }, + "code_id": 17, + "label": "neutron.subdaos.grants.voting", + "msg": "ewogICJjdzRfZ3JvdXBfY29kZV9pZCI6IDE4LAogICJpbml0aWFsX21lbWJlcnMiOiBbCiAgICB7CiAgICAgICJhZGRyIjogIm5ldXRyb24xY3ZoeWV6NGdoNXFkZ2d4NTB2ZmRlZ3Fqc3o0bGpqZ3J5am5ubmUiLAogICAgICAid2VpZ2h0IjogMQogICAgfSwKICAgIHsKICAgICAgImFkZHIiOiAibmV1dHJvbjFwNm1oNzNwNWd5Z210ZTU0eTY4ODVxMmxhcTkzbHFucmVsdGpsOCIsCiAgICAgICJ3ZWlnaHQiOiAxCiAgICB9CiAgXQp9Cg==" + }, + "proposal_modules_instantiate_info": [ + { + "admin": { + "address": { + "addr": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq" + } + }, + "code_id": 16, + "label": "neutron.subdaos.grants.proposals.single", + "msg": "ewogICAiYWxsb3dfcmV2b3RpbmciOiBmYWxzZSwKICAgInByZV9wcm9wb3NlX2luZm8iOnsKICAgICAgIm1vZHVsZV9tYXlfcHJvcG9zZSI6ewogICAgICAgICAiaW5mbyI6ewogICAgICAgICAgICAiYWRtaW4iOiB7CiAgICAgICAgICAgICAgImFkZHJlc3MiOiB7CiAgICAgICAgICAgICAgICAiYWRkciI6ICJuZXV0cm9uMXl3NHh2dGM0M21lOXNjcWZyMmpyMmd6dmN4ZDNhOXk0ZXE3Z2F1a3JldWd3MnlkMmY4dHM4ZzMwZnEiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiY29kZV9pZCI6ICAxNSwKICAgICAgICAgICAgIm1zZyI6ICAgICAgImV3b2dJQ0p2Y0dWdVgzQnliM0J2YzJGc1gzTjFZbTFwYzNOcGIyNGlPaUJtWVd4elpTd0tJQ0FpZEdsdFpXeHZZMnRmYlc5a2RXeGxYMmx1YzNSaGJuUnBZWFJsWDJsdVptOGlPaUI3Q2lBZ0lDQWlZV1J0YVc0aU9pQjdDaUFnSUNBZ0lDSmhaR1J5WlhOeklqb2dld29nSUNBZ0lDQWdJQ0poWkdSeUlqb2dJbTVsZFhSeWIyNHhlWGMwZUhaMFl6UXpiV1U1YzJOeFpuSXlhbkl5WjNwMlkzaGtNMkU1ZVRSbGNUZG5ZWFZyY21WMVozY3llV1F5WmpoMGN6aG5NekJtY1NJS0lDQWdJQ0FnZlFvZ0lDQWdmU3dLSUNBZ0lDSmpiMlJsWDJsa0lqb2dJREUwTEFvZ0lDQWdJbXhoWW1Wc0lqb2dJQ0FnSW01bGRYUnliMjR1YzNWaVpHRnZjeTVuY21GdWRITXVjSEp2Y0c5ellXeHpMbk5wYm1kc1pTNXdjbVZmY0hKdmNHOXpaUzUwYVcxbGJHOWpheUlzQ2lBZ0lDQWliWE5uSWpvZ0lDQWdJQ0FpWlhkdlowbERTblprYlZaNVkyNVdjMXBXT1hkamJWWm1ZMGhLZG1OSE9YcGFVMGsyU1VOS2RWcFlWakJqYlRsMVRWaG9lbUpZUmpKaVJHaHpZMWhKZVdSWVpITk9WRUpvV2xoU01VMUVWVE5OYmtwNlkzcHNiMk51Y0doT1YzUnJXa2hDYldGcWJISmxWRTV4WTFSbmQxcHVXWGxrU0UxNVRVYzBNMk5VU1dsRGJqQkxJZ29nSUgwS2ZRbz0iLAogICAgICAgICAgICAibGFiZWwiOiAgICAibmV1dHJvbi5zdWJkYW9zLmdyYW50cy5wcm9wb3NhbHMuc2luZ2xlLnByZV9wcm9wb3NlIgogICAgICAgICB9CiAgICAgIH0KICAgfSwKICAgIm9ubHlfbWVtYmVyc19leGVjdXRlIjpmYWxzZSwKICAgIm1heF92b3RpbmdfcGVyaW9kIjp7CiAgICAgICJoZWlnaHQiOiAxMDAwMDAwMDAwMDAwCiAgIH0sCiAgICJjbG9zZV9wcm9wb3NhbF9vbl9leGVjdXRpb25fZmFpbHVyZSI6ZmFsc2UsCiAgICJ0aHJlc2hvbGQiOnsKICAgICAgImFic29sdXRlX2NvdW50Ijp7CiAgICAgICAgICJ0aHJlc2hvbGQiOiAiMiIKICAgICAgfQogICB9Cn0K" + } + ], + "main_dao": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "security_dao": "neutron1wdnc37yzmjvxksq89wdxwug0knuxau73ume3h6afngsmzsztsvwqmrmfz0" + }, + "funds": [] + } + }, + { + "execute_contract": { + "sender": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "contract": "neutron1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8ts8g30fq", + "msg": { + "update_sub_daos": { + "to_add": [ + { + "addr": "neutron1wdnc37yzmjvxksq89wdxwug0knuxau73ume3h6afngsmzsztsvwqmrmfz0" + }, + { + "addr": "neutron1c2735y6d0px8pjvaw6vfn505hc999q42aearuhyfkx29qaf9stgsgcqm9f" + } + ], + "to_remove": [] + } + }, + "funds": [] + } + }, + { + "execute_contract": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "contract": "neutron1frq2hzkjtatsupc6jtyaz67ytydk9nya437q92qg76ny3y8fcnjsgmftuq", + "msg": { + "set_vesting_token": { + "vesting_token": { + "native_token": { + "denom": "untrn" + } + } + } + }, + "funds": [] + } + }, + { + "execute_contract": { + "sender": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "contract": "neutron1frq2hzkjtatsupc6jtyaz67ytydk9nya437q92qg76ny3y8fcnjsgmftuq", + "msg": { + "register_vesting_accounts": { + "vesting_accounts": [ + { + "address": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "schedules": [ + { + "end_point": { + "amount": "1000", + "time": 1814821200 + }, + "start_point": { + "amount": "0", + "time": 1720213200 + } + } + ] + } + ] + } + }, + "funds": [ + { + "denom": "untrn", + "amount": "1000" + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/config/node_key.json b/e2e/docker/neutron/.neutrond/config/node_key.json new file mode 100644 index 000000000..1ffa858b7 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/config/node_key.json @@ -0,0 +1 @@ +{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"S9Z9yLr8iWzCBHSAvPYcltFnWHR8Xt9Dkb/Gaa5T8hF1vtvX/fjuodYrWGwVMQiK2QWqlYWw+W+UYkuis/8NoQ=="}} \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/config/priv_validator_key.json b/e2e/docker/neutron/.neutrond/config/priv_validator_key.json new file mode 100644 index 000000000..6dfb94f29 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/config/priv_validator_key.json @@ -0,0 +1,11 @@ +{ + "address": "31922B932AEF31249299EF9DC048308A299D1C5B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Rleln41aiOIm+8WpEbNLgBvSP3T2Mk4CX2ucIoACEMA=" + }, + "priv_key": { + "type": "tendermint/PrivKeyEd25519", + "value": "F76PwcALVMEZpWf58vwxN2HcsyJ6lDk46RfgubAX6MhGV6WfjVqI4ib7xakRs0uAG9I/dPYyTgJfa5wigAIQwA==" + } +} \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/data/priv_validator_state.json b/e2e/docker/neutron/.neutrond/data/priv_validator_state.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/e2e/docker/neutron/.neutrond/data/priv_validator_state.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/keyring-test/0eb77f44344111b5e695268e7a015fe80b1f8263.address b/e2e/docker/neutron/.neutrond/keyring-test/0eb77f44344111b5e695268e7a015fe80b1f8263.address new file mode 100644 index 000000000..952981127 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/keyring-test/0eb77f44344111b5e695268e7a015fe80b1f8263.address @@ -0,0 +1 @@ +eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjcmVhdGVkIjoiMjAyMy0xMi0xNCAxMzowNzozOS45MDk4NTkwODMgKzAwMDAgVVRDIG09KzEuNjEwODE5NjY4IiwiZW5jIjoiQTI1NkdDTSIsInAyYyI6ODE5MiwicDJzIjoib2Zpdm5GTVI3WEdmVVc2YSJ9.a-UbKSl6SxeEoBZ5H3iC9Rjieh_J9qGZrHqd6EJ36Lmde3t3QcIL0w.g1MRfi8bo_nWOAxi.v1lC3mPUMhCgR5nrHU66CrJ8T1vck4igM7oC5qOBzHm5AeTUG5BWITDaaPs-vCOkEg8QjnGAKKm5gKWzCnJnuumKfmbmrggd0nynQobbSa4dQIH5OrH0Lcboa0CiEh48ZvxMrxwqYDc3MFaNKvML2LpoQMujXWU0kTgFbgmSX1aa64xbnCKFhgoMcMpPvsgmzF5oSFzDsJFmAMjNaxy7ASY-Kle2GIISdeZPzHLp3vg8lIMbP40.G7Otmdm1JPGcNOd6D1mQmQ \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/keyring-test/c32e4c8aa8bd00d420d47b12dca01280abf94903.address b/e2e/docker/neutron/.neutrond/keyring-test/c32e4c8aa8bd00d420d47b12dca01280abf94903.address new file mode 100644 index 000000000..dad58818d --- /dev/null +++ b/e2e/docker/neutron/.neutrond/keyring-test/c32e4c8aa8bd00d420d47b12dca01280abf94903.address @@ -0,0 +1 @@ +eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjcmVhdGVkIjoiMjAyMy0xMi0xNCAxMzowNzoyNy42MTk4MDg2NzUgKzAwMDAgVVRDIG09KzQuMzcwMjczMjk0IiwiZW5jIjoiQTI1NkdDTSIsInAyYyI6ODE5MiwicDJzIjoiRUs3M3gyajVSei11M3lnRyJ9.Q5q3GEm1u_-RDBqrQU6ljZm5P88mS7-yGuazIfJ7YQTXTgnjyRXxng.SCl9jQ7YWN-Mhz9h.3cBbApkN178duOq5tjEENdZaxZ-Mc03IJ8csqNRQnu_r6PlNWp9k7w_RwNfLfsaUbi7tZD9VVREy06J2zrucE9j8TynhhgOYoKstL2eXdSEZu60ShRNNzbl85_RD8yk5uM07tKpcxWkCayS558_Kk99e4K0AXOZMcQJIeDcYxV7AdAoWyxqBQhQTIYhzR_DDfgP9Rn106zCu7tVmTjxNMF6DPdd30AK3Dis03FvZjjQWiw.5_j4oBOsxRsqwvcCk9pB9Q \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/keyring-test/c33c2459116823746692817e57c525109798ca7b.address b/e2e/docker/neutron/.neutrond/keyring-test/c33c2459116823746692817e57c525109798ca7b.address new file mode 100644 index 000000000..ddd57e160 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/keyring-test/c33c2459116823746692817e57c525109798ca7b.address @@ -0,0 +1 @@ +eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjcmVhdGVkIjoiMjAyMy0xMi0xNCAxMzowNzo1MC45MDk0Mjk3MTMgKzAwMDAgVVRDIG09KzIuMDU4NDY2NTAyIiwiZW5jIjoiQTI1NkdDTSIsInAyYyI6ODE5MiwicDJzIjoieGZEV09tRVJmMHVrVk9ZciJ9.J0o5gxHuBDFFhvFsNwt59bjLFEiWA2jvwNSMwol4cCtrrGVfxeBOkA.pNXdaoad9vf-d-uo.IYaFiyiBmg93iUmuXM_oup5GJbrLQLdetnTyiJ514f1DiBkCmZFTnMsdOvkRAcBeUHr242QMegzHlY8EDiDJ6wUfvP7zpF9_o1KpdMjtq7R3xc-z4FPMWVo8Y3Ys_WSCBp4cHizEUDBshi_v5BQleJRWSXb731ydSgLamkxtXfJrsUKhBZHCpwTnuJsLM6J0PbSnELw6ftDBpF6bmBH19hLD9LfZ3CLP2yWvCAHUooo3xQ.R7anMvT17OyyxshIiKTPbA \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/keyring-test/hermes.info b/e2e/docker/neutron/.neutrond/keyring-test/hermes.info new file mode 100644 index 000000000..2937a5023 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/keyring-test/hermes.info @@ -0,0 +1 @@ +eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjcmVhdGVkIjoiMjAyMy0xMi0xNCAxMzowNzozOS44NzYwMzM3NSArMDAwMCBVVEMgbT0rMS41NzcwMDkwODUiLCJlbmMiOiJBMjU2R0NNIiwicDJjIjo4MTkyLCJwMnMiOiJpNmgyeHZGWW16QnJDQW1IIn0.ze_UlOfGRV7uPs7Wt-06IInTqXApXiiIfZcl7Qoa_NPDgRJz7Wbc3w.vuXiwq55wynBJQ5Y.qCq5PerT_w7-Tw3Un8mWd4Nqg3AnjUCTQpZuAti6yuGkj0moH4YQf8BIxtCFsdd1nBuCFba1rox_wlk54AqYtEWEGgAAoBy_vk2suAaofAXu0nZxLLNUZx1AA6blq-Q6bX2omKGi7vkBJWZeuKi1zMeoGmEYH19y0jkG4mtzb7I-Cn0VgVXVMMfjIv60wkQvt8rv2RqV6JQ8UuH0ldJSeW02jPLP1yPa78r8-Ok1Cc4jUqG3Nk96BmsDva8vOYhfTXrCRPbX9GjTVoLyGCTe1Tv22lTojfmgAJJz7i-W_C31YQy2j74pmfT3t1VTyoAJX6-0U9B9vc_wi_n3cRVtDIIv_GfGtJlIIgQIdAYoIloRj3CtW9-jpGFXkghM_UpYl9KdST43_hAbW8hEJ_ZOCH82BQdyClH-xKebMte72a1LxjCYGAVMy34oxfX1dsqUMA.zHSJk7IsTA7kKQ7AWlOiWA \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/keyring-test/user.info b/e2e/docker/neutron/.neutrond/keyring-test/user.info new file mode 100644 index 000000000..28df00dd2 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/keyring-test/user.info @@ -0,0 +1 @@ +eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjcmVhdGVkIjoiMjAyMy0xMi0xNCAxMzowNzo1MC44NzQ0NDU1MDUgKzAwMDAgVVRDIG09KzIuMDIzNDgyMTI3IiwiZW5jIjoiQTI1NkdDTSIsInAyYyI6ODE5MiwicDJzIjoiZ2VfSjEyREpPLUZIX1drOSJ9.JN3RQcckPJxSRv1vrAnrqPAp2jxGtRTxgii1zHesCIqDheQspUaT0A.MHotv-qRKfq-CNOG.ukSL6rXrImp8LtBPJUjNsRVlu-bRAij2PFzKhbJf4a_Y8w-R6x2iOdDW9jJwcUpJYnxSc3-qhxXkiwZnuk6o_AN3zKCGcwmCH9YzPjANMiu0HCwxma4UnveSjNbxlFaweM49EPzDy7moA-I0VwItnPWqBVzLcrMwoNYkpnEc9q8gzjxHFhPh7NEc7EtWldYyuC5E2EBep3UxxkcZvKmTvycWJ9NqiLDnOolhusiuAcK-yQK4JqTIMBHQIQudUKWib_jmns3zh8dIQ65HdhAX45MonErX16XQ_pEuLljLHiBwRD6DyEzegozmrDeT2dgmPrvkHUtCkQdKNjxWMuTeWP-Ei0FHuITkZYVocLfLWW0BbyW2X07UFm09nPxUYu9PDX5gn3lPA12XWfngj7oVDpDr9rwoDw7Lwcla6vH7vsw_kouRGv4DlKXMxg.Oh9ExSvBdGvz7o6hEOuTXQ \ No newline at end of file diff --git a/e2e/docker/neutron/.neutrond/keyring-test/val0.info b/e2e/docker/neutron/.neutrond/keyring-test/val0.info new file mode 100644 index 000000000..9df6b1e69 --- /dev/null +++ b/e2e/docker/neutron/.neutrond/keyring-test/val0.info @@ -0,0 +1 @@ +eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjcmVhdGVkIjoiMjAyMy0xMi0xNCAxMzowNzoyNy41ODQ4MjEyNTggKzAwMDAgVVRDIG09KzQuMzM1Mjg1OTYxIiwiZW5jIjoiQTI1NkdDTSIsInAyYyI6ODE5MiwicDJzIjoicXh5Y2RmRTN2VjdKb2k4bSJ9.qh8sokLRscdKaAEOEa3dhaxcG4qxJvYLv71l8C8y-PrzJgAxWJIUKw.UnEkYjUi1xEIu3yK.cE2vmgoDOs3kmU_JZWxumNG4aO7LLNew8-pVjQ4Ou21Pi9lezM4lUpBk-sGR56v_xcAjCGjvq0xM-f5j3MZw1p44lehG240-H4M7yxPGpOqR6Gp3fC13EESGFF1pUTh5U-vaCWJ4gVYdTHLTUgt0EJGIAVf6mfknBo6yFOx03Uex2h8OWIs6AHgJU9vU_d4KD4rfCg15rRUxM3XC2L6c_rDS6Iticn8yLHmttnSg3mhZ00u6TtTxbwiTKuqEGywkbO8rTvO5v_RgskrdKCah54_ci3Bs_tN1LoqCTK4R3S3CDyYEKa2Q9T2VGTWBWyEY21V5BR5kGzyXg_4e353O9EflISnvd0SzX_Sw-3wJzZ_ojDqKhUluJ5fRQMmaTj41K9M0d4y_c5VYaft_mbpP4x7zh9NR4Rr8ZVbxL8eVj3LRRTTwUdr6wkSgSg._umd3YoCvSZA-ccXQst6sg \ No newline at end of file diff --git a/e2e/docker/neutron/Dockerfile b/e2e/docker/neutron/Dockerfile new file mode 100644 index 000000000..b86503a2d --- /dev/null +++ b/e2e/docker/neutron/Dockerfile @@ -0,0 +1,47 @@ +FROM golang:1.20.0-alpine as builder + +RUN apk add --no-cache \ + ca-certificates \ + build-base \ + linux-headers \ + tar +ADD https://github.com/neutron-org/neutron/archive/refs/tags/v2.0.0.tar.gz neutron.tar.gz +RUN mkdir -p neutron && tar -xzf neutron.tar.gz -C neutron --strip-components 1 + +WORKDIR neutron + +RUN --mount=type=cache,target=/root/.cache/go-build \ + --mount=type=cache,target=/root/go/pkg/mod \ + go mod download + +# Cosmwasm - Download correct libwasmvm version +RUN WASMVM_VERSION=$(go list -m github.com/CosmWasm/wasmvm | cut -d ' ' -f 2) && \ + wget https://github.com/CosmWasm/wasmvm/releases/download/$WASMVM_VERSION/libwasmvm_muslc.$(uname -m).a \ + -O /lib/libwasmvm_muslc.a && \ + # verify checksum + wget https://github.com/CosmWasm/wasmvm/releases/download/$WASMVM_VERSION/checksums.txt -O /tmp/checksums.txt && \ + sha256sum /lib/libwasmvm_muslc.a | grep $(cat /tmp/checksums.txt | grep libwasmvm_muslc.$(uname -m) | cut -d ' ' -f 1) + +# Build neutrond binary +RUN --mount=type=cache,target=/root/.cache/go-build \ + --mount=type=cache,target=/root/go/pkg/mod \ + go build \ + -mod=readonly \ + -tags "netgo,ledger,muslc,skip_ccv_msg_filter" \ + -ldflags "-X github.com/cosmos/cosmos-sdk/version.Name="neutron" \ + -X github.com/cosmos/cosmos-sdk/version.AppName="neutrond" \ + -X github.com/cosmos/cosmos-sdk/version.BuildTags='netgo,ledger,muslc,skip_ccv_msg_filter' \ + -w -s -linkmode=external -extldflags '-Wl,-z,muldefs -static'" \ + -trimpath \ + -o /neutron/build/neutrond \ + ./cmd/neutrond + +FROM alpine:latest + +COPY --from=builder /neutron/build/neutrond /bin/neutrond +RUN apk add --no-cache bash jq vim +ADD .neutrond /root/.neutrond + +WORKDIR /neutron + +CMD ["neutrond", "version"] \ No newline at end of file diff --git a/e2e/docker/terra/.terra/config/app.toml b/e2e/docker/terra/.terra/config/app.toml new file mode 100644 index 000000000..8775a70d6 --- /dev/null +++ b/e2e/docker/terra/.terra/config/app.toml @@ -0,0 +1,278 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +############################################################################### +### Base Configuration ### +############################################################################### + +# The minimum gas prices a validator is willing to accept for processing a +# transaction. A transaction's fees must meet the minimum of any denomination +# specified in this config (e.g. 0.25token1;0.0001token2). +minimum-gas-prices = "0uluna" + +# default: the last 362880 states are kept, pruning at 10 block intervals +# nothing: all historic states will be saved, nothing will be deleted (i.e. archiving node) +# everything: 2 latest states will be kept; pruning at 10 block intervals. +# custom: allow pruning options to be manually specified through 'pruning-keep-recent', and 'pruning-interval' +pruning = "default" + +# These are applied if and only if the pruning strategy is custom. +pruning-keep-recent = "0" +pruning-interval = "0" + +# HaltHeight contains a non-zero block height at which a node will gracefully +# halt and shutdown that can be used to assist upgrades and testing. +# +# Note: Commitment of state will be attempted on the corresponding block. +halt-height = 0 + +# HaltTime contains a non-zero minimum block time (in Unix seconds) at which +# a node will gracefully halt and shutdown that can be used to assist upgrades +# and testing. +# +# Note: Commitment of state will be attempted on the corresponding block. +halt-time = 0 + +# MinRetainBlocks defines the minimum block height offset from the current +# block being committed, such that all blocks past this offset are pruned +# from Tendermint. It is used as part of the process of determining the +# ResponseCommit.RetainHeight value during ABCI Commit. A value of 0 indicates +# that no blocks should be pruned. +# +# This configuration value is only responsible for pruning Tendermint blocks. +# It has no bearing on application state pruning which is determined by the +# "pruning-*" configurations. +# +# Note: Tendermint block pruning is dependant on this parameter in conunction +# with the unbonding (safety threshold) period, state pruning and state sync +# snapshot parameters to determine the correct minimum value of +# ResponseCommit.RetainHeight. +min-retain-blocks = 0 + +# InterBlockCache enables inter-block caching. +inter-block-cache = true + +# IndexEvents defines the set of events in the form {eventType}.{attributeKey}, +# which informs Tendermint what to index. If empty, all events will be indexed. +# +# Example: +# ["message.sender", "message.recipient"] +index-events = [] + +# IavlCacheSize set the size of the iavl tree cache (in number of nodes). +iavl-cache-size = 781250 + +# IAVLDisableFastNode enables or disables the fast node feature of IAVL. +# Default is false. +iavl-disable-fastnode = false + +# IAVLLazyLoading enable/disable the lazy loading of iavl store. +# Default is false. +iavl-lazy-loading = false + +# AppDBBackend defines the database backend type to use for the application and snapshots DBs. +# An empty string indicates that a fallback will be used. +# The fallback is the db_backend value set in Tendermint's config.toml. +app-db-backend = "" + +############################################################################### +### Telemetry Configuration ### +############################################################################### + +[telemetry] + +# Prefixed with keys to separate services. +service-name = "" + +# Enabled enables the application telemetry functionality. When enabled, +# an in-memory sink is also enabled by default. Operators may also enabled +# other sinks such as Prometheus. +enabled = false + +# Enable prefixing gauge values with hostname. +enable-hostname = false + +# Enable adding hostname to labels. +enable-hostname-label = false + +# Enable adding service to labels. +enable-service-label = false + +# PrometheusRetentionTime, when positive, enables a Prometheus metrics sink. +prometheus-retention-time = 0 + +# GlobalLabels defines a global set of name/value label tuples applied to all +# metrics emitted using the wrapper functions defined in telemetry package. +# +# Example: +# [["chain_id", "cosmoshub-1"]] +global-labels = [ +] + +############################################################################### +### API Configuration ### +############################################################################### + +[api] + +# Enable defines if the API server should be enabled. +enable = true + +# Swagger defines if swagger documentation should automatically be registered. +swagger = true + +# Address defines the API server to listen on. +address = "tcp://0.0.0.0:1317" + +# MaxOpenConnections defines the number of maximum open connections. +max-open-connections = 1000 + +# RPCReadTimeout defines the Tendermint RPC read timeout (in seconds). +rpc-read-timeout = 10 + +# RPCWriteTimeout defines the Tendermint RPC write timeout (in seconds). +rpc-write-timeout = 0 + +# RPCMaxBodyBytes defines the Tendermint maximum request body (in bytes). +rpc-max-body-bytes = 1000000 + +# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk). +enabled-unsafe-cors = true + +############################################################################### +### Rosetta Configuration ### +############################################################################### + +[rosetta] + +# Enable defines if the Rosetta API server should be enabled. +enable = false + +# Address defines the Rosetta API server to listen on. +address = ":8080" + +# Network defines the name of the blockchain that will be returned by Rosetta. +blockchain = "app" + +# Network defines the name of the network that will be returned by Rosetta. +network = "network" + +# Retries defines the number of retries when connecting to the node before failing. +retries = 3 + +# Offline defines if Rosetta server should run in offline mode. +offline = false + +# EnableDefaultSuggestedFee defines if the server should suggest fee by default. +# If 'construction/medata' is called without gas limit and gas price, +# suggested fee based on gas-to-suggest and denom-to-suggest will be given. +enable-fee-suggestion = false + +# GasToSuggest defines gas limit when calculating the fee +gas-to-suggest = 200000 + +# DenomToSuggest defines the defult denom for fee suggestion. +# Price must be in minimum-gas-prices. +denom-to-suggest = "uluna" + +############################################################################### +### gRPC Configuration ### +############################################################################### + +[grpc] + +# Enable defines if the gRPC server should be enabled. +enable = true + +# Address defines the gRPC server address to bind to. +address = "0.0.0.0:9090" + +# MaxRecvMsgSize defines the max message size in bytes the server can receive. +# The default value is 10MB. +max-recv-msg-size = "10485760" + +# MaxSendMsgSize defines the max message size in bytes the server can send. +# The default value is math.MaxInt32. +max-send-msg-size = "2147483647" + +############################################################################### +### gRPC Web Configuration ### +############################################################################### + +[grpc-web] + +# GRPCWebEnable defines if the gRPC-web should be enabled. +# NOTE: gRPC must also be enabled, otherwise, this configuration is a no-op. +enable = true + +# Address defines the gRPC-web server address to bind to. +address = "localhost:9091" + +# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk). +enable-unsafe-cors = true + +############################################################################### +### State Sync Configuration ### +############################################################################### + +# State sync snapshots allow other nodes to rapidly join the network without replaying historical +# blocks, instead downloading and applying a snapshot of the application state at a given height. +[state-sync] + +# snapshot-interval specifies the block interval at which local state sync snapshots are +# taken (0 to disable). +snapshot-interval = 0 + +# snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all). +snapshot-keep-recent = 2 + +############################################################################### +### Store / State Streaming ### +############################################################################### + +[store] +streamers = [] + +[streamers] +[streamers.file] +keys = ["*", ] +write_dir = "" +prefix = "" + +# output-metadata specifies if output the metadata file which includes the abci request/responses +# during processing the block. +output-metadata = "true" + +# stop-node-on-error specifies if propagate the file streamer errors to consensus state machine. +stop-node-on-error = "true" + +# fsync specifies if call fsync after writing the files. +fsync = "false" + +############################################################################### +### Mempool ### +############################################################################### + +[mempool] +# Setting max-txs to 0 will allow for a unbounded amount of transactions in the mempool. +# Setting max_txs to negative 1 (-1) will disable transactions from being inserted into the mempool. +# Setting max_txs to a positive number (> 0) will limit the number of transactions in the mempool, by the specified amount. +# +# Note, this configuration only applies to SDK built-in app-side mempool +# implementations. +max-txs = "5000" + +[wasm] +# The maximum gas amount can be spent for contract query. +# The contract query will invoke contract execution vm, +# so we need to restrict the max usage to prevent DoS attack +contract-query-gas-limit = "3000000" + +# The maximum gas amount can be used in a tx simulation call. +contract-simulation-gas-limit= "50000000" + +# The flag to specify whether print contract logs or not +contract-debug-mode = "false" + +# The WASM VM memory cache size in MiB not bytes +contract-memory-cache-size = "2048" diff --git a/e2e/docker/terra/.terra/config/client.toml b/e2e/docker/terra/.terra/config/client.toml new file mode 100644 index 000000000..700248edb --- /dev/null +++ b/e2e/docker/terra/.terra/config/client.toml @@ -0,0 +1,17 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +############################################################################### +### Client Configuration ### +############################################################################### + +# The network chain ID +chain-id = "localterra-1" +# The keyring's backend, where the keys are stored (os|file|kwallet|pass|test|memory) +keyring-backend = "test" +# CLI output format (text|json) +output = "text" +# : to Tendermint RPC interface for this chain +node = "tcp://localhost:26657" +# Transaction broadcasting mode (sync|async) +broadcast-mode = "sync" diff --git a/e2e/docker/terra/.terra/config/config.toml b/e2e/docker/terra/.terra/config/config.toml new file mode 100644 index 000000000..b420cf7fc --- /dev/null +++ b/e2e/docker/terra/.terra/config/config.toml @@ -0,0 +1,471 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +# NOTE: Any path below can be absolute (e.g. "/var/myawesomeapp/data") or +# relative to the home directory (e.g. "data"). The home directory is +# "$HOME/.cometbft" by default, but could be changed via $CMTHOME env variable +# or --home cmd flag. + +####################################################################### +### Main Base Config Options ### +####################################################################### + +# TCP or UNIX socket address of the ABCI application, +# or the name of an ABCI application compiled in with the CometBFT binary +proxy_app = "tcp://127.0.0.1:26658" + +# A custom human readable name for this node +moniker = "tester" + +# If this node is many blocks behind the tip of the chain, BlockSync +# allows them to catchup quickly by downloading blocks in parallel +# and verifying their commits +# +# Deprecated: this key will be removed and BlockSync will be enabled +# unconditionally in the next major release. +block_sync = true + +# Database backend: goleveldb | cleveldb | boltdb | rocksdb | badgerdb +# * goleveldb (github.com/syndtr/goleveldb - most popular implementation) +# - pure go +# - stable +# * cleveldb (uses levigo wrapper) +# - fast +# - requires gcc +# - use cleveldb build tag (go build -tags cleveldb) +# * boltdb (uses etcd's fork of bolt - github.com/etcd-io/bbolt) +# - EXPERIMENTAL +# - may be faster is some use-cases (random reads - indexer) +# - use boltdb build tag (go build -tags boltdb) +# * rocksdb (uses github.com/tecbot/gorocksdb) +# - EXPERIMENTAL +# - requires gcc +# - use rocksdb build tag (go build -tags rocksdb) +# * badgerdb (uses github.com/dgraph-io/badger) +# - EXPERIMENTAL +# - use badgerdb build tag (go build -tags badgerdb) +db_backend = "goleveldb" + +# Database directory +db_dir = "data" + +# Output level for logging, including package level options +log_level = "info" + +# Output format: 'plain' (colored text) or 'json' +log_format = "plain" + +##### additional base config options ##### + +# Path to the JSON file containing the initial validator set and other meta data +genesis_file = "config/genesis.json" + +# Path to the JSON file containing the private key to use as a validator in the consensus protocol +priv_validator_key_file = "config/priv_validator_key.json" + +# Path to the JSON file containing the last sign state of a validator +priv_validator_state_file = "data/priv_validator_state.json" + +# TCP or UNIX socket address for CometBFT to listen on for +# connections from an external PrivValidator process +priv_validator_laddr = "" + +# Path to the JSON file containing the private key to use for node authentication in the p2p protocol +node_key_file = "config/node_key.json" + +# Mechanism to connect to the ABCI application: socket | grpc +abci = "socket" + +# If true, query the ABCI app on connecting to a new peer +# so the app can decide if we should keep the connection or not +filter_peers = false + + +####################################################################### +### Advanced Configuration Options ### +####################################################################### + +####################################################### +### RPC Server Configuration Options ### +####################################################### +[rpc] + +# TCP or UNIX socket address for the RPC server to listen on +laddr = "tcp://0.0.0.0:26657" + +# A list of origins a cross-domain request can be executed from +# Default value '[]' disables cors support +# Use '["*"]' to allow any origin +cors_allowed_origins = [] + +# A list of methods the client is allowed to use with cross-domain requests +cors_allowed_methods = ["HEAD", "GET", "POST", ] + +# A list of non simple headers the client is allowed to use with cross-domain requests +cors_allowed_headers = ["Origin", "Accept", "Content-Type", "X-Requested-With", "X-Server-Time", ] + +# TCP or UNIX socket address for the gRPC server to listen on +# NOTE: This server only supports /broadcast_tx_commit +grpc_laddr = "" + +# Maximum number of simultaneous connections. +# Does not include RPC (HTTP&WebSocket) connections. See max_open_connections +# If you want to accept a larger number than the default, make sure +# you increase your OS limits. +# 0 - unlimited. +# Should be < {ulimit -Sn} - {MaxNumInboundPeers} - {MaxNumOutboundPeers} - {N of wal, db and other open files} +# 1024 - 40 - 10 - 50 = 924 = ~900 +grpc_max_open_connections = 900 + +# Activate unsafe RPC commands like /dial_seeds and /unsafe_flush_mempool +unsafe = false + +# Maximum number of simultaneous connections (including WebSocket). +# Does not include gRPC connections. See grpc_max_open_connections +# If you want to accept a larger number than the default, make sure +# you increase your OS limits. +# 0 - unlimited. +# Should be < {ulimit -Sn} - {MaxNumInboundPeers} - {MaxNumOutboundPeers} - {N of wal, db and other open files} +# 1024 - 40 - 10 - 50 = 924 = ~900 +max_open_connections = 900 + +# Maximum number of unique clientIDs that can /subscribe +# If you're using /broadcast_tx_commit, set to the estimated maximum number +# of broadcast_tx_commit calls per block. +max_subscription_clients = 100 + +# Maximum number of unique queries a given client can /subscribe to +# If you're using GRPC (or Local RPC client) and /broadcast_tx_commit, set to +# the estimated # maximum number of broadcast_tx_commit calls per block. +max_subscriptions_per_client = 5 + +# Experimental parameter to specify the maximum number of events a node will +# buffer, per subscription, before returning an error and closing the +# subscription. Must be set to at least 100, but higher values will accommodate +# higher event throughput rates (and will use more memory). +experimental_subscription_buffer_size = 200 + +# Experimental parameter to specify the maximum number of RPC responses that +# can be buffered per WebSocket client. If clients cannot read from the +# WebSocket endpoint fast enough, they will be disconnected, so increasing this +# parameter may reduce the chances of them being disconnected (but will cause +# the node to use more memory). +# +# Must be at least the same as "experimental_subscription_buffer_size", +# otherwise connections could be dropped unnecessarily. This value should +# ideally be somewhat higher than "experimental_subscription_buffer_size" to +# accommodate non-subscription-related RPC responses. +experimental_websocket_write_buffer_size = 200 + +# If a WebSocket client cannot read fast enough, at present we may +# silently drop events instead of generating an error or disconnecting the +# client. +# +# Enabling this experimental parameter will cause the WebSocket connection to +# be closed instead if it cannot read fast enough, allowing for greater +# predictability in subscription behavior. +experimental_close_on_slow_client = false + +# How long to wait for a tx to be committed during /broadcast_tx_commit. +# WARNING: Using a value larger than 10s will result in increasing the +# global HTTP write timeout, which applies to all connections and endpoints. +# See https://github.com/tendermint/tendermint/issues/3435 +timeout_broadcast_tx_commit = "10s" + +# Maximum size of request body, in bytes +max_body_bytes = 1000000 + +# Maximum size of request header, in bytes +max_header_bytes = 1048576 + +# The path to a file containing certificate that is used to create the HTTPS server. +# Might be either absolute path or path related to CometBFT's config directory. +# If the certificate is signed by a certificate authority, +# the certFile should be the concatenation of the server's certificate, any intermediates, +# and the CA's certificate. +# NOTE: both tls_cert_file and tls_key_file must be present for CometBFT to create HTTPS server. +# Otherwise, HTTP server is run. +tls_cert_file = "" + +# The path to a file containing matching private key that is used to create the HTTPS server. +# Might be either absolute path or path related to CometBFT's config directory. +# NOTE: both tls-cert-file and tls-key-file must be present for CometBFT to create HTTPS server. +# Otherwise, HTTP server is run. +tls_key_file = "" + +# pprof listen address (https://golang.org/pkg/net/http/pprof) +pprof_laddr = "localhost:6060" + +####################################################### +### P2P Configuration Options ### +####################################################### +[p2p] + +# Address to listen for incoming connections +laddr = "tcp://0.0.0.0:26656" + +# Address to advertise to peers for them to dial +# If empty, will use the same port as the laddr, +# and will introspect on the listener or use UPnP +# to figure out the address. ip and port are required +# example: 159.89.10.97:26656 +external_address = "" + +# Comma separated list of seed nodes to connect to +seeds = "" + +# Comma separated list of nodes to keep persistent connections to +persistent_peers = "" + +# UPNP port forwarding +upnp = false + +# Path to address book +addr_book_file = "config/addrbook.json" + +# Set true for strict address routability rules +# Set false for private or local networks +addr_book_strict = false + +# Maximum number of inbound peers +max_num_inbound_peers = 40 + +# Maximum number of outbound peers to connect to, excluding persistent peers +max_num_outbound_peers = 10 + +# List of node IDs, to which a connection will be (re)established ignoring any existing limits +unconditional_peer_ids = "" + +# Maximum pause when redialing a persistent peer (if zero, exponential backoff is used) +persistent_peers_max_dial_period = "0s" + +# Time to wait before flushing messages out on the connection +flush_throttle_timeout = "100ms" + +# Maximum size of a message packet payload, in bytes +max_packet_msg_payload_size = 1024 + +# Rate at which packets can be sent, in bytes/second +send_rate = 5120000 + +# Rate at which packets can be received, in bytes/second +recv_rate = 5120000 + +# Set true to enable the peer-exchange reactor +pex = true + +# Seed mode, in which node constantly crawls the network and looks for +# peers. If another node asks it for addresses, it responds and disconnects. +# +# Does not work if the peer-exchange reactor is disabled. +seed_mode = false + +# Comma separated list of peer IDs to keep private (will not be gossiped to other peers) +private_peer_ids = "" + +# Toggle to disable guard against peers connecting from the same ip. +allow_duplicate_ip = false + +# Peer connection configuration. +handshake_timeout = "20s" +dial_timeout = "3s" + +####################################################### +### Mempool Configuration Option ### +####################################################### +[mempool] + +# Mempool version to use: +# 1) "v0" - (default) FIFO mempool. +# 2) "v1" - prioritized mempool (deprecated; will be removed in the next release). +version = "v0" + +recheck = true +broadcast = true +wal_dir = "" + +# Maximum number of transactions in the mempool +size = 5000 + +# Limit the total size of all txs in the mempool. +# This only accounts for raw transactions (e.g. given 1MB transactions and +# max_txs_bytes=5MB, mempool will only accept 5 transactions). +max_txs_bytes = 1073741824 + +# Size of the cache (used to filter transactions we saw earlier) in transactions +cache_size = 10000 + +# Do not remove invalid transactions from the cache (default: false) +# Set to true if it's not possible for any invalid transaction to become valid +# again in the future. +keep-invalid-txs-in-cache = false + +# Maximum size of a single transaction. +# NOTE: the max size of a tx transmitted over the network is {max_tx_bytes}. +max_tx_bytes = 1048576 + +# Maximum size of a batch of transactions to send to a peer +# Including space needed by encoding (one varint per transaction). +# XXX: Unused due to https://github.com/tendermint/tendermint/issues/5796 +max_batch_bytes = 0 + +# ttl-duration, if non-zero, defines the maximum amount of time a transaction +# can exist for in the mempool. +# +# Note, if ttl-num-blocks is also defined, a transaction will be removed if it +# has existed in the mempool at least ttl-num-blocks number of blocks or if it's +# insertion time into the mempool is beyond ttl-duration. +ttl-duration = "0s" + +# ttl-num-blocks, if non-zero, defines the maximum number of blocks a transaction +# can exist for in the mempool. +# +# Note, if ttl-duration is also defined, a transaction will be removed if it +# has existed in the mempool at least ttl-num-blocks number of blocks or if +# it's insertion time into the mempool is beyond ttl-duration. +ttl-num-blocks = 0 + +####################################################### +### State Sync Configuration Options ### +####################################################### +[statesync] +# State sync rapidly bootstraps a new node by discovering, fetching, and restoring a state machine +# snapshot from peers instead of fetching and replaying historical blocks. Requires some peers in +# the network to take and serve state machine snapshots. State sync is not attempted if the node +# has any local state (LastBlockHeight > 0). The node will have a truncated block history, +# starting from the height of the snapshot. +enable = false + +# RPC servers (comma-separated) for light client verification of the synced state machine and +# retrieval of state data for node bootstrapping. Also needs a trusted height and corresponding +# header hash obtained from a trusted source, and a period during which validators can be trusted. +# +# For Cosmos SDK-based chains, trust_period should usually be about 2/3 of the unbonding time (~2 +# weeks) during which they can be financially punished (slashed) for misbehavior. +rpc_servers = "" +trust_height = 0 +trust_hash = "" +trust_period = "168h0m0s" + +# Time to spend discovering snapshots before initiating a restore. +discovery_time = "15s" + +# Temporary directory for state sync snapshot chunks, defaults to the OS tempdir (typically /tmp). +# Will create a new, randomly named directory within, and remove it when done. +temp_dir = "" + +# The timeout duration before re-requesting a chunk, possibly from a different +# peer (default: 1 minute). +chunk_request_timeout = "10s" + +# The number of concurrent chunk fetchers to run (default: 1). +chunk_fetchers = "4" + +####################################################### +### Block Sync Configuration Options ### +####################################################### +[blocksync] + +# Block Sync version to use: +# +# In v0.37, v1 and v2 of the block sync protocols were deprecated. +# Please use v0 instead. +# +# 1) "v0" - the default block sync implementation +version = "v0" + +####################################################### +### Consensus Configuration Options ### +####################################################### +[consensus] + +wal_file = "data/cs.wal/wal" + +# How long we wait for a proposal block before prevoting nil +timeout_propose = "3s" +# How much timeout_propose increases with each round +timeout_propose_delta = "500ms" +# How long we wait after receiving +2/3 prevotes for “anything” (ie. not a single block or nil) +timeout_prevote = "1s" +# How much the timeout_prevote increases with each round +timeout_prevote_delta = "500ms" +# How long we wait after receiving +2/3 precommits for “anything” (ie. not a single block or nil) +timeout_precommit = "1s" +# How much the timeout_precommit increases with each round +timeout_precommit_delta = "500ms" +# How long we wait after committing a block, before starting on the new +# height (this gives us a chance to receive some more precommits, even +# though we already have +2/3). +timeout_commit = "500ms" + +# How many blocks to look back to check existence of the node's consensus votes before joining consensus +# When non-zero, the node will panic upon restart +# if the same consensus key was used to sign {double_sign_check_height} last blocks. +# So, validators should stop the state machine, wait for some blocks, and then restart the state machine to avoid panic. +double_sign_check_height = 0 + +# Make progress as soon as we have all the precommits (as if TimeoutCommit = 0) +skip_timeout_commit = false + +# EmptyBlocks mode and possible interval between empty blocks +create_empty_blocks = true +create_empty_blocks_interval = "0s" + +# Reactor sleep duration parameters +peer_gossip_sleep_duration = "100ms" +peer_query_maj23_sleep_duration = "2s" + +####################################################### +### Storage Configuration Options ### +####################################################### +[storage] + +# Set to true to discard ABCI responses from the state store, which can save a +# considerable amount of disk space. Set to false to ensure ABCI responses are +# persisted. ABCI responses are required for /block_results RPC queries, and to +# reindex events in the command-line tool. +discard_abci_responses = false + +####################################################### +### Transaction Indexer Configuration Options ### +####################################################### +[tx_index] + +# What indexer to use for transactions +# +# The application will set which txs to index. In some cases a node operator will be able +# to decide which txs to index based on configuration set in the application. +# +# Options: +# 1) "null" +# 2) "kv" (default) - the simplest possible indexer, backed by key-value storage (defaults to levelDB; see DBBackend). +# - When "kv" is chosen "tx.height" and "tx.hash" will always be indexed. +# 3) "psql" - the indexer services backed by PostgreSQL. +# When "kv" or "psql" is chosen "tx.height" and "tx.hash" will always be indexed. +indexer = "kv" + +# The PostgreSQL connection configuration, the connection format: +# postgresql://:@:/? +psql-conn = "" + +####################################################### +### Instrumentation Configuration Options ### +####################################################### +[instrumentation] + +# When true, Prometheus metrics are served under /metrics on +# PrometheusListenAddr. +# Check out the documentation for the list of available metrics. +prometheus = false + +# Address to listen for Prometheus collector(s) connections +prometheus_listen_addr = ":26660" + +# Maximum number of simultaneous connections. +# If you want to accept a larger number than the default, make sure +# you increase your OS limits. +# 0 - unlimited. +max_open_connections = 3 + +# Instrumentation namespace +namespace = "cometbft" diff --git a/e2e/docker/terra/.terra/config/genesis.json b/e2e/docker/terra/.terra/config/genesis.json new file mode 100644 index 000000000..323e3e93a --- /dev/null +++ b/e2e/docker/terra/.terra/config/genesis.json @@ -0,0 +1,444 @@ +{ + "genesis_time": "2023-12-14T12:34:03.886680428Z", + "chain_id": "localterra-1", + "initial_height": "1", + "consensus_params": { + "block": { + "max_bytes": "22020096", + "max_gas": "-1" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": { + "app": "0" + } + }, + "app_hash": "", + "app_state": { + "06-solomachine": null, + "07-tendermint": null, + "alliance": { + "params": { + "reward_delay_time": "604800s", + "take_rate_claim_interval": "300s", + "last_take_rate_claim_time": "0001-01-01T00:00:00Z" + }, + "assets": [], + "validator_infos": [], + "reward_weight_change_snaphots": [], + "delegations": [], + "redelegations": [], + "undelegations": [] + }, + "auth": { + "params": { + "max_memo_characters": "256", + "tx_sig_limit": "7", + "tx_size_cost_per_byte": "10", + "sig_verify_cost_ed25519": "590", + "sig_verify_cost_secp256k1": "1000" + }, + "accounts": [ + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "terra1hy4cls6q07t55jwq69sp8447cv7eap060pqwvm", + "pub_key": null, + "account_number": "0", + "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "terra1kqnpp5cglqnujaksjzzc276h6k00rrzecgml0t", + "pub_key": null, + "account_number": "1", + "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "terra1w2q0x6ja2psagp52s2gkza3vfarz2kg2zahhd9", + "pub_key": null, + "account_number": "2", + "sequence": "0" + } + ] + }, + "authz": { + "authorization": [] + }, + "bank": { + "params": { + "send_enabled": [], + "default_send_enabled": true + }, + "balances": [ + { + "address": "terra1w2q0x6ja2psagp52s2gkza3vfarz2kg2zahhd9", + "coins": [ + { + "denom": "uluna", + "amount": "100000000000000000" + } + ] + }, + { + "address": "terra1kqnpp5cglqnujaksjzzc276h6k00rrzecgml0t", + "coins": [ + { + "denom": "uluna", + "amount": "100000000000000000" + } + ] + }, + { + "address": "terra1hy4cls6q07t55jwq69sp8447cv7eap060pqwvm", + "coins": [ + { + "denom": "uluna", + "amount": "100000000000000000" + } + ] + } + ], + "supply": [ + { + "denom": "uluna", + "amount": "300000000000000000" + } + ], + "denom_metadata": [], + "send_enabled": [] + }, + "builder": { + "params": { + "max_bundle_size": 2, + "escrow_account_address": "32sHF2qbF8xMmvwle9QEcy59Cbc=", + "reserve_fee": { + "denom": "uluna", + "amount": "1" + }, + "min_bid_increment": { + "denom": "uluna", + "amount": "1" + }, + "front_running_protection": true, + "proposer_fee": "0.000000000000000000" + } + }, + "capability": { + "index": "1", + "owners": [] + }, + "consensus": null, + "crisis": { + "constant_fee": { + "denom": "uluna", + "amount": "1000" + } + }, + "distribution": { + "params": { + "community_tax": "0.020000000000000000", + "base_proposer_reward": "0.000000000000000000", + "bonus_proposer_reward": "0.000000000000000000", + "withdraw_addr_enabled": true + }, + "fee_pool": { + "community_pool": [] + }, + "delegator_withdraw_infos": [], + "previous_proposer": "", + "outstanding_rewards": [], + "validator_accumulated_commissions": [], + "validator_historical_rewards": [], + "validator_current_rewards": [], + "delegator_starting_infos": [], + "validator_slash_events": [] + }, + "evidence": { + "evidence": [] + }, + "feegrant": { + "allowances": [] + }, + "feeibc": { + "identified_fees": [], + "fee_enabled_channels": [], + "registered_payees": [], + "registered_counterparty_payees": [], + "forward_relayers": [] + }, + "feeshare": { + "params": { + "enable_fee_share": true, + "developer_shares": "0.500000000000000000", + "allowed_denoms": [] + }, + "fee_share": [] + }, + "genutil": { + "gen_txs": [ + { + "body": { + "messages": [ + { + "@type": "/cosmos.staking.v1beta1.MsgCreateValidator", + "description": { + "moniker": "tester", + "identity": "", + "website": "", + "security_contact": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "terra1hy4cls6q07t55jwq69sp8447cv7eap060pqwvm", + "validator_address": "terravaloper1hy4cls6q07t55jwq69sp8447cv7eap060wvnug", + "pubkey": { + "@type": "/cosmos.crypto.ed25519.PubKey", + "key": "TvrXzT/0VusyU22lo9XfeHr9hqBYl78yHuYHp8s/OBs=" + }, + "value": { + "denom": "uluna", + "amount": "274882756736" + } + } + ], + "memo": "df42bbdad47ecebf55ee6edc03cbe6a9d7b81145@172.17.0.2:26656", + "timeout_height": "0", + "extension_options": [], + "non_critical_extension_options": [] + }, + "auth_info": { + "signer_infos": [ + { + "public_key": { + "@type": "/cosmos.crypto.secp256k1.PubKey", + "key": "AkBKo5NZmHPetRGUYgxuH1Kxj7tWFnaa+IsPcz+EHhOD" + }, + "mode_info": { + "single": { + "mode": "SIGN_MODE_DIRECT" + } + }, + "sequence": "0" + } + ], + "fee": { + "amount": [], + "gas_limit": "200000", + "payer": "", + "granter": "" + }, + "tip": null + }, + "signatures": [ + "iwcecyJR1ttKD5xh6UEEMGIWhdoBa8/CO5gZOWxXZ4V4IwbsCDvhmLF6AUYsILVjDrVzj6LiPeSS/8W2HCXrCw==" + ] + } + ] + }, + "gov": { + "starting_proposal_id": "1", + "deposits": [], + "votes": [], + "proposals": [], + "deposit_params": null, + "voting_params": null, + "tally_params": null, + "params": { + "min_deposit": [ + { + "denom": "uluna", + "amount": "10000000" + } + ], + "max_deposit_period": "172800s", + "voting_period": "172800s", + "quorum": "0.334000000000000000", + "threshold": "0.500000000000000000", + "veto_threshold": "0.334000000000000000", + "min_initial_deposit_ratio": "0.000000000000000000", + "burn_vote_quorum": false, + "burn_proposal_deposit_prevote": false, + "burn_vote_veto": true + } + }, + "ibc": { + "client_genesis": { + "clients": [], + "clients_consensus": [], + "clients_metadata": [], + "params": { + "allowed_clients": [ + "06-solomachine", + "07-tendermint", + "09-localhost" + ] + }, + "create_localhost": false, + "next_client_sequence": "0" + }, + "connection_genesis": { + "connections": [], + "client_connection_paths": [], + "next_connection_sequence": "0", + "params": { + "max_expected_time_per_block": "30000000000" + } + }, + "channel_genesis": { + "channels": [], + "acknowledgements": [], + "commitments": [], + "receipts": [], + "send_sequences": [], + "recv_sequences": [], + "ack_sequences": [], + "next_channel_sequence": "0" + } + }, + "ibchooks": {}, + "interchainaccounts": { + "controller_genesis_state": { + "active_channels": [], + "interchain_accounts": [], + "ports": [], + "params": { + "controller_enabled": true + } + }, + "host_genesis_state": { + "active_channels": [], + "interchain_accounts": [], + "port": "icahost", + "params": { + "host_enabled": true, + "allow_messages": [ + "/cosmos.authz.v1beta1.MsgExec", + "/cosmos.authz.v1beta1.MsgGrant", + "/cosmos.authz.v1beta1.MsgRevoke", + "/cosmos.bank.v1beta1.MsgSend", + "/cosmos.bank.v1beta1.MsgMultiSend", + "/cosmos.distribution.v1beta1.MsgSetWithdrawAddress", + "/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission", + "/cosmos.distribution.v1beta1.MsgFundCommunityPool", + "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward", + "/cosmos.feegrant.v1beta1.MsgGrantAllowance", + "/cosmos.feegrant.v1beta1.MsgRevokeAllowance", + "/cosmos.gov.v1beta1.MsgVoteWeighted", + "/cosmos.gov.v1beta1.MsgSubmitProposal", + "/cosmos.gov.v1beta1.MsgDeposit", + "/cosmos.gov.v1beta1.MsgVote", + "/cosmos.staking.v1beta1.MsgEditValidator", + "/cosmos.staking.v1beta1.MsgDelegate", + "/cosmos.staking.v1beta1.MsgUndelegate", + "/cosmos.staking.v1beta1.MsgBeginRedelegate", + "/cosmos.staking.v1beta1.MsgCreateValidator", + "/cosmos.vesting.v1beta1.MsgCreateVestingAccount", + "/ibc.applications.transfer.v1.MsgTransfer", + "/cosmwasm.wasm.v1.MsgStoreCode", + "/cosmwasm.wasm.v1.MsgInstantiateContract", + "/cosmwasm.wasm.v1.MsgExecuteContract", + "/cosmwasm.wasm.v1.MsgMigrateContract" + ] + } + } + }, + "mint": { + "minter": { + "inflation": "0.130000000000000000", + "annual_provisions": "0.000000000000000000" + }, + "params": { + "mint_denom": "uluna", + "inflation_rate_change": "0.130000000000000000", + "inflation_max": "0.200000000000000000", + "inflation_min": "0.070000000000000000", + "goal_bonded": "0.670000000000000000", + "blocks_per_year": "6311520" + } + }, + "packetfowardmiddleware": { + "params": { + "fee_percentage": "0.000000000000000000" + }, + "in_flight_packets": {} + }, + "params": null, + "slashing": { + "params": { + "signed_blocks_window": "100", + "min_signed_per_window": "0.500000000000000000", + "downtime_jail_duration": "600s", + "slash_fraction_double_sign": "0.050000000000000000", + "slash_fraction_downtime": "0.010000000000000000" + }, + "signing_infos": [], + "missed_blocks": [] + }, + "staking": { + "params": { + "unbonding_time": "1814400s", + "max_validators": 100, + "max_entries": 7, + "historical_entries": 10000, + "bond_denom": "uluna", + "min_commission_rate": "0.000000000000000000" + }, + "last_total_power": "0", + "last_validator_powers": [], + "validators": [], + "delegations": [], + "unbonding_delegations": [], + "redelegations": [], + "exported": false + }, + "tokenfactory": { + "params": { + "denom_creation_fee": [ + { + "denom": "uluna", + "amount": "10000000" + } + ], + "denom_creation_gas_consume": "1000000" + }, + "factory_denoms": [] + }, + "transfer": { + "port_id": "transfer", + "denom_traces": [], + "params": { + "send_enabled": true, + "receive_enabled": true + }, + "total_escrowed": [] + }, + "upgrade": {}, + "vesting": {}, + "wasm": { + "params": { + "code_upload_access": { + "permission": "Everybody", + "addresses": [] + }, + "instantiate_default_permission": "Everybody" + }, + "codes": [], + "contracts": [], + "sequences": [] + } + } +} \ No newline at end of file diff --git a/e2e/docker/terra/.terra/config/gentx/gentx-df42bbdad47ecebf55ee6edc03cbe6a9d7b81145.json b/e2e/docker/terra/.terra/config/gentx/gentx-df42bbdad47ecebf55ee6edc03cbe6a9d7b81145.json new file mode 100644 index 000000000..e1007c3c8 --- /dev/null +++ b/e2e/docker/terra/.terra/config/gentx/gentx-df42bbdad47ecebf55ee6edc03cbe6a9d7b81145.json @@ -0,0 +1 @@ +{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgCreateValidator","description":{"moniker":"tester","identity":"","website":"","security_contact":"","details":""},"commission":{"rate":"0.100000000000000000","max_rate":"0.200000000000000000","max_change_rate":"0.010000000000000000"},"min_self_delegation":"1","delegator_address":"terra1hy4cls6q07t55jwq69sp8447cv7eap060pqwvm","validator_address":"terravaloper1hy4cls6q07t55jwq69sp8447cv7eap060wvnug","pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"TvrXzT/0VusyU22lo9XfeHr9hqBYl78yHuYHp8s/OBs="},"value":{"denom":"uluna","amount":"274882756736"}}],"memo":"df42bbdad47ecebf55ee6edc03cbe6a9d7b81145@172.17.0.2:26656","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[{"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AkBKo5NZmHPetRGUYgxuH1Kxj7tWFnaa+IsPcz+EHhOD"},"mode_info":{"single":{"mode":"SIGN_MODE_DIRECT"}},"sequence":"0"}],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""},"tip":null},"signatures":["iwcecyJR1ttKD5xh6UEEMGIWhdoBa8/CO5gZOWxXZ4V4IwbsCDvhmLF6AUYsILVjDrVzj6LiPeSS/8W2HCXrCw=="]} diff --git a/e2e/docker/terra/.terra/config/node_key.json b/e2e/docker/terra/.terra/config/node_key.json new file mode 100644 index 000000000..9b84b84ac --- /dev/null +++ b/e2e/docker/terra/.terra/config/node_key.json @@ -0,0 +1 @@ +{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"dPAOOwntdilsY440phB1RZB1YEJYVdK8goDXuOLXUISbWimTP9xlUKhMCUg6WuCEvw45TrpQfFS0XRfArw3Trg=="}} \ No newline at end of file diff --git a/e2e/docker/terra/.terra/config/priv_validator_key.json b/e2e/docker/terra/.terra/config/priv_validator_key.json new file mode 100644 index 000000000..43ac0edca --- /dev/null +++ b/e2e/docker/terra/.terra/config/priv_validator_key.json @@ -0,0 +1,11 @@ +{ + "address": "5DF87C393527842D29C6B3AA927FDC1B8EBFA272", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "TvrXzT/0VusyU22lo9XfeHr9hqBYl78yHuYHp8s/OBs=" + }, + "priv_key": { + "type": "tendermint/PrivKeyEd25519", + "value": "MOTOM8gW7/nQ2Lj6s7mPSZNNJtwK75PYeJwsNiWWFj1O+tfNP/RW6zJTbaWj1d94ev2GoFiXvzIe5genyz84Gw==" + } +} \ No newline at end of file diff --git a/e2e/docker/terra/.terra/data/priv_validator_state.json b/e2e/docker/terra/.terra/data/priv_validator_state.json new file mode 100644 index 000000000..48f3b67e3 --- /dev/null +++ b/e2e/docker/terra/.terra/data/priv_validator_state.json @@ -0,0 +1,5 @@ +{ + "height": "0", + "round": 0, + "step": 0 +} \ No newline at end of file diff --git a/e2e/docker/terra/.terra/keyring-test/b92b8fc3407f974a49c0d16013d6bec33d9e85fa.address b/e2e/docker/terra/.terra/keyring-test/b92b8fc3407f974a49c0d16013d6bec33d9e85fa.address new file mode 100644 index 000000000..fc26c58af --- /dev/null +++ b/e2e/docker/terra/.terra/keyring-test/b92b8fc3407f974a49c0d16013d6bec33d9e85fa.address @@ -0,0 +1 @@ +eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjcmVhdGVkIjoiMjAyMy0xMi0xNCAxMjozNDoyOS42OTQ0MzAzNDMgKzAwMDAgVVRDIG09KzguMDU3MDM5Mjk3IiwiZW5jIjoiQTI1NkdDTSIsInAyYyI6ODE5MiwicDJzIjoiRVAzLXkzN2xPaldJQXZiUCJ9.6JQDVz_3idJqZy-cP86iREpQ064iMTQLEM2Uccqn5lQ1UgGn-GUlxA.yUcGLetBjhYuxo6Z.5uLFgbbbElDINxm6pWB5KcMCmM8GAE57KT00wz5EwSuI6ZVId1NkLVrRv1aC5AEt9N-dmtFohin7AVnwOhkpktrlE8zWc0wW_lgtQZG5g3hOKz1CxXaigEkcxZOFwYuiUej3_RuqZKSH-j41IqarlMj8-jTW6npryW-rEjQkclNCALRQNB0btuHaZ1K6sK_bPtUyj_96Qxz3rHHzcmmHzZt8oGg4KSWoFOeiDNbqSaIMQA.gyaA5lLNjoNhdhvrEYhZBg \ No newline at end of file diff --git a/e2e/docker/terra/.terra/keyring-test/val0.info b/e2e/docker/terra/.terra/keyring-test/val0.info new file mode 100644 index 000000000..45afc8f9d --- /dev/null +++ b/e2e/docker/terra/.terra/keyring-test/val0.info @@ -0,0 +1 @@ +eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjcmVhdGVkIjoiMjAyMy0xMi0xNCAxMjozNDoyOS42ODk5OTQ2MzUgKzAwMDAgVVRDIG09KzguMDUyNjAzNjMwIiwiZW5jIjoiQTI1NkdDTSIsInAyYyI6ODE5MiwicDJzIjoiVHRwUElpUHNkNUNrYUpoMyJ9._h0PPDOC-r_ybch0bmQLmh28tKINkjdi0P4sJ87rMDGwcZJC5ILAfA.4r01DZLYyVG38Ne4.m3WT2tNHYFqHktC47OdloqukyJl1ULjDUAMEcWm36GZVUzd659g9zsiw5yTrWxmC8u2411REII9noz695bF73hztrExYIFjBa3wEOwXvpPalH9PQ4VbVU_agQabcOf_4upHvYzhAQzVWEVjTl_DNklzVf1HPes-1kjSNo0209BZsCfC71ZvtFYwrbn5H6d2yeofGSOXaQwANqgsU42zmnjDvxCA7L7FVnp2W965dOgrxbYi5-7Q4PfxyQb9Gxefd4IsZ7eaJGHgLTiJ3TLCwGRfbCsDUhcJKyohTfTgzM9EbTD738pbZL5AJnFOmInAGpxR2-zRCt7AVndyccSSpJYVtyQ_anb8kZ2ilqF4Ao7vJZG3k0_UCpJ77ZSGTWoFnzIh8rGf6KFOEua-ho7HYG_FLNJlb9Fnpr4TfpAl8pOT404ZO2PG72ryFsA.WJdgXRaSM-trAY9uvJwiiQ \ No newline at end of file diff --git a/e2e/docker/terra/Dockerfile b/e2e/docker/terra/Dockerfile new file mode 100644 index 000000000..ffc005708 --- /dev/null +++ b/e2e/docker/terra/Dockerfile @@ -0,0 +1,20 @@ +FROM alpine:latest + +WORKDIR /terra + +ADD https://github.com/terra-money/core/releases/download/v2.6.1/terra_2.6.1_Linux_arm64.tar.gz /tmp/terra.tar.gz +RUN tar -xvf /tmp/terra.tar.gz -C /usr/local/bin + +RUN apk add --no-cache bash jq vim +ADD .terra /root/.terra + +# rest server +EXPOSE 1317 +# grpc +EXPOSE 9090 +# tendermint p2p +EXPOSE 26656 +# tendermint rpc +EXPOSE 26657 + +CMD ["/usr/local/bin/terrad", "version"] \ No newline at end of file diff --git a/e2e/keys.json b/e2e/keys.json new file mode 100644 index 000000000..88d0ae05a --- /dev/null +++ b/e2e/keys.json @@ -0,0 +1,20 @@ +[ + { + "name": "validator", + "terra": "terra1hy4cls6q07t55jwq69sp8447cv7eap060pqwvm", + "neutron": "neutron1cvhyez4gh5qdggx50vfdegqjsz4ljjgryjnnne", + "seed": "fun flush soup pottery sphere together strategy gloom box goat tourist exhaust supply juice behind rookie pizza path tail budget portion lend clip trial" + }, + { + "name": "relayer", + "terra": "terra1kqnpp5cglqnujaksjzzc276h6k00rrzecgml0t", + "neutron": "neutron1p6mh73p5gygmte54y6885q2laq93lqnreltjl8", + "seed": "fiction flip cheese liquid bachelor census smoke seek wrong cloud crisp sugar staff creek sorry physical hole angle boost prepare bridge arrest dizzy beef" + }, + { + "name": "user", + "terra": "terra1w2q0x6ja2psagp52s2gkza3vfarz2kg2zahhd9", + "neutron": "neutron1cv7zgkg3dq3hge5js9l903f9zzte3jnm5wvnhy", + "seed": "journey proud segment gorilla pencil common phone cloth undo walk civil add gate six measure often addict turn because wet bachelor mechanic ozone early" + } +] \ No newline at end of file diff --git a/e2e/package-lock.json b/e2e/package-lock.json new file mode 100644 index 000000000..74f532932 --- /dev/null +++ b/e2e/package-lock.json @@ -0,0 +1,3623 @@ +{ + "name": "e2e-astroport-tests", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "e2e-astroport-tests", + "version": "1.0.0", + "devDependencies": { + "@terra-money/feather.js": "^2.0.0-beta.15", + "@types/chai": "^4.3.11", + "@types/mocha": "^10.0.6", + "chai": "^4.3.10", + "crypto": "^1.0.1", + "mocha": "^10.2.0", + "ts-mocha": "^10.0.0", + "ts-node": "^10.9.2", + "typescript": "^5.2.2" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@improbable-eng/grpc-web": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", + "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", + "dev": true, + "dependencies": { + "browser-headers": "^0.4.1" + }, + "peerDependencies": { + "google-protobuf": "^3.14.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "dev": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true + }, + "node_modules/@terra-money/feather.js": { + "version": "2.0.0-beta.15", + "resolved": "https://registry.npmjs.org/@terra-money/feather.js/-/feather.js-2.0.0-beta.15.tgz", + "integrity": "sha512-EDCGUAbIRedk8233gwshE1DF8nRtV7SUF390vDsAwozuRGHSXtZzDzB8SkdHlF8tDOz3ZEj/99aCuUVy2k5MiQ==", + "dev": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7", + "@terra-money/terra.proto": "^4.0.4", + "assert": "^2.0.0", + "axios": "^0.27.2", + "bech32": "^2.0.0", + "bip32": "^2.0.6", + "bip39": "^3.0.3", + "bufferutil": "^4.0.3", + "crypto-browserify": "^3.12.0", + "decimal.js": "^10.2.1", + "ethers": "^5.7.2", + "jscrypto": "^1.0.1", + "keccak256": "^1.0.6", + "long": "^5.2.3", + "readable-stream": "^3.6.0", + "secp256k1": "^4.0.2", + "tmp": "^0.2.1", + "utf-8-validate": "^5.0.5", + "ws": "^7.5.9" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@terra-money/legacy.proto": { + "name": "@terra-money/terra.proto", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-0.1.7.tgz", + "integrity": "sha512-NXD7f6pQCulvo6+mv6MAPzhOkUzRjgYVuHZE/apih+lVnPG5hDBU0rRYnOGGofwvKT5/jQoOENnFn/gioWWnyQ==", + "dev": true, + "dependencies": { + "google-protobuf": "^3.17.3", + "long": "^4.0.0", + "protobufjs": "~6.11.2" + } + }, + "node_modules/@terra-money/legacy.proto/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "node_modules/@terra-money/terra.proto": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-4.0.4.tgz", + "integrity": "sha512-Xju3ObFvMWXCDpeOXwa+WpmcbvUFOgJ4shSSfbgocnX5q3250aTaIAaycxkArUtg1QoqV4B5qoboRAplMHYDZw==", + "dev": true, + "dependencies": { + "@improbable-eng/grpc-web": "^0.14.1", + "browser-headers": "^0.4.1", + "google-protobuf": "^3.17.3", + "long": "^4.0.0", + "protobufjs": "~6.11.2" + } + }, + "node_modules/@terra-money/terra.proto/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "optional": true + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "dev": true + }, + "node_modules/@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bip32": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", + "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", + "dev": true, + "dependencies": { + "@types/node": "10.12.18", + "bs58check": "^2.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "tiny-secp256k1": "^1.1.3", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bip39": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", + "dev": true, + "dependencies": { + "@noble/hashes": "^1.2.0" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/browser-headers/-/browser-headers-0.4.1.tgz", + "integrity": "sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==", + "dev": true + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.4", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", + "dev": true + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/google-protobuf": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", + "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==", + "dev": true + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jscrypto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/jscrypto/-/jscrypto-1.0.3.tgz", + "integrity": "sha512-lryZl0flhodv4SZHOqyb1bx5sKcJxj0VBo0Kzb4QMAg3L021IC9uGpl0RCZa+9KJwlRGSK2C80ITcwbe19OKLQ==", + "dev": true, + "bin": { + "jscrypto": "bin/cli.js" + } + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "optional": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/keccak256": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", + "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.0", + "buffer": "^6.0.3", + "keccak": "^3.0.2" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "dev": true + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-gyp-build": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", + "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/protobufjs/node_modules/@types/node": { + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/protobufjs/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tiny-secp256k1": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz", + "integrity": "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.3.0", + "bn.js": "^4.11.8", + "create-hmac": "^1.1.7", + "elliptic": "^6.4.0", + "nan": "^2.13.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/tiny-secp256k1/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", + "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", + "dev": true, + "dependencies": { + "ts-node": "7.0.1" + }, + "bin": { + "ts-mocha": "bin/ts-mocha" + }, + "engines": { + "node": ">= 6.X.X" + }, + "optionalDependencies": { + "tsconfig-paths": "^3.5.0" + }, + "peerDependencies": { + "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X" + } + }, + "node_modules/ts-mocha/node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ts-mocha/node_modules/ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-mocha/node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "optional": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/typeforce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", + "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wif": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", + "integrity": "sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==", + "dev": true, + "dependencies": { + "bs58check": "<3.0.0" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/e2e/package.json b/e2e/package.json new file mode 100644 index 000000000..95429102b --- /dev/null +++ b/e2e/package.json @@ -0,0 +1,20 @@ +{ + "name": "e2e-astroport-tests", + "version": "1.0.0", + "scripts": { + "bootstrap": "docker compose -f docker/docker-compose.yml up -d", + "init": "ts-node ./src/init.ts", + "test": "ts-mocha --timeout 5000 'tests/**/*.test.ts'" + }, + "devDependencies": { + "@terra-money/feather.js": "^2.0.0-beta.15", + "@types/chai": "^4.3.11", + "@types/mocha": "^10.0.6", + "chai": "^4.3.10", + "crypto": "^1.0.1", + "mocha": "^10.2.0", + "ts-mocha": "^10.0.0", + "ts-node": "^10.9.2", + "typescript": "^5.2.2" + } +} diff --git a/e2e/run.sh b/e2e/run.sh new file mode 100755 index 000000000..1d78695eb --- /dev/null +++ b/e2e/run.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env sh + +set -e + +npm install +npm run bootstrap + +while :; do + if grpcurl --plaintext -connect-timeout 1 localhost:9090 list >/dev/null && grpcurl --plaintext -connect-timeout 1 localhost:39090 list >/dev/null; then + break + fi + echo "Waiting for gRPC services to start..." +done + +npm run init +npm run test \ No newline at end of file diff --git a/e2e/src/init.ts b/e2e/src/init.ts new file mode 100644 index 000000000..ecc5fbb31 --- /dev/null +++ b/e2e/src/init.ts @@ -0,0 +1,161 @@ +import { + CONTRACTS, + execShellCommand, + get_signers, + initContract, + LCD, load_config, + save_config, + simulateAndBroadcast, + storeCode, + TestConfig +} from "./lib"; +import {IdentifiedChannel} from "@terra-money/feather.js/dist/core/ibc/core"; +import {createHash} from 'crypto' +import {Coin, Coins, MsgCreateDenom, MsgMint, MsgSend} from "@terra-money/feather.js"; + +const ASTRO_CODE_PATH = `${CONTRACTS}/cw20_astro.wasm` +const ASTRO_CONVERTER_PATH = `${CONTRACTS}/astro_token_converter.wasm` +const ASTRO_CONVERTER_NEUTRON_PATH = `${CONTRACTS}/astro_token_converter_neutron.wasm` +const CW20_ICS20_CODE_PATH = `${CONTRACTS}/cw20_ics20.wasm` + +const {terra, neutron} = get_signers() + +async function init_contracts(): Promise { + let code_id = await storeCode(LCD, terra.signer, "localterra-1", ASTRO_CODE_PATH) + const cw20_init_msg = { + name: "ASTRO Token", + symbol: "ASTRO", + decimals: 6, + initial_balances: [ + { + address: terra.address, + amount: "1100000000000000", + }, + ], + } + const astro_token = await initContract(LCD, terra.signer, "localterra-1", code_id, cw20_init_msg) + + code_id = await storeCode(LCD, terra.signer, "localterra-1", CW20_ICS20_CODE_PATH) + const cw20_ics20_init_msg = { + default_timeout: 300, + gov_contract: terra.address, + allowlist: [ + {contract: astro_token}, + ] + } + const cw20_ics20 = await initContract(LCD, terra.signer, "localterra-1", code_id, cw20_ics20_init_msg) + + return { + astro_token: astro_token, + cw20_ics20: cw20_ics20, + } +} + +async function setup_channel(a_port: string, b_port: string) { + const hermes_cmd = `docker exec hermes hermes create channel --a-chain localterra-1 --new-client-connection --b-chain localneutron-1 --a-port ${a_port} --b-port ${b_port} --chan-version ics20-1 --yes` + console.log(hermes_cmd) + await execShellCommand(hermes_cmd) + const queryCb = ({channels,}: Record) => { + let chans = (channels as IdentifiedChannel[]) + .sort((a, b) => { + const [a_chan_num, b_chan_num] = [ + parseInt(a.channel_id.match(/\d+$/g)![0]), + parseInt(b.channel_id.match(/\d+$/g)![0]), + ] + if (a_chan_num < b_chan_num) { + return 1 + } else if (a_chan_num > b_chan_num) { + return -1 + } else { + return 0 + } + }) + return chans[0].channel_id + } + + const terra_channel = await LCD.ibc.channels("localterra-1") + .then(queryCb) + const neutron_channel = await LCD.ibc.channels("localneutron-1") + .then(queryCb) + + return [terra_channel, neutron_channel] +} + +const init_tf_astro = async (config: TestConfig) => { + const create_msg = new MsgCreateDenom( + neutron.address, + "uastro" + ) + const token_denom = `factory/${neutron.address}/uastro` + const mint_msg = new MsgMint( + neutron.address, + new Coin(token_denom, 1_100_000_000_000000) + ) + await simulateAndBroadcast(LCD, neutron.signer, neutron.chain_id, [create_msg, mint_msg]) + + // Setup transfer <> transfer IBC channel + const [terra_channel, neutron_channel] = await setup_channel("transfer", "transfer") + config.new_terra_channel = terra_channel + config.new_neutron_channel = neutron_channel + + config.astro_tf_denom = token_denom + config.astro_tf_ibc_denom = determine_ibc_denom(config.new_terra_channel!, token_denom) + + console.log(`New ASTRO IBC denom on Terra for path transfer/${config.new_neutron_channel}/${token_denom}\n${config.astro_tf_ibc_denom}`) + + return config +} + +const init_astro_converters = async (config: TestConfig) => { + const terra_converter_code_id = await storeCode(LCD, terra.signer, terra.chain_id, ASTRO_CONVERTER_PATH) + const terra_converter_init_msg = { + old_astro_asset_info: {token: {contract_addr: config.astro_token}}, + new_astro_denom: config.astro_tf_ibc_denom!, + } + config.terra_converter = await initContract(LCD, terra.signer, terra.chain_id, terra_converter_code_id, terra_converter_init_msg) + + const neutron_converter_code_id = await storeCode(LCD, neutron.signer, neutron.chain_id, ASTRO_CONVERTER_NEUTRON_PATH) + const neutron_converter_init_msg = { + old_astro_asset_info: {native_token: {denom: config.astro_ibc_denom}}, + new_astro_denom: config.astro_tf_denom!, + outpost_burn_params: { + terra_burn_addr: config.terra_converter, + old_astro_transfer_channel: config.neutron_channel + } + } + config.neutron_converter = await initContract(LCD, neutron.signer, neutron.chain_id, neutron_converter_code_id, neutron_converter_init_msg) + + return config +} + +const determine_ibc_denom = (channel: string, orig_denom: string) => { + return "ibc/" + createHash('sha256') + .update(`transfer/${channel}/${orig_denom}`) + .digest("hex") + .toUpperCase() +} + +const init = async function () { + let config = await init_contracts() + const [terra_channel, neutron_channel] = await setup_channel(`wasm.${config.cw20_ics20}`, "transfer") + + const denom_hash = determine_ibc_denom(neutron_channel, `cw20:${config.astro_token}`) + + console.log(`ASTRO denom for path transfer/${neutron_channel}/cw20:${config.astro_token}\n${denom_hash}`) + + config = { + ...config, + terra_channel: terra_channel, + neutron_channel: neutron_channel, + astro_ibc_denom: denom_hash + } + save_config(config) + + config = await init_tf_astro(config) + save_config(config) + + config = await init_astro_converters(config) + save_config(config) +} + +init().catch(console.error); \ No newline at end of file diff --git a/e2e/src/lib.ts b/e2e/src/lib.ts new file mode 100644 index 000000000..7c6aa0f57 --- /dev/null +++ b/e2e/src/lib.ts @@ -0,0 +1,276 @@ +import { + Coin, + Fee, Int, + LCDClient, + MnemonicKey, + Msg, + MsgExecuteContract, + MsgInstantiateContract, + MsgMigrateContract, + MsgStoreCode, + MsgTransfer +} from "@terra-money/feather.js"; +import {LCDClientConfig} from "@terra-money/feather.js/dist/client/lcd/LCDClient"; +import {Key} from "@terra-money/feather.js/dist/key"; +import {Wallet} from "@terra-money/feather.js/dist/client/lcd/Wallet"; +import {readFileSync, writeFileSync} from 'fs'; +import {exec} from "child_process"; + +export const CONTRACTS = "./contracts" + + +const CHAINS: Record = { + ["localneutron-1"]: { + lcd: "http://localhost:31317", + chainID: "localneutron-1", + gasPrices: "0.01untrn", + gasAdjustment: 2, + prefix: "neutron" + }, + ["localterra-1"]: { + lcd: "http://localhost:1317", + chainID: "localterra-1", + gasPrices: "0.015uluna", + gasAdjustment: 2, + prefix: "terra" + } +} + +export type TestConfig = { + astro_token: string, // on terra + cw20_ics20: string, + terra_channel?: string, + neutron_channel?: string + new_terra_channel?: string, + new_neutron_channel?: string + astro_ibc_denom?: string // on neutron + astro_tf_denom?: string // on neutron + astro_tf_ibc_denom?: string // on terra + terra_converter?: string + neutron_converter?: string +} + +export const save_config = (config: TestConfig) => { + writeFileSync("config.json", JSON.stringify(config, null, 2)) +} + +export const load_config = (): TestConfig => { + return JSON.parse(readFileSync("config.json").toString()) +} + +interface LCD_Ext extends LCDClient { + wallet(key: Key): Wallet; + + simulate(sender: string, chainId: string, messages: Msg[]): Promise; +} + +const simulate = async function (lcd: LCDClient, sender: string, chainId: string, messages: Msg[]): Promise { + const accountInfo = await lcd.auth.accountInfo(sender); + + return await lcd.tx.estimateFee( + [{ + sequenceNumber: accountInfo.getSequenceNumber(), + publicKey: accountInfo.getPublicKey(), + }], + { + msgs: messages, + chainID: chainId + } + ); +}; + +const extendLCD = (lcd: LCDClient): LCD_Ext => { + return { + ...lcd, + simulate: async (sender: string, chainId: string, messages: Msg[]) => { + return simulate(lcd, sender, chainId, messages); + }, + wallet: lcd.wallet, + }; +}; + +export const LCD = extendLCD(new LCDClient(CHAINS)) + +export const USER_MNEMONIC = "journey proud segment gorilla pencil common phone cloth undo walk civil add gate six measure often addict turn because wet bachelor mechanic ozone early" + +export type Signer = { signer: Wallet, address: string, chain_id: string } + +export const get_signers = (): Record => { + const terra_signer = LCD.wallet(new MnemonicKey({mnemonic: USER_MNEMONIC, coinType: 330})); + const terra_signer_addr = terra_signer.key.accAddress("terra") + + const neutron_signer = LCD.wallet(new MnemonicKey({mnemonic: USER_MNEMONIC, coinType: 118})); + const neutron_signer_addr = neutron_signer.key.accAddress("neutron") + + return { + terra: { + signer: terra_signer, + address: terra_signer_addr, + chain_id: "localterra-1" + }, + neutron: { + signer: neutron_signer, + address: neutron_signer_addr, + chain_id: "localneutron-1" + } + } +} + +export const simulateAndBroadcast = async function (lcd: LCD_Ext, signer: Wallet, chainId: string, messages: Msg[]) { + const chain_prefix = lcd.config[chainId].prefix + const sender = signer.key.accAddress(chain_prefix) + + await lcd.simulate(sender, chainId, messages) + .then(console.log) + + return await signer.createAndSignTx({msgs: messages, chainID: chainId}) + .then((tx) => lcd.tx.broadcastSync(tx, chainId)) + .then(async (result) => { + while (true) { + // query txhash + const data = await lcd.tx.txInfo(result.txhash, chainId).catch(() => { + }); + // if hash is onchain return data + if (data) return data; + // else wait 250ms and then repeat + await new Promise((resolve) => setTimeout(resolve, 250)); + } + }) +} + +export const storeCode = async function (lcd: LCD_Ext, signer: Wallet, chainId: string, wasm_path: string) { + const chain_prefix = lcd.config[chainId].prefix + const sender = signer.key.accAddress(chain_prefix) + const data = readFileSync(wasm_path, 'base64'); + return simulateAndBroadcast(lcd, signer, chainId, [new MsgStoreCode(sender, data)]) + .then((txResp) => parseInt(txResp!.logs![0].eventsByType.store_code.code_id[0])) +} + +export const initContract = async function (lcd: LCD_Ext, signer: Wallet, chainId: string, code_id: number, init_msg: any) { + const chain_prefix = lcd.config[chainId].prefix + const sender = signer.key.accAddress(chain_prefix) + const initMsg = new MsgInstantiateContract( + sender, + sender, + code_id, + init_msg, + [], + "label" + ); + + return await simulateAndBroadcast(lcd, signer, chainId, [initMsg]) + .then((resp: any) => resp.logs[0].eventsByType.instantiate._contract_address[0] as string) +} + +export const execContract = async function (lcd: LCD_Ext, signer: Wallet, chainId: string, contract: string, msg: any, funds?: Coin[]) { + const chain_prefix = lcd.config[chainId].prefix + const sender = signer.key.accAddress(chain_prefix) + const execMsg = new MsgExecuteContract( + sender, + contract, + msg, + funds + ); + + return await simulateAndBroadcast(lcd, signer, chainId, [execMsg]) +} + +export const migrateContract = async function ( + lcd: LCD_Ext, + signer: Wallet, + chainId: string, + contract: string, + code_id: number, + msg: any +) { + const chain_prefix = lcd.config[chainId].prefix + const sender = signer.key.accAddress(chain_prefix) + const initMsg = new MsgMigrateContract( + sender, + contract, + code_id, + msg, + ); + + return await simulateAndBroadcast(lcd, signer, chainId, [initMsg]) +} + +export const toBase64 = (object: any) => { + return Buffer.from(JSON.stringify(object)).toString('base64'); +} + +export const execShellCommand = (cmd: string) => { + return new Promise((resolve, _) => { + exec(cmd, (error, stdout, stderr) => { + if (error) { + console.error(error); + throw error; + } + resolve(stdout ? stdout : stderr); + }); + }); +} + +export const ibcTransferOldAstro = async ( + signer: Signer, + config: TestConfig, + amount: number, + receiver: string, + timeout_sec?: number +) => { + switch (signer.chain_id) { + case "localterra-1": + const inner_msg = { + send: { + contract: config.cw20_ics20, + amount: amount.toString(), + msg: toBase64({ + channel: config.terra_channel, + remote_address: receiver, + }) + } + } + const terra_msg = new MsgExecuteContract(signer.address, config.astro_token, inner_msg) + return simulateAndBroadcast(LCD, signer.signer, signer.chain_id, [terra_msg]) + case "localneutron-1": + return ibcIcs20Transfer(signer, new Coin(config.astro_ibc_denom!, amount), config.neutron_channel!, receiver, timeout_sec) + default: + throw new Error(`Unsupported chainId ${signer.chain_id}`) + } +} + +export const ibcIcs20Transfer = async ( + signer: Signer, + coin: Coin, + channel: string, + receiver: string, + timeout_sec?: number +) => { + const msg = new MsgTransfer( + "transfer", + channel, + coin, + signer.address, + receiver, + undefined, + Date.now() * 1000000 + 1000000000 * (timeout_sec || 10), + undefined, + ) + return simulateAndBroadcast(LCD, signer.signer, signer.chain_id, [msg]) +} + +export const getCw20Balance = async (config: TestConfig, address: string) => { + const msg = { + balance: { + address: address + } + } + return LCD.wasm.contractQuery(config.astro_token, msg).then((resp: any) => { + return parseInt(resp.balance) + }) +} + +export const getNativeBalance = async (address: string, denom: string) => { + return LCD.bank.balance(address) + .then(([coins, ]) => coins.get(denom)?.amount.toNumber() || 0); +} \ No newline at end of file diff --git a/e2e/tests/tf_astro_flow.test.ts b/e2e/tests/tf_astro_flow.test.ts new file mode 100644 index 000000000..964820b7a --- /dev/null +++ b/e2e/tests/tf_astro_flow.test.ts @@ -0,0 +1,206 @@ +import { + CONTRACTS, + execContract, + get_signers, + getCw20Balance, + getNativeBalance, + ibcIcs20Transfer, + ibcTransferOldAstro, + LCD, + load_config, + migrateContract, + Signer, + simulateAndBroadcast, + storeCode, + TestConfig, + toBase64 +} from "../src/lib"; +import {assert, expect} from "chai"; +import {it} from "mocha"; +import {Coin, MsgSend} from "@terra-money/feather.js"; + +const {terra, neutron} = get_signers() +const config = load_config() +const NEW_CW20_ICS20_CODE_PATH = `${CONTRACTS}/new_cw20_ics20.wasm` + +const wait = async (promise: Promise, timeout?: number): Promise => { + return (async () => { + await promise + return new Promise(resolve => setTimeout(resolve, timeout || 1000)) + })() +} + +const migrate_cw20_ics20 = async (config: TestConfig) => { + let new_code_id = await storeCode(LCD, terra.signer, terra.chain_id, NEW_CW20_ICS20_CODE_PATH) + return migrateContract(LCD, terra.signer, terra.chain_id, config.cw20_ics20, new_code_id, {}) +} + +const convert_astro = async (config: TestConfig, signer: Signer, amount: number) => { + switch (signer.chain_id) { + case "localterra-1": + const inner_msg = { + send: { + contract: config.terra_converter!, + amount: amount.toString(), + msg: toBase64({}) + } + } + return execContract(LCD, signer.signer, signer.chain_id, config.astro_token, inner_msg) + case "localneutron-1": + return execContract( + LCD, signer.signer, signer.chain_id, + config.neutron_converter!, + {convert: {}}, + [new Coin(config.astro_ibc_denom!, amount)] + ) + default: + throw new Error(`Unsupported chainId ${signer.chain_id}`) + } +} + +describe('Disable ASTRO transfers from Terra', () => { + before(async function () { + this.timeout(5000) + + await wait(ibcTransferOldAstro(terra, config, 1_000_000_000000, neutron.address)) + .catch(() => { + }) + await migrate_cw20_ics20(config) + .catch(() => { + }) + }); + + it('should still be able to bridge ASTRO back to Terra', async function () { + this.timeout(5000) + + const balBefore = await getCw20Balance(config, terra.address) + await wait(ibcTransferOldAstro(neutron, config, 100, terra.address), 2000) + const balAfter = await getCw20Balance(config, terra.address) + expect(balAfter - balBefore).eq(100) + + // cw20 ASTRO transfers from Terra disabled + await ibcTransferOldAstro(terra, config, 100, neutron.address) + .then(() => assert.fail("Should have failed")) + .catch(() => { + }) + }); +}); + +describe('Convert old <> new ASTRO on Terra', () => { + before(async function () { + this.timeout(5000) + + // Top up converter contracts + await wait(ibcIcs20Transfer( + neutron, + new Coin(config.astro_tf_denom!, 1_000_000_000000), + config.new_neutron_channel!, + config.terra_converter! + )).catch(() => { + }) + + const msg = new MsgSend(neutron.address, config.neutron_converter!, [new Coin(config.astro_tf_denom!, 1_000_000_000000)]) + await simulateAndBroadcast(LCD, neutron.signer, neutron.chain_id, [msg]) + }); + + it('Terra: should be able to convert old ASTRO to new ASTRO', async function () { + const nativeBalBefore = await getNativeBalance(terra.address, config.astro_tf_ibc_denom!); + const cw20BalBefore = await getCw20Balance(config, terra.address) + + await convert_astro(config, terra, 100) + + const nativeBalAfter = await getNativeBalance(terra.address, config.astro_tf_ibc_denom!); + const cw20BalAfter = await getCw20Balance(config, terra.address) + + expect(nativeBalAfter - nativeBalBefore).eq(100) + expect(cw20BalAfter - cw20BalBefore).eq(-100) + }); + + it('Neutron: should be able to convert old ASTRO to new ASTRO', async function () { + const newAstroBalBefore = await getNativeBalance(neutron.address, config.astro_tf_denom!); + const oldBalBefore = await getNativeBalance(neutron.address, config.astro_ibc_denom!) + + await convert_astro(config, neutron, 100) + + const newAstroBalAfter = await getNativeBalance(neutron.address, config.astro_tf_denom!); + const oldBalAfter = await getNativeBalance(neutron.address, config.astro_ibc_denom!) + + expect(newAstroBalAfter - newAstroBalBefore).eq(100) + expect(oldBalAfter - oldBalBefore).eq(-100) + }); +}) + +describe('Transfer old ASTRO from Neutron', () => { + before(async function () { + this.timeout(5000) + + await convert_astro(config, neutron, 100_000) + + // Top up converter contract NTRN balance to be able to dispatch IBC messages + const msg = new MsgSend(neutron.address, config.neutron_converter!, [new Coin("untrn", 1_000000)]) + await simulateAndBroadcast(LCD, neutron.signer, neutron.chain_id, [msg]) + }); + + it('should be able to IBC old ASTRO to Terra and burn', async function () { + this.timeout(5000) + + const oldBalBefore = await getNativeBalance(config.neutron_converter!, config.astro_ibc_denom!) + expect(oldBalBefore).gt(0) + + await wait(execContract( + LCD, neutron.signer, neutron.chain_id, + config.neutron_converter!, + {transfer_for_burning: {}}, + )) + + const oldBalAfter = await getNativeBalance(config.neutron_converter!, config.astro_ibc_denom!) + expect(oldBalAfter).eq(0) + }); +}) + +describe('Burn old cw20 ASTRO on Terra', () => { + before(async function () { + this.timeout(10000) + + await convert_astro(config, neutron, 100_000) + + // Top up converter contract NTRN balance to be able to dispatch IBC messages + const msg = new MsgSend(neutron.address, config.neutron_converter!, [new Coin("untrn", 1_000000)]) + await simulateAndBroadcast(LCD, neutron.signer, neutron.chain_id, [msg]) + + // Transfer old ASTRO to Terra + await wait(execContract( + LCD, neutron.signer, neutron.chain_id, + config.neutron_converter!, + {transfer_for_burning: {}}, + ), 3000) + }); + + it('should be able to burn CW20 Astro on Terra', async function () { + const oldBalBefore = await getCw20Balance(config, config.terra_converter!) + expect(oldBalBefore).gt(0) + + const totalSupplyBefore = await LCD.wasm.contractQuery(config.astro_token, {token_info: {}}) + .then((resp: any) => { + return parseInt(resp.total_supply) + }) + + await execContract( + LCD, terra.signer, terra.chain_id, + config.terra_converter!, + {burn: {}}, + ) + + const oldBalAfter = await getCw20Balance(config, config.terra_converter!) + expect(oldBalAfter).eq(0) + + // Assert total supply was reduced + const totalSupplyAfter = await LCD.wasm.contractQuery(config.astro_token, {token_info: {}}) + .then((resp: any) => { + return parseInt(resp.total_supply) + }) + + // Whole terra converter balance was burned + expect(totalSupplyBefore - totalSupplyAfter).eq(oldBalBefore) + }); +}) \ No newline at end of file diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json new file mode 100644 index 000000000..b68d64a45 --- /dev/null +++ b/e2e/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + }, + "include": [ + "src/**/*.ts", "tests/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file From 93e20f44cffca82372c3e5f6c41481bbce3285a2 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 4 Jan 2024 14:50:56 +0400 Subject: [PATCH 21/84] exclude e2e config --- .gitignore | 1 + e2e/config.json | 13 ------------- 2 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 e2e/config.json diff --git a/.gitignore b/.gitignore index 8225278a0..1ca0e3bf2 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ target/ #/scripts/package-lock.json /artifacts/ /contracts/**/schema/ +/e2e/config.json diff --git a/e2e/config.json b/e2e/config.json deleted file mode 100644 index 348197a99..000000000 --- a/e2e/config.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "astro_token": "terra14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9ssrc8au", - "cw20_ics20": "terra1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrquka9l6", - "terra_channel": "channel-0", - "neutron_channel": "channel-0", - "astro_ibc_denom": "ibc/6D3429933F47206818AA820561427CC415EC5A36C6B197A236EE95F871BAFDBE", - "new_terra_channel": "channel-1", - "new_neutron_channel": "channel-1", - "astro_tf_denom": "factory/neutron1cv7zgkg3dq3hge5js9l903f9zzte3jnm5wvnhy/uastro", - "astro_tf_ibc_denom": "ibc/30FF601E790C8A18B8FC3351953E673E3823D824543EC08DC43E3FADEF608537", - "terra_converter": "terra17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgsydrqk7", - "neutron_converter": "neutron1nxshmmwrvxa2cp80nwvf03t8u5kvl2ttr8m8f43vamudsqrdvs8qqvfwpj" -} \ No newline at end of file From f03a1605786e9cb27fc55ab443576137dd658e49 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 4 Jan 2024 14:57:45 +0400 Subject: [PATCH 22/84] address clippy issues --- Cargo.lock | 142 ++++++++++++------ contracts/pair/src/contract.rs | 2 +- contracts/pair_concentrated/src/contract.rs | 6 +- contracts/pair_concentrated/src/migration.rs | 8 +- .../periphery/liquidity_manager/src/utils.rs | 2 +- 5 files changed, 105 insertions(+), 55 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8660c4a6d..dde635313 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -42,7 +42,7 @@ dependencies = [ name = "astro-token-converter" version = "0.1.0" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -57,13 +57,28 @@ name = "astro-token-converter-neutron" version = "0.1.0" dependencies = [ "astro-token-converter", - "astroport", + "astroport 3.9.0", "cosmwasm-std", "cw-utils 1.0.1", "cw2 1.1.0", "neutron-sdk", ] +[[package]] +name = "astroport" +version = "2.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d102b618016b3c1f1ebb5750617a73dbd294a3c941e54b12deabc931d771bc6e" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw-utils 0.15.1", + "cw20 0.15.1", + "itertools 0.10.5", + "uint 0.9.5", +] + [[package]] name = "astroport" version = "3.9.0" @@ -106,12 +121,28 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-factory" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ecf768e2d3153bebfbe0c502ffa4199a52598e9b6e89fca54339615b2de77eb" +dependencies = [ + "astroport 2.9.5", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw2 0.15.1", + "itertools 0.10.5", + "protobuf 2.28.0", + "thiserror", +] + [[package]] name = "astroport-factory" version = "1.6.0" dependencies = [ "anyhow", - "astroport", + "astroport 3.9.0", "astroport-pair", "astroport-token", "cosmwasm-schema", @@ -131,7 +162,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", @@ -147,8 +178,8 @@ name = "astroport-generator" version = "2.3.2" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.9.0", + "astroport-factory 1.6.0", "astroport-governance 1.4.0", "astroport-mocks", "astroport-native-coin-registry", @@ -182,7 +213,7 @@ dependencies = [ name = "astroport-generator-proxy-template" version = "0.0.0" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -196,7 +227,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -208,7 +239,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -220,7 +251,7 @@ name = "astroport-governance" version = "1.4.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance#259fbc78d33f1b76e4213054babc95a1d9202f5c" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -233,8 +264,8 @@ name = "astroport-incentives" version = "1.0.0" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.9.0", + "astroport-factory 1.6.0", "astroport-native-coin-registry", "astroport-pair", "astroport-pair-stable", @@ -257,8 +288,8 @@ name = "astroport-liquidity-manager" version = "1.0.3" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.9.0", + "astroport-factory 1.6.0", "astroport-generator", "astroport-native-coin-registry", "astroport-pair", @@ -282,9 +313,9 @@ name = "astroport-maker" version = "1.3.1" dependencies = [ "astro-satellite-package", - "astroport", + "astroport 3.9.0", "astroport-escrow-fee-distributor", - "astroport-factory", + "astroport-factory 1.6.0", "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "astroport-native-coin-registry", "astroport-pair", @@ -304,12 +335,12 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.9.0", + "astroport-factory 1.6.0", "astroport-generator", "astroport-native-coin-registry", "astroport-pair", - "astroport-pair-concentrated", + "astroport-pair-concentrated 2.3.0", "astroport-pair-stable", "astroport-shared-multisig", "astroport-staking", @@ -332,7 +363,7 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -346,7 +377,7 @@ dependencies = [ name = "astroport-native-coin-wrapper" version = "0.1.0" dependencies = [ - "astroport", + "astroport 3.9.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -376,8 +407,8 @@ name = "astroport-oracle" version = "2.1.1" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.9.0", + "astroport-factory 1.6.0", "astroport-native-coin-registry", "astroport-pair", "astroport-pair-stable", @@ -396,8 +427,8 @@ dependencies = [ name = "astroport-pair" version = "1.5.0" dependencies = [ - "astroport", - "astroport-factory", + "astroport 3.9.0", + "astroport-factory 1.6.0", "astroport-mocks", "astroport-token", "cosmwasm-schema", @@ -417,8 +448,8 @@ dependencies = [ name = "astroport-pair-astro-xastro" version = "1.0.3" dependencies = [ - "astroport", - "astroport-factory", + "astroport 3.9.0", + "astroport-factory 1.6.0", "astroport-pair-bonded", "astroport-staking", "astroport-token", @@ -436,7 +467,7 @@ dependencies = [ name = "astroport-pair-bonded" version = "1.0.1" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw2 0.15.1", @@ -448,7 +479,7 @@ dependencies = [ name = "astroport-pair-bonded-template" version = "1.0.0" dependencies = [ - "astroport", + "astroport 3.9.0", "astroport-pair-bonded", "cosmwasm-schema", "cosmwasm-std", @@ -458,16 +489,35 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-pair-concentrated" +version = "1.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a25c6ccbeccd25d36706621db915b67ca5d919e192fb06d7dd35cf69152d84" +dependencies = [ + "astroport 2.9.5", + "astroport-factory 1.5.1", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw-utils 0.15.1", + "cw2 0.15.1", + "cw20 0.15.1", + "itertools 0.10.5", + "thiserror", +] + [[package]] name = "astroport-pair-concentrated" version = "2.3.0" dependencies = [ "anyhow", - "astroport", + "astroport 3.9.0", "astroport-circular-buffer", - "astroport-factory", + "astroport-factory 1.6.0", "astroport-mocks", "astroport-native-coin-registry", + "astroport-pair-concentrated 1.2.13", "astroport-pcl-common", "astroport-token", "cosmwasm-schema", @@ -487,9 +537,9 @@ name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", - "astroport", + "astroport 3.9.0", "astroport-circular-buffer", - "astroport-factory", + "astroport-factory 1.6.0", "astroport-mocks", "astroport-native-coin-registry", "astroport-token", @@ -512,8 +562,8 @@ name = "astroport-pcl-common" version = "1.1.0" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.9.0", + "astroport-factory 1.6.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -527,8 +577,8 @@ name = "astroport-router" version = "1.2.0" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.9.0", + "astroport-factory 1.6.0", "astroport-pair", "astroport-token", "cosmwasm-schema", @@ -545,11 +595,11 @@ dependencies = [ name = "astroport-shared-multisig" version = "1.0.0" dependencies = [ - "astroport", + "astroport 3.9.0", "astroport-generator", "astroport-mocks", "astroport-pair", - "astroport-pair-concentrated", + "astroport-pair-concentrated 2.3.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -565,7 +615,7 @@ dependencies = [ name = "astroport-staking" version = "1.1.0" dependencies = [ - "astroport", + "astroport 3.9.0", "astroport-token", "astroport-xastro-token", "cosmwasm-schema", @@ -583,7 +633,7 @@ dependencies = [ name = "astroport-token" version = "1.1.1" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -596,7 +646,7 @@ dependencies = [ name = "astroport-vesting" version = "1.3.2" dependencies = [ - "astroport", + "astroport 3.9.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -612,7 +662,7 @@ dependencies = [ name = "astroport-whitelist" version = "1.0.1" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", @@ -624,7 +674,7 @@ dependencies = [ name = "astroport-xastro-outpost-token" version = "1.0.0" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -639,7 +689,7 @@ dependencies = [ name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -1594,7 +1644,7 @@ version = "0.0.0" source = "git+https://github.com/astroport-fi/astro-generator-proxy-contracts?branch=main#e573a8f8542b99015cac910f024a5f20fd793f3c" dependencies = [ "ap-valkyrie", - "astroport", + "astroport 3.9.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", diff --git a/contracts/pair/src/contract.rs b/contracts/pair/src/contract.rs index 81a314a30..15b358b94 100644 --- a/contracts/pair/src/contract.rs +++ b/contracts/pair/src/contract.rs @@ -62,7 +62,7 @@ pub fn instantiate( let mut track_asset_balances = false; if let Some(init_params) = msg.init_params { - let params: XYKPoolParams = from_json(&init_params)?; + let params: XYKPoolParams = from_json(init_params)?; track_asset_balances = params.track_asset_balances.unwrap_or_default(); } diff --git a/contracts/pair_concentrated/src/contract.rs b/contracts/pair_concentrated/src/contract.rs index ea9bb1384..63fc28d18 100644 --- a/contracts/pair_concentrated/src/contract.rs +++ b/contracts/pair_concentrated/src/contract.rs @@ -69,7 +69,7 @@ pub fn instantiate( check_asset_infos(deps.api, &msg.asset_infos)?; let params: ConcentratedPoolParams = from_json( - &msg.init_params + msg.init_params .ok_or(ContractError::InitParamsNotFound {})?, )?; @@ -512,11 +512,11 @@ pub fn provide_liquidity( // calculate accrued share let share_ratio = share / (total_share + share); - let balanced_share = vec![ + let balanced_share = [ new_xp[0] * share_ratio, new_xp[1] * share_ratio / config.pool_state.price_state.price_scale, ]; - let assets_diff = vec![ + let assets_diff = [ deposits[0].diff(balanced_share[0]), deposits[1].diff(balanced_share[1]), ]; diff --git a/contracts/pair_concentrated/src/migration.rs b/contracts/pair_concentrated/src/migration.rs index d5e12a3bb..4f73da703 100644 --- a/contracts/pair_concentrated/src/migration.rs +++ b/contracts/pair_concentrated/src/migration.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::{from_binary, to_binary, StdError, Storage}; +use cosmwasm_std::{from_json, to_json_binary, StdError, Storage}; use astroport_pcl_common::state::Config; @@ -7,10 +7,10 @@ use crate::state::CONFIG; pub(crate) fn migrate_config(storage: &mut dyn Storage) -> Result<(), StdError> { let old_config = astroport_pair_concentrated_v1::state::CONFIG.load(storage)?; let new_config = Config { - pair_info: from_binary(&to_binary(&old_config.pair_info)?)?, + pair_info: from_json(to_json_binary(&old_config.pair_info)?)?, factory_addr: old_config.factory_addr, - pool_params: from_binary(&to_binary(&old_config.pool_params)?)?, - pool_state: from_binary(&to_binary(&old_config.pool_state)?)?, + pool_params: from_json(to_json_binary(&old_config.pool_params)?)?, + pool_state: from_json(to_json_binary(&old_config.pool_state)?)?, owner: old_config.owner, track_asset_balances: old_config.track_asset_balances, fee_share: None, diff --git a/contracts/periphery/liquidity_manager/src/utils.rs b/contracts/periphery/liquidity_manager/src/utils.rs index 398a9ddbc..14c544ee8 100644 --- a/contracts/periphery/liquidity_manager/src/utils.rs +++ b/contracts/periphery/liquidity_manager/src/utils.rs @@ -247,7 +247,7 @@ pub fn convert_config( querier: QuerierWrapper, config_data: Vec, ) -> StdResult { - let compat_config: CompatPairStableConfig = from_json(&config_data)?; + let compat_config: CompatPairStableConfig = from_json(config_data)?; let greatest_precision = if let Some(prec) = compat_config.greatest_precision { prec From 6331c92cf7995c33444fea86ed75f40580c2b433 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 4 Jan 2024 19:26:49 +0400 Subject: [PATCH 23/84] add config query --- .../periphery/astro_converter/src/contract.rs | 29 +++++++++++++++++-- .../astro_converter_neutron/src/contract.rs | 9 ++++-- packages/astroport/src/astro_converter.rs | 9 +++++- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/contracts/periphery/astro_converter/src/contract.rs b/contracts/periphery/astro_converter/src/contract.rs index f915056d8..fc72ecb5c 100644 --- a/contracts/periphery/astro_converter/src/contract.rs +++ b/contracts/periphery/astro_converter/src/contract.rs @@ -1,15 +1,16 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, coin, coins, ensure, wasm_execute, BankMsg, CosmosMsg, CustomMsg, DepsMut, Env, IbcMsg, - IbcTimeout, MessageInfo, QuerierWrapper, Response, StdError, + attr, coin, coins, ensure, to_json_binary, wasm_execute, BankMsg, Binary, CosmosMsg, CustomMsg, + Deps, DepsMut, Env, IbcMsg, IbcTimeout, MessageInfo, QuerierWrapper, Response, StdError, + StdResult, }; use cw2::set_contract_version; use cw20::{Cw20ExecuteMsg, Cw20QueryMsg, Cw20ReceiveMsg}; use cw_utils::{must_pay, nonpayable}; use astroport::asset::{validate_native_denom, AssetInfo}; -use astroport::astro_converter::{Config, ExecuteMsg, InstantiateMsg, DEFAULT_TIMEOUT}; +use astroport::astro_converter::{Config, ExecuteMsg, InstantiateMsg, QueryMsg, DEFAULT_TIMEOUT}; use crate::error::ContractError; use crate::state::CONFIG; @@ -211,6 +212,13 @@ pub fn burn( } } +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::Config {} => to_json_binary(&CONFIG.load(deps.storage)?), + } +} + #[cfg(test)] mod testing { use cosmwasm_std::testing::{ @@ -256,6 +264,21 @@ mod testing { }); instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); + + let config_data = query(deps.as_ref(), mock_env(), QueryMsg::Config {}).unwrap(); + let config = from_json::(&config_data).unwrap(); + + assert_eq!( + config, + Config { + old_astro_asset_info: AssetInfo::native("ibc/old_astro"), + new_astro_denom: "uastro".to_string(), + outpost_burn_params: Some(OutpostBurnParams { + terra_burn_addr: "terra1xxx".to_string(), + old_astro_transfer_channel: "channel-1".to_string(), + }), + } + ); } #[test] diff --git a/contracts/periphery/astro_converter_neutron/src/contract.rs b/contracts/periphery/astro_converter_neutron/src/contract.rs index 3b01b9e1c..47f0faea8 100644 --- a/contracts/periphery/astro_converter_neutron/src/contract.rs +++ b/contracts/periphery/astro_converter_neutron/src/contract.rs @@ -1,7 +1,7 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, coin, ensure, Deps, DepsMut, Env, MessageInfo, Response, StdError, StdResult, + attr, coin, ensure, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdError, StdResult, }; use cw2::set_contract_version; use cw_utils::nonpayable; @@ -14,7 +14,7 @@ use astro_token_converter::contract::{burn, convert, cw20_receive}; use astro_token_converter::error::ContractError; use astro_token_converter::state::CONFIG; use astroport::asset::AssetInfo; -use astroport::astro_converter::{Config, ExecuteMsg, InstantiateMsg, DEFAULT_TIMEOUT}; +use astroport::astro_converter::{Config, ExecuteMsg, InstantiateMsg, QueryMsg, DEFAULT_TIMEOUT}; const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -51,6 +51,11 @@ pub fn execute( } } +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { + astro_token_converter::contract::query(deps, env, msg) +} + pub fn ibc_transfer_for_burning( deps: Deps, env: Env, diff --git a/packages/astroport/src/astro_converter.rs b/packages/astroport/src/astro_converter.rs index 05b4e7d83..8a82dc026 100644 --- a/packages/astroport/src/astro_converter.rs +++ b/packages/astroport/src/astro_converter.rs @@ -1,4 +1,4 @@ -use cosmwasm_schema::cw_serde; +use cosmwasm_schema::{cw_serde, QueryResponses}; use cw20::Cw20ReceiveMsg; use crate::asset::AssetInfo; @@ -45,3 +45,10 @@ pub enum ExecuteMsg { TransferForBurning { timeout: Option }, Burn {}, } + +#[cw_serde] +#[derive(QueryResponses)] +pub enum QueryMsg { + #[returns(Config)] + Config {}, +} From 2c10d01993aeada2ab528835e6bdf40fdc91abf4 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 4 Jan 2024 20:45:50 +0400 Subject: [PATCH 24/84] add custom receiver to ease pair integration --- .../periphery/astro_converter/src/contract.rs | 84 +++++++++++++++---- .../astro_converter_neutron/src/contract.rs | 4 +- packages/astroport/src/astro_converter.rs | 11 ++- 3 files changed, 77 insertions(+), 22 deletions(-) diff --git a/contracts/periphery/astro_converter/src/contract.rs b/contracts/periphery/astro_converter/src/contract.rs index fc72ecb5c..9efebd23f 100644 --- a/contracts/periphery/astro_converter/src/contract.rs +++ b/contracts/periphery/astro_converter/src/contract.rs @@ -1,16 +1,18 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, coin, coins, ensure, to_json_binary, wasm_execute, BankMsg, Binary, CosmosMsg, CustomMsg, - Deps, DepsMut, Env, IbcMsg, IbcTimeout, MessageInfo, QuerierWrapper, Response, StdError, - StdResult, + attr, coin, coins, ensure, from_json, to_json_binary, wasm_execute, Api, BankMsg, Binary, + CosmosMsg, CustomMsg, Deps, DepsMut, Env, IbcMsg, IbcTimeout, MessageInfo, QuerierWrapper, + Response, StdError, StdResult, }; use cw2::set_contract_version; use cw20::{Cw20ExecuteMsg, Cw20QueryMsg, Cw20ReceiveMsg}; use cw_utils::{must_pay, nonpayable}; -use astroport::asset::{validate_native_denom, AssetInfo}; -use astroport::astro_converter::{Config, ExecuteMsg, InstantiateMsg, QueryMsg, DEFAULT_TIMEOUT}; +use astroport::asset::{addr_opt_validate, validate_native_denom, AssetInfo}; +use astroport::astro_converter::{ + Config, Cw20HookMsg, ExecuteMsg, InstantiateMsg, QueryMsg, DEFAULT_TIMEOUT, +}; use crate::error::ContractError; use crate::state::CONFIG; @@ -78,8 +80,8 @@ pub fn execute( let config = CONFIG.load(deps.storage)?; match msg { - ExecuteMsg::Receive(cw20_msg) => cw20_receive(config, info, cw20_msg), - ExecuteMsg::Convert {} => convert(config, info), + ExecuteMsg::Receive(cw20_msg) => cw20_receive(deps.api, config, info, cw20_msg), + ExecuteMsg::Convert { receiver } => convert(deps.api, config, info, receiver), ExecuteMsg::TransferForBurning { timeout } => { ibc_transfer_for_burning(deps.querier, env, info, config, timeout) } @@ -88,6 +90,7 @@ pub fn execute( } pub fn cw20_receive( + api: &dyn Api, config: Config, info: MessageInfo, cw20_msg: Cw20ReceiveMsg, @@ -97,8 +100,11 @@ pub fn cw20_receive( match config.old_astro_asset_info { AssetInfo::Token { contract_addr } => { if info.sender == contract_addr { + let receiver = from_json::(&cw20_msg.msg)?.receiver; + addr_opt_validate(api, &receiver)?; + let bank_msg = BankMsg::Send { - to_address: cw20_msg.sender.to_string(), + to_address: receiver.unwrap_or_else(|| cw20_msg.sender.to_string()), amount: coins(cw20_msg.amount.u128(), config.new_astro_denom), }; @@ -116,15 +122,18 @@ pub fn cw20_receive( } pub fn convert( + api: &dyn Api, config: Config, info: MessageInfo, + receiver: Option, ) -> Result, ContractError> { match config.old_astro_asset_info { AssetInfo::NativeToken { denom } => { let amount = must_pay(&info, &denom)?; + addr_opt_validate(api, &receiver)?; let bank_msg = BankMsg::Send { - to_address: info.sender.to_string(), + to_address: receiver.unwrap_or_else(|| info.sender.to_string()), amount: coins(amount.u128(), config.new_astro_denom), }; @@ -222,7 +231,8 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { #[cfg(test)] mod testing { use cosmwasm_std::testing::{ - mock_dependencies, mock_dependencies_with_balance, mock_env, mock_info, MockQuerier, + mock_dependencies, mock_dependencies_with_balance, mock_env, mock_info, MockApi, + MockQuerier, }; use cosmwasm_std::{ from_json, to_json_binary, Addr, ContractResult, Empty, SubMsg, SystemResult, Uint128, @@ -288,13 +298,15 @@ mod testing { new_astro_denom: "ibc/astro".to_string(), outpost_burn_params: None, }; + let mock_api = MockApi::default(); - let cw20_msg = Cw20ReceiveMsg { + let mut cw20_msg = Cw20ReceiveMsg { sender: "sender".to_string(), amount: 100u128.into(), - msg: Default::default(), + msg: to_json_binary(&Empty {}).unwrap(), }; let err = cw20_receive::( + &mock_api, config.clone(), mock_info("random_cw20", &[]), cw20_msg.clone(), @@ -305,6 +317,7 @@ mod testing { config.old_astro_asset_info = AssetInfo::cw20_unchecked("terra1xxx"); let err = cw20_receive::( + &mock_api, config.clone(), mock_info("random_cw20", &[]), cw20_msg.clone(), @@ -316,6 +329,7 @@ mod testing { ); let res = cw20_receive::( + &mock_api, config.clone(), mock_info("terra1xxx", &[]), cw20_msg.clone(), @@ -325,7 +339,27 @@ mod testing { assert_eq!( res.messages, [SubMsg::new(CosmosMsg::Bank(BankMsg::Send { - to_address: cw20_msg.sender, + to_address: cw20_msg.sender.clone(), + amount: coins(cw20_msg.amount.u128(), config.new_astro_denom.clone()) + }))] + ); + + cw20_msg.msg = to_json_binary(&Cw20HookMsg { + receiver: Some("receiver".to_string()), + }) + .unwrap(); + let res = cw20_receive::( + &mock_api, + config.clone(), + mock_info("terra1xxx", &[]), + cw20_msg.clone(), + ) + .unwrap(); + + assert_eq!( + res.messages, + [SubMsg::new(CosmosMsg::Bank(BankMsg::Send { + to_address: "receiver".to_string(), amount: coins(cw20_msg.amount.u128(), config.new_astro_denom) }))] ); @@ -338,30 +372,46 @@ mod testing { new_astro_denom: "ibc/astro".to_string(), outpost_burn_params: None, }; + let mock_api = MockApi::default(); let info = mock_info("sender", &[]); - let err = convert::(config.clone(), info).unwrap_err(); + let err = convert::(&mock_api, config.clone(), info, None).unwrap_err(); assert_eq!(err, ContractError::InvalidEndpoint {}); config.old_astro_asset_info = AssetInfo::native("ibc/old_astro"); let info = mock_info("sender", &[]); - let err = convert::(config.clone(), info).unwrap_err(); + let err = convert::(&mock_api, config.clone(), info, None).unwrap_err(); assert_eq!(err, ContractError::PaymentError(NoFunds {})); let info = mock_info("sender", &coins(100, "random_coin")); - let err = convert::(config.clone(), info).unwrap_err(); + let err = convert::(&mock_api, config.clone(), info, None).unwrap_err(); assert_eq!( err, ContractError::PaymentError(MissingDenom("ibc/old_astro".to_string())) ); let info = mock_info("sender", &coins(100, "ibc/old_astro")); - let res = convert::(config.clone(), info.clone()).unwrap(); + let res = convert::(&mock_api, config.clone(), info.clone(), None).unwrap(); assert_eq!( res.messages, [SubMsg::new(CosmosMsg::Bank(BankMsg::Send { to_address: info.sender.to_string(), + amount: coins(100, config.new_astro_denom.clone()) + }))] + ); + + let res = convert::( + &mock_api, + config.clone(), + info.clone(), + Some("receiver".to_string()), + ) + .unwrap(); + assert_eq!( + res.messages, + [SubMsg::new(CosmosMsg::Bank(BankMsg::Send { + to_address: "receiver".to_string(), amount: coins(100, config.new_astro_denom) }))] ); diff --git a/contracts/periphery/astro_converter_neutron/src/contract.rs b/contracts/periphery/astro_converter_neutron/src/contract.rs index 47f0faea8..994fc52f4 100644 --- a/contracts/periphery/astro_converter_neutron/src/contract.rs +++ b/contracts/periphery/astro_converter_neutron/src/contract.rs @@ -42,8 +42,8 @@ pub fn execute( let config = CONFIG.load(deps.storage)?; match msg { - ExecuteMsg::Receive(cw20_msg) => cw20_receive(config, info, cw20_msg), - ExecuteMsg::Convert {} => convert(config, info), + ExecuteMsg::Receive(cw20_msg) => cw20_receive(deps.api, config, info, cw20_msg), + ExecuteMsg::Convert { receiver } => convert(deps.api, config, info, receiver), ExecuteMsg::TransferForBurning { timeout } => { ibc_transfer_for_burning(deps.as_ref(), env, info, config, timeout) } diff --git a/packages/astroport/src/astro_converter.rs b/packages/astroport/src/astro_converter.rs index 8a82dc026..a26ec0c9a 100644 --- a/packages/astroport/src/astro_converter.rs +++ b/packages/astroport/src/astro_converter.rs @@ -32,15 +32,20 @@ pub struct InstantiateMsg { pub outpost_burn_params: Option, } +#[cw_serde] +pub struct Cw20HookMsg { + pub receiver: Option, +} + /// Available contract execute messages. -/// - `Convert` is used to convert old ASTRO to new ASTRO on outposts. +/// - `Convert` is used to convert old ASTRO to new ASTRO on outposts. New ASTRO sent to `receiver` if specified. /// - `Receive` is used to process cw20 send hook from old cw20 ASTRO and release new ASTRO token on the old Hub. -/// cw20 hook message is ignored thus can be any format (for example '{}'). +/// Custom `receiver` is forwarded within Cw20HookMsg. /// - `TransferForBurning` is used to send old ASTRO to the old Hub for burning. Is meant to be used by outposts. /// - `Burn` is used to burn old cw20 ASTRO on the old Hub. #[cw_serde] pub enum ExecuteMsg { - Convert {}, + Convert { receiver: Option }, Receive(Cw20ReceiveMsg), TransferForBurning { timeout: Option }, Burn {}, From ebe5547f5b85b6cd69c7e0639a9c48d7e086609b Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Fri, 5 Jan 2024 14:11:32 +0400 Subject: [PATCH 25/84] WIP: add astro converter pair --- Cargo.lock | 15 + Cargo.toml | 1 + contracts/pair_astro_converter/.cargo/config | 6 + contracts/pair_astro_converter/.editorconfig | 11 + contracts/pair_astro_converter/Cargo.toml | 35 ++ contracts/pair_astro_converter/README.md | 1 + .../examples/pair_converter_schema.rs | 11 + contracts/pair_astro_converter/rustfmt.toml | 15 + .../pair_astro_converter/src/contract.rs | 316 ++++++++++++++++++ contracts/pair_astro_converter/src/error.rs | 21 ++ contracts/pair_astro_converter/src/lib.rs | 6 + .../pair_astro_converter/src/migration.rs | 38 +++ contracts/pair_astro_converter/src/queries.rs | 196 +++++++++++ contracts/pair_astro_converter/src/state.rs | 19 ++ .../tests/pair_converter_integration.rs | 1 + 15 files changed, 692 insertions(+) create mode 100644 contracts/pair_astro_converter/.cargo/config create mode 100644 contracts/pair_astro_converter/.editorconfig create mode 100644 contracts/pair_astro_converter/Cargo.toml create mode 100644 contracts/pair_astro_converter/README.md create mode 100644 contracts/pair_astro_converter/examples/pair_converter_schema.rs create mode 100644 contracts/pair_astro_converter/rustfmt.toml create mode 100644 contracts/pair_astro_converter/src/contract.rs create mode 100644 contracts/pair_astro_converter/src/error.rs create mode 100644 contracts/pair_astro_converter/src/lib.rs create mode 100644 contracts/pair_astro_converter/src/migration.rs create mode 100644 contracts/pair_astro_converter/src/queries.rs create mode 100644 contracts/pair_astro_converter/src/state.rs create mode 100644 contracts/pair_astro_converter/tests/pair_converter_integration.rs diff --git a/Cargo.lock b/Cargo.lock index dde635313..46c1c6a75 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -532,6 +532,21 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-pair-converter" +version = "1.0.0" +dependencies = [ + "astroport 3.9.0", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.1", + "cw2 1.1.0", + "cw20 0.15.1", + "serde", + "thiserror", +] + [[package]] name = "astroport-pair-stable" version = "3.4.0" diff --git a/Cargo.toml b/Cargo.toml index 71ce9ce51..607769801 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ members = [ "contracts/pair", "contracts/pair_stable", "contracts/pair_concentrated", + "contracts/pair_astro_converter", # "contracts/pair_concentrated_inj", TODO: rewrite OB liquidity deployment "contracts/pair_astro_xastro", "contracts/router", diff --git a/contracts/pair_astro_converter/.cargo/config b/contracts/pair_astro_converter/.cargo/config new file mode 100644 index 000000000..6a35afd0f --- /dev/null +++ b/contracts/pair_astro_converter/.cargo/config @@ -0,0 +1,6 @@ +[alias] +wasm = "build --release --target wasm32-unknown-unknown" +wasm-debug = "build --target wasm32-unknown-unknown" +unit-test = "test --lib" +integration-test = "test --test integration" +schema = "run --example pair_schema" diff --git a/contracts/pair_astro_converter/.editorconfig b/contracts/pair_astro_converter/.editorconfig new file mode 100644 index 000000000..3d36f20b1 --- /dev/null +++ b/contracts/pair_astro_converter/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.rs] +indent_size = 4 diff --git a/contracts/pair_astro_converter/Cargo.toml b/contracts/pair_astro_converter/Cargo.toml new file mode 100644 index 000000000..6e7147282 --- /dev/null +++ b/contracts/pair_astro_converter/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "astroport-pair-converter" +version = "1.0.0" +authors = ["Astroport"] +edition = "2021" +description = "Astroport old cw20 ASTRO -> new tf ASTRO converter virtual pair" +license = "GPL-3" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", +] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +# for quicker tests, cargo test --lib +# for more explicit tests, cargo test --features=backtraces +backtraces = ["cosmwasm-std/backtraces"] +library = [] + +[dependencies] +astroport = { path = "../../packages/astroport", version = "3" } +cw2 = "1" +cw20 = "0.15.1" +cosmwasm-std = "1.5" +cw-storage-plus = "1" +thiserror = { version = "1.0" } +cosmwasm-schema = "1.1" +cw-utils = "1.0.1" +serde = { version = "1.0.193", features = ["derive"] } diff --git a/contracts/pair_astro_converter/README.md b/contracts/pair_astro_converter/README.md new file mode 100644 index 000000000..4b35a5fb7 --- /dev/null +++ b/contracts/pair_astro_converter/README.md @@ -0,0 +1 @@ +# Astroport Astro Converter Pair Contract diff --git a/contracts/pair_astro_converter/examples/pair_converter_schema.rs b/contracts/pair_astro_converter/examples/pair_converter_schema.rs new file mode 100644 index 000000000..5d9fae104 --- /dev/null +++ b/contracts/pair_astro_converter/examples/pair_converter_schema.rs @@ -0,0 +1,11 @@ +use astroport::pair::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use cosmwasm_schema::write_api; + +fn main() { + write_api! { + instantiate: InstantiateMsg, + query: QueryMsg, + execute: ExecuteMsg, + migrate: MigrateMsg, + } +} diff --git a/contracts/pair_astro_converter/rustfmt.toml b/contracts/pair_astro_converter/rustfmt.toml new file mode 100644 index 000000000..11a85e6a9 --- /dev/null +++ b/contracts/pair_astro_converter/rustfmt.toml @@ -0,0 +1,15 @@ +# stable +newline_style = "unix" +hard_tabs = false +tab_spaces = 4 + +# unstable... should we require `rustup run nightly cargo fmt` ? +# or just update the style guide when they are stable? +#fn_single_line = true +#format_code_in_doc_comments = true +#overflow_delimited_expr = true +#reorder_impl_items = true +#struct_field_align_threshold = 20 +#struct_lit_single_line = true +#report_todo = "Always" + diff --git a/contracts/pair_astro_converter/src/contract.rs b/contracts/pair_astro_converter/src/contract.rs new file mode 100644 index 000000000..aa9bb89c2 --- /dev/null +++ b/contracts/pair_astro_converter/src/contract.rs @@ -0,0 +1,316 @@ +use std::vec; + +use astroport::asset::{addr_opt_validate, Asset, AssetInfo}; +use astroport::pair::{Cw20HookMsg, ExecuteMsg}; +use astroport::querier::query_fee_info; +use cosmwasm_schema::cw_serde; +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{ + attr, from_json, Addr, Decimal, DepsMut, Empty, Env, MessageInfo, Response, StdResult, Uint128, +}; +use cw2::{get_contract_version, set_contract_version}; +use cw20::Cw20ReceiveMsg; + +use crate::error::ContractError; +use crate::migration::migrate_config; +use crate::state::CONFIG; + +/// Contract name that is used for migration. +const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); +/// Contract version that is used for migration. +const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); + +/// Creates a new contract with the specified parameters in the [`InstantiateMsg`]. +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + _deps: DepsMut, + _env: Env, + _info: MessageInfo, + _msg: Empty, +) -> Result { + unimplemented!("{CONTRACT_NAME} cannot be instantiated"); +} + +/// Exposes all the execute functions available in the contract. +/// +/// ## Variants +/// * **ExecuteMsg::UpdateConfig { params: Binary }** Not supported. +/// +/// * **ExecuteMsg::Receive(msg)** Receives a message of type [`Cw20ReceiveMsg`] and processes +/// it depending on the received template. +/// +/// * **ExecuteMsg::ProvideLiquidity { +/// assets, +/// slippage_tolerance, +/// auto_stake, +/// receiver, +/// }** Provides liquidity in the pair with the specified input parameters. +/// +/// * **ExecuteMsg::Swap { +/// offer_asset, +/// belief_price, +/// max_spread, +/// to, +/// }** Performs a swap operation with the specified parameters. +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::Receive(msg) => receive_cw20(deps, env, info, msg), + ExecuteMsg::Swap { + offer_asset, to, .. + } => { + offer_asset.info.check(deps.api)?; + if !offer_asset.is_native_token() { + return Err(ContractError::Cw20DirectSwap {}); + } + + let to_addr = addr_opt_validate(deps.api, &to)?; + + swap(deps, env, info.clone(), info.sender, offer_asset, to_addr) + } + _ => Err(ContractError::NotSupported {}), + } +} + +/// Receives a message of type [`Cw20ReceiveMsg`] and processes it depending on the received template. +/// +/// * **cw20_msg** is the CW20 message that has to be processed. +pub fn receive_cw20( + deps: DepsMut, + env: Env, + info: MessageInfo, + cw20_msg: Cw20ReceiveMsg, +) -> Result { + match from_json(&cw20_msg.msg)? { + Cw20HookMsg::Swap { to, .. } => { + // Only asset contract can execute this message + let config = CONFIG.load(deps.storage)?; + + let authorized = config.pair_info.asset_infos.iter().any(|asset_info| { + matches!( + asset_info, + AssetInfo::Token { contract_addr, .. } if contract_addr == &info.sender + ) + }); + if !authorized { + return Err(ContractError::Unauthorized {}); + } + + let to_addr = addr_opt_validate(deps.api, &to)?; + let contract_addr = info.sender.clone(); + + swap( + deps, + env, + info, + Addr::unchecked(cw20_msg.sender), + Asset { + info: AssetInfo::Token { contract_addr }, + amount: cw20_msg.amount, + }, + to_addr, + ) + } + } +} + +/// Performs an swap operation with the specified parameters. The trader must approve the +/// pool contract to transfer offer assets from their wallet. +/// +/// * **sender** is the sender of the swap operation. +/// +/// * **offer_asset** proposed asset for swapping. +/// +/// * **belief_price** is used to calculate the maximum swap spread. +/// +/// * **max_spread** sets the maximum spread of the swap operation. +/// +/// * **to** sets the recipient of the swap operation. +pub fn swap( + deps: DepsMut, + env: Env, + info: MessageInfo, + sender: Addr, + offer_asset: Asset, + to: Option, +) -> Result { + offer_asset.assert_sent_native_token_balance(&info)?; + + let mut config = CONFIG.load(deps.storage)?; + + // If the asset balance is already increased, we should subtract the user deposit from the pool amount + let pools = config + .pair_info + .query_pools(&deps.querier, &config.pair_info.contract_addr)? + .into_iter() + .map(|mut p| { + if p.info.equal(&offer_asset.info) { + p.amount = p.amount.checked_sub(offer_asset.amount)?; + } + Ok(p) + }) + .collect::>>()?; + + let offer_pool: Asset; + let ask_pool: Asset; + + if offer_asset.info.equal(&pools[0].info) { + offer_pool = pools[0].clone(); + ask_pool = pools[1].clone(); + } else if offer_asset.info.equal(&pools[1].info) { + offer_pool = pools[1].clone(); + ask_pool = pools[0].clone(); + } else { + return Err(ContractError::AssetMismatch {}); + } + + // Get fee info from the factory + let fee_info = query_fee_info( + &deps.querier, + &config.factory_addr, + config.pair_info.pair_type.clone(), + )?; + + let offer_amount = offer_asset.amount; + + let (return_amount, spread_amount, commission_amount) = compute_swap( + offer_pool.amount, + ask_pool.amount, + offer_amount, + fee_info.total_fee_rate, + )?; + + // Check the max spread limit (if it was specified) + assert_max_spread( + belief_price, + max_spread, + offer_amount, + return_amount + commission_amount, + spread_amount, + )?; + + let return_asset = Asset { + info: ask_pool.info.clone(), + amount: return_amount, + }; + + let receiver = to.unwrap_or_else(|| sender.clone()); + let mut messages = vec![]; + if !return_amount.is_zero() { + messages.push(return_asset.into_msg(receiver.clone())?) + } + + // If this pool is configured to share fees, calculate the amount to send + // to the receiver and add the transfer message + // The calculation works as follows: We take the share percentage first, + // and the remainder is then split between LPs and maker + let mut fees_commission_amount = commission_amount; + let mut fee_share_amount = Uint128::zero(); + if let Some(fee_share) = config.fee_share.clone() { + // Calculate the fee share amount from the full commission amount + let share_fee_rate = Decimal::from_ratio(fee_share.bps, 10000u16); + fee_share_amount = fees_commission_amount * share_fee_rate; + + if !fee_share_amount.is_zero() { + // Subtract the fee share amount from the commission + fees_commission_amount = fees_commission_amount.saturating_sub(fee_share_amount); + + // Build send message for the shared amount + let fee_share_msg = Asset { + info: ask_pool.info.clone(), + amount: fee_share_amount, + } + .into_msg(fee_share.recipient)?; + messages.push(fee_share_msg); + } + } + + // Compute the Maker fee + let mut maker_fee_amount = Uint128::zero(); + if let Some(fee_address) = fee_info.fee_address { + if let Some(f) = calculate_maker_fee( + &ask_pool.info, + fees_commission_amount, + fee_info.maker_fee_rate, + ) { + maker_fee_amount = f.amount; + messages.push(f.into_msg(fee_address)?); + } + } + + // Accumulate prices for the assets in the pool + if let Some((price0_cumulative_new, price1_cumulative_new, block_time)) = + accumulate_prices(env, &config, pools[0].amount, pools[1].amount)? + { + config.price0_cumulative_last = price0_cumulative_new; + config.price1_cumulative_last = price1_cumulative_new; + config.block_time_last = block_time; + CONFIG.save(deps.storage, &config)?; + } + + Ok(Response::new() + .add_messages( + // 1. send collateral tokens from the contract to a user + // 2. send inactive commission fees to the Maker contract + messages, + ) + .add_attributes(vec![ + attr("action", "swap"), + attr("sender", sender), + attr("receiver", receiver), + attr("offer_asset", offer_asset.info.to_string()), + attr("ask_asset", ask_pool.info.to_string()), + attr("offer_amount", offer_amount), + attr("return_amount", return_amount), + attr("spread_amount", spread_amount), + attr("commission_amount", commission_amount), + attr("maker_fee_amount", maker_fee_amount), + attr("fee_share_amount", fee_share_amount), + ])) +} + +// TODO: move somewhere else +#[cw_serde] +pub struct MigrateMsg { + pub converter_contract: String, +} + +/// Manages the contract migration. +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn migrate(deps: DepsMut, _env: Env, msg: MigrateMsg) -> Result { + let contract_version = get_contract_version(deps.storage)?; + + match ( + contract_version.contract.as_ref(), + contract_version.version.as_ref(), + ) { + ("astroport-pair", "???" | "???") => { + let converter_addr = deps.api.addr_validate(&msg.converter_contract)?; + let config = migrate_config(deps.storage, converter_addr)?; + } + _ => { + return Err(ContractError::MigrationError { + expected: "astroport-pair:?|?...".to_string(), + actual: format!("{}:{}", contract_version.contract, contract_version.version), + }) + } + } + + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + + Ok(Response::default().add_attributes([ + ("previous_contract_name", contract_version.contract.as_str()), + ( + "previous_contract_version", + contract_version.version.as_str(), + ), + ("new_contract_name", CONTRACT_NAME), + ("new_contract_version", CONTRACT_VERSION), + ])) +} diff --git a/contracts/pair_astro_converter/src/error.rs b/contracts/pair_astro_converter/src/error.rs new file mode 100644 index 000000000..24cc25ccf --- /dev/null +++ b/contracts/pair_astro_converter/src/error.rs @@ -0,0 +1,21 @@ +use cosmwasm_std::StdError; +use thiserror::Error; + +/// This enum describes pair contract errors +#[derive(Error, Debug, PartialEq)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("Operation is not supported")] + NotSupported {}, + + #[error("CW20 tokens can be swapped via Cw20::Send message only")] + Cw20DirectSwap {}, + + #[error("Failed to migrate from {actual} to {expected}")] + MigrationError { expected: String, actual: String }, + + #[error("Unauthorized")] + Unauthorized {}, +} diff --git a/contracts/pair_astro_converter/src/lib.rs b/contracts/pair_astro_converter/src/lib.rs new file mode 100644 index 000000000..61b69daaf --- /dev/null +++ b/contracts/pair_astro_converter/src/lib.rs @@ -0,0 +1,6 @@ +pub mod contract; +pub mod state; + +pub mod error; +mod migration; +pub mod queries; diff --git a/contracts/pair_astro_converter/src/migration.rs b/contracts/pair_astro_converter/src/migration.rs new file mode 100644 index 000000000..4e4223c79 --- /dev/null +++ b/contracts/pair_astro_converter/src/migration.rs @@ -0,0 +1,38 @@ +use cosmwasm_std::{Addr, QuerierWrapper, StdResult, Storage}; +use cw_storage_plus::Item; +use serde::{Deserialize, Serialize}; + +use astroport::asset::PairInfo; +use astroport::astro_converter; + +use crate::state::Config; +use crate::state::CONFIG; + +/// This structure partially captures config of the XYK pair contract. +/// We don't use cw_serde macro intentionally to allow unknown fields in the config. +/// Thus migration is compatible with any XYK pair version. +#[derive(Serialize, Deserialize)] +struct PartialConfig { + pub pair_info: PairInfo, + pub factory_addr: Addr, +} + +pub fn migrate_config(storage: &mut dyn Storage, converter_contract: Addr) -> StdResult { + let partial_config: PartialConfig = Item::new("config").load(storage)?; + let new_config = Config { + pair_info: partial_config.pair_info, + factory_addr: partial_config.factory_addr, + converter_contract, + }; + + CONFIG.save(storage, &new_config)?; + + Ok(new_config) +} + +pub fn sanity_checks(querier: QuerierWrapper, config: &Config) -> StdResult<()> { + let converter_config = + querier.query_wasm_smart::(&config.converter_contract)?; + + Ok(()) +} diff --git a/contracts/pair_astro_converter/src/queries.rs b/contracts/pair_astro_converter/src/queries.rs new file mode 100644 index 000000000..a9a1098dc --- /dev/null +++ b/contracts/pair_astro_converter/src/queries.rs @@ -0,0 +1,196 @@ +use cosmwasm_std::{entry_point, to_json_binary, Binary, Deps, Env, StdError, StdResult}; + +use astroport::asset::{Asset, PairInfo}; +use astroport::pair::{ + ConfigResponse, CumulativePricesResponse, PoolResponse, QueryMsg, ReverseSimulationResponse, + SimulationResponse, XYKPoolConfig, +}; +use astroport::querier::{query_factory_config, query_fee_info}; + +use crate::state::{Config, CONFIG}; + +/// Exposes all the queries available in the contract. +/// +/// ## Queries +/// * **QueryMsg::Pair {}** Returns information about the pair in an object of type [`PairInfo`]. +/// +/// * **QueryMsg::Pool {}** Returns information about the amount of assets in the pair contract as +/// well as the amount of LP tokens issued using an object of type [`PoolResponse`]. +/// +/// * **QueryMsg::Share { amount }** Returns the amount of assets that could be withdrawn from the pool +/// using a specific amount of LP tokens. The result is returned in a vector that contains objects of type [`Asset`]. +/// +/// * **QueryMsg::Simulation { offer_asset }** Returns the result of a swap simulation using a [`SimulationResponse`] object. +/// +/// * **QueryMsg::ReverseSimulation { ask_asset }** Returns the result of a reverse swap simulation using +/// a [`ReverseSimulationResponse`] object. +/// +/// * **QueryMsg::CumulativePrices {}** Returns information about cumulative prices for the assets in the +/// pool using a [`CumulativePricesResponse`] object. +/// +/// * **QueryMsg::Config {}** Returns the configuration for the pair contract using a [`ConfigResponse`] object. +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::Pair {} => to_json_binary(&CONFIG.load(deps.storage)?.pair_info), + QueryMsg::Pool {} => to_json_binary(&PoolResponse { + assets: vec![], + total_share: Default::default(), + }), + QueryMsg::Share { .. } => to_json_binary(&[]), + QueryMsg::Simulation { offer_asset, .. } => { + to_json_binary(&query_simulation(deps, offer_asset)?) + } + QueryMsg::ReverseSimulation { ask_asset, .. } => { + to_json_binary(&query_reverse_simulation(deps, ask_asset)?) + } + QueryMsg::CumulativePrices {} => to_json_binary(&query_cumulative_prices(deps, env)?), + QueryMsg::Config {} => to_json_binary(&query_config(deps)?), + _ => Err(StdError::generic_err("Query is not supported")), + } +} + +/// Returns information about a swap simulation in a [`SimulationResponse`] object. +/// +/// * **offer_asset** is the asset to swap as well as an amount of the said asset. +pub fn query_simulation(deps: Deps, offer_asset: Asset) -> StdResult { + let config = CONFIG.load(deps.storage)?; + + let pools = config + .pair_info + .query_pools(&deps.querier, &config.pair_info.contract_addr)?; + + let offer_pool: Asset; + let ask_pool: Asset; + if offer_asset.info.equal(&pools[0].info) { + offer_pool = pools[0].clone(); + ask_pool = pools[1].clone(); + } else if offer_asset.info.equal(&pools[1].info) { + offer_pool = pools[1].clone(); + ask_pool = pools[0].clone(); + } else { + return Err(StdError::generic_err( + "Given offer asset does not belong in the pair", + )); + } + + // Get fee info from the factory contract + let fee_info = query_fee_info( + &deps.querier, + config.factory_addr, + config.pair_info.pair_type, + )?; + + let (return_amount, spread_amount, commission_amount) = compute_swap( + offer_pool.amount, + ask_pool.amount, + offer_asset.amount, + fee_info.total_fee_rate, + )?; + + Ok(SimulationResponse { + return_amount, + spread_amount, + commission_amount, + }) +} + +/// Returns information about a reverse swap simulation in a [`ReverseSimulationResponse`] object. +/// +/// * **ask_asset** is the asset to swap to as well as the desired amount of ask +/// assets to receive from the swap. +pub fn query_reverse_simulation( + deps: Deps, + ask_asset: Asset, +) -> StdResult { + let config = CONFIG.load(deps.storage)?; + + let pools = config + .pair_info + .query_pools(&deps.querier, &config.pair_info.contract_addr)?; + + let offer_pool: Asset; + let ask_pool: Asset; + if ask_asset.info.equal(&pools[0].info) { + ask_pool = pools[0].clone(); + offer_pool = pools[1].clone(); + } else if ask_asset.info.equal(&pools[1].info) { + ask_pool = pools[1].clone(); + offer_pool = pools[0].clone(); + } else { + return Err(StdError::generic_err( + "Given ask asset doesn't belong to pairs", + )); + } + + // Get fee info from factory + let fee_info = query_fee_info( + &deps.querier, + config.factory_addr, + config.pair_info.pair_type, + )?; + + let (offer_amount, spread_amount, commission_amount) = compute_offer_amount( + offer_pool.amount, + ask_pool.amount, + ask_asset.amount, + fee_info.total_fee_rate, + )?; + + Ok(ReverseSimulationResponse { + offer_amount, + spread_amount, + commission_amount, + }) +} + +/// Returns information about cumulative prices for the assets in the pool using a [`CumulativePricesResponse`] object. +pub fn query_cumulative_prices(deps: Deps, env: Env) -> StdResult { + let config = CONFIG.load(deps.storage)?; + let (assets, total_share) = pool_info(deps.querier, &config)?; + + let mut price0_cumulative_last = config.price0_cumulative_last; + let mut price1_cumulative_last = config.price1_cumulative_last; + + if let Some((price0_cumulative_new, price1_cumulative_new, _)) = + accumulate_prices(env, &config, assets[0].amount, assets[1].amount)? + { + price0_cumulative_last = price0_cumulative_new; + price1_cumulative_last = price1_cumulative_new; + } + + let cumulative_prices = vec![ + ( + assets[0].info.clone(), + assets[1].info.clone(), + price0_cumulative_last, + ), + ( + assets[1].info.clone(), + assets[0].info.clone(), + price1_cumulative_last, + ), + ]; + + let resp = CumulativePricesResponse { + assets, + total_share, + cumulative_prices, + }; + + Ok(resp) +} + +/// Returns the pair contract configuration in a [`ConfigResponse`] object. +pub fn query_config(deps: Deps, env: Env) -> StdResult { + let config = CONFIG.load(deps.storage)?; + + let factory_config = query_factory_config(&deps.querier, &config.factory_addr)?; + + Ok(ConfigResponse { + block_time_last: env.block.time.seconds(), + params: None, + owner: factory_config.owner, + factory_addr: config.factory_addr, + }) +} diff --git a/contracts/pair_astro_converter/src/state.rs b/contracts/pair_astro_converter/src/state.rs new file mode 100644 index 000000000..03a8ed0b1 --- /dev/null +++ b/contracts/pair_astro_converter/src/state.rs @@ -0,0 +1,19 @@ +use cosmwasm_schema::cw_serde; +use cosmwasm_std::Addr; +use cw_storage_plus::Item; + +use astroport::asset::PairInfo; + +/// This structure stores the main config parameters for a constant product pair contract. +#[cw_serde] +pub struct Config { + /// General pair information (e.g pair type) + pub pair_info: PairInfo, + /// The factory contract address + pub factory_addr: Addr, + /// ASTRO converter contract address + pub converter_contract: Addr, +} + +/// Stores the config struct at the given key +pub const CONFIG: Item = Item::new("config"); diff --git a/contracts/pair_astro_converter/tests/pair_converter_integration.rs b/contracts/pair_astro_converter/tests/pair_converter_integration.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/contracts/pair_astro_converter/tests/pair_converter_integration.rs @@ -0,0 +1 @@ + From 4878b1f8dd33ce0b97cc3adc3d4af9b5d3797e83 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 11 Jan 2024 13:31:55 +0400 Subject: [PATCH 26/84] improve converter contracts --- contracts/periphery/astro_converter/src/contract.rs | 10 ++++++---- .../periphery/astro_converter_neutron/src/contract.rs | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/contracts/periphery/astro_converter/src/contract.rs b/contracts/periphery/astro_converter/src/contract.rs index 9efebd23f..9bd297665 100644 --- a/contracts/periphery/astro_converter/src/contract.rs +++ b/contracts/periphery/astro_converter/src/contract.rs @@ -95,21 +95,21 @@ pub fn cw20_receive( info: MessageInfo, cw20_msg: Cw20ReceiveMsg, ) -> Result, ContractError> { - nonpayable(&info)?; - match config.old_astro_asset_info { AssetInfo::Token { contract_addr } => { if info.sender == contract_addr { let receiver = from_json::(&cw20_msg.msg)?.receiver; addr_opt_validate(api, &receiver)?; + let receiver = receiver.unwrap_or_else(|| info.sender.to_string()); let bank_msg = BankMsg::Send { - to_address: receiver.unwrap_or_else(|| cw20_msg.sender.to_string()), + to_address: receiver.clone(), amount: coins(cw20_msg.amount.u128(), config.new_astro_denom), }; Ok(Response::new().add_message(bank_msg).add_attributes([ attr("action", "convert"), + attr("receiver", receiver), attr("type", "cw20:astro"), attr("amount", cw20_msg.amount), ])) @@ -132,13 +132,15 @@ pub fn convert( let amount = must_pay(&info, &denom)?; addr_opt_validate(api, &receiver)?; + let receiver = receiver.unwrap_or_else(|| info.sender.to_string()); let bank_msg = BankMsg::Send { - to_address: receiver.unwrap_or_else(|| info.sender.to_string()), + to_address: receiver.clone(), amount: coins(amount.u128(), config.new_astro_denom), }; Ok(Response::new().add_message(bank_msg).add_attributes([ attr("action", "convert"), + attr("receiver", receiver), attr("type", "ibc:astro"), attr("amount", amount), ])) diff --git a/contracts/periphery/astro_converter_neutron/src/contract.rs b/contracts/periphery/astro_converter_neutron/src/contract.rs index 994fc52f4..a001df23a 100644 --- a/contracts/periphery/astro_converter_neutron/src/contract.rs +++ b/contracts/periphery/astro_converter_neutron/src/contract.rs @@ -10,7 +10,7 @@ use neutron_sdk::bindings::query::NeutronQuery; use neutron_sdk::query::min_ibc_fee::query_min_ibc_fee; use neutron_sdk::sudo::msg::{RequestPacketTimeoutHeight, TransferSudoMsg}; -use astro_token_converter::contract::{burn, convert, cw20_receive}; +use astro_token_converter::contract::{convert, cw20_receive}; use astro_token_converter::error::ContractError; use astro_token_converter::state::CONFIG; use astroport::asset::AssetInfo; @@ -47,7 +47,7 @@ pub fn execute( ExecuteMsg::TransferForBurning { timeout } => { ibc_transfer_for_burning(deps.as_ref(), env, info, config, timeout) } - ExecuteMsg::Burn {} => burn(deps.into_empty().querier, env, info, config), + ExecuteMsg::Burn {} => ContractError::BurnError {}, // burn is only available on Terra } } From 52fb54d6c98d6415d7af298f5baad60a172d2f3b Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:02:36 +0400 Subject: [PATCH 27/84] finish virtual astro converter pair --- Cargo.lock | 153 +++-- contracts/pair_astro_converter/Cargo.toml | 10 + contracts/pair_astro_converter/README.md | 5 + .../pair_astro_converter/src/contract.rs | 287 +++------ contracts/pair_astro_converter/src/error.rs | 10 +- contracts/pair_astro_converter/src/lib.rs | 2 +- .../pair_astro_converter/src/migration.rs | 44 +- contracts/pair_astro_converter/src/queries.rs | 233 +++----- contracts/pair_astro_converter/src/state.rs | 6 +- .../pair_astro_converter/tests/helper.rs | 553 ++++++++++++++++++ .../tests/pair_converter_integration.rs | 306 ++++++++++ .../periphery/astro_converter/src/contract.rs | 2 +- .../astro_converter_neutron/src/contract.rs | 2 +- 13 files changed, 1180 insertions(+), 433 deletions(-) create mode 100644 contracts/pair_astro_converter/tests/helper.rs diff --git a/Cargo.lock b/Cargo.lock index 46c1c6a75..17703f40c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -15,9 +15,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "ap-valkyrie" @@ -46,8 +46,8 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", - "cw-utils 1.0.1", - "cw2 1.1.0", + "cw-utils 1.0.3", + "cw2 1.1.2", "cw20 0.15.1", "thiserror", ] @@ -59,8 +59,8 @@ dependencies = [ "astro-token-converter", "astroport 3.9.0", "cosmwasm-std", - "cw-utils 1.0.1", - "cw2 1.1.0", + "cw-utils 1.0.3", + "cw2 1.1.2", "neutron-sdk", ] @@ -87,7 +87,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "cw20 0.15.1", "cw3", "injective-math", @@ -143,13 +143,13 @@ version = "1.6.0" dependencies = [ "anyhow", "astroport 3.9.0", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "cw2 0.15.1", "cw20 0.15.1", "itertools 0.10.5", @@ -168,8 +168,8 @@ dependencies = [ "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", - "cw2 1.1.0", + "cw-utils 1.0.3", + "cw2 1.1.2", "thiserror", ] @@ -184,7 +184,7 @@ dependencies = [ "astroport-mocks", "astroport-native-coin-registry", "astroport-nft", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-stable", "astroport-staking", "astroport-token", @@ -193,7 +193,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "cw1-whitelist", "cw2 0.15.1", "cw20 0.15.1", @@ -267,15 +267,15 @@ dependencies = [ "astroport 3.9.0", "astroport-factory 1.6.0", "astroport-native-coin-registry", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-stable", "astroport-vesting", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_cozy_fork)", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", - "cw2 1.1.0", + "cw-utils 1.0.3", + "cw2 1.1.2", "cw20 1.1.0", "cw20-base 1.1.0", "itertools 0.11.0", @@ -292,7 +292,7 @@ dependencies = [ "astroport-factory 1.6.0", "astroport-generator", "astroport-native-coin-registry", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-stable", "astroport-token", "astroport-whitelist", @@ -318,7 +318,7 @@ dependencies = [ "astroport-factory 1.6.0", "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "astroport-native-coin-registry", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-stable", "astroport-token", "cosmwasm-schema", @@ -339,7 +339,7 @@ dependencies = [ "astroport-factory 1.6.0", "astroport-generator", "astroport-native-coin-registry", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-concentrated 2.3.0", "astroport-pair-stable", "astroport-shared-multisig", @@ -351,7 +351,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "cw20 0.15.1", "cw3", "injective-cosmwasm", @@ -410,7 +410,7 @@ dependencies = [ "astroport 3.9.0", "astroport-factory 1.6.0", "astroport-native-coin-registry", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-stable", "astroport-token", "cosmwasm-schema", @@ -423,6 +423,23 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-pair" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555824ec226c179f27d0e6c7c808c99754c294da2e1843c4a8dcd72d2d0db71a" +dependencies = [ + "astroport 2.9.5", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw2 0.15.1", + "cw20 0.15.1", + "integer-sqrt", + "protobuf 2.28.0", + "thiserror", +] + [[package]] name = "astroport-pair" version = "1.5.0" @@ -434,7 +451,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "cw2 0.15.1", "cw20 0.15.1", "integer-sqrt", @@ -536,13 +553,21 @@ dependencies = [ name = "astroport-pair-converter" version = "1.0.0" dependencies = [ + "anyhow", + "astro-token-converter", "astroport 3.9.0", + "astroport-factory 1.6.0", + "astroport-pair 1.3.3", + "astroport-token", "cosmwasm-schema", "cosmwasm-std", + "cw-multi-test 0.20.0", "cw-storage-plus 1.2.0", - "cw-utils 1.0.1", - "cw2 1.1.0", + "cw-utils 1.0.3", + "cw2 1.1.2", "cw20 0.15.1", + "derivative", + "itertools 0.12.0", "serde", "thiserror", ] @@ -561,7 +586,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "cw2 0.15.1", "cw20 0.15.1", "derivative", @@ -594,7 +619,7 @@ dependencies = [ "anyhow", "astroport 3.9.0", "astroport-factory 1.6.0", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -613,13 +638,13 @@ dependencies = [ "astroport 3.9.0", "astroport-generator", "astroport-mocks", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-concentrated 2.3.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", - "cw2 1.1.0", + "cw-utils 1.0.3", + "cw2 1.1.2", "cw20 0.15.1", "cw3", "itertools 0.10.5", @@ -637,7 +662,7 @@ dependencies = [ "cosmwasm-std", "cw-multi-test 0.15.1", "cw-storage-plus 0.15.1", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "cw2 0.15.1", "cw20 0.15.1", "protobuf 2.28.0", @@ -943,7 +968,7 @@ dependencies = [ "schemars", "serde", "serde-json-wasm 0.5.1", - "sha2 0.10.7", + "sha2 0.10.8", "static_assertions 1.1.0", "thiserror", ] @@ -1053,13 +1078,13 @@ dependencies = [ "anyhow", "cosmwasm-std", "cw-storage-plus 1.2.0", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "derivative", "itertools 0.11.0", "prost 0.11.9", "schemars", "serde", - "sha2 0.10.7", + "sha2 0.10.8", "thiserror", ] @@ -1071,7 +1096,7 @@ dependencies = [ "anyhow", "cosmwasm-std", "cw-storage-plus 1.2.0", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "derivative", "itertools 0.10.5", "k256 0.11.6", @@ -1081,6 +1106,26 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cw-multi-test" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67fff029689ae89127cf6d7655809a68d712f3edbdb9686c70b018ba438b26ca" +dependencies = [ + "anyhow", + "bech32", + "cosmwasm-std", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "derivative", + "itertools 0.12.0", + "prost 0.12.3", + "schemars", + "serde", + "sha2 0.10.8", + "thiserror", +] + [[package]] name = "cw-storage-plus" version = "0.11.1" @@ -1143,13 +1188,13 @@ dependencies = [ [[package]] name = "cw-utils" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c80e93d1deccb8588db03945016a292c3c631e6325d349ebb35d2db6f4f946f7" +checksum = "1c4a657e5caacc3a0d00ee96ca8618745d050b8f757c709babafb81208d4239c" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw2 1.1.0", + "cw2 1.1.2", "schemars", "semver", "serde", @@ -1212,14 +1257,15 @@ dependencies = [ [[package]] name = "cw2" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ac2dc7a55ad64173ca1e0a46697c31b7a5c51342f55a1e84a724da4eb99908" +checksum = "c6c120b24fbbf5c3bedebb97f2cc85fbfa1c3287e09223428e7e597b5293c1fa" dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", "schemars", + "semver", "serde", "thiserror", ] @@ -1257,7 +1303,7 @@ checksum = "011c45920f8200bd5d32d4fe52502506f64f2f75651ab408054d4cfc75ca3a9b" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "schemars", "serde", ] @@ -1305,8 +1351,8 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", - "cw-utils 1.0.1", - "cw2 1.1.0", + "cw-utils 1.0.3", + "cw2 1.1.2", "cw20 1.1.0", "schemars", "semver", @@ -1322,7 +1368,7 @@ checksum = "171af3d9127de6805a7dd819fb070c7d2f6c3ea85f4193f42cef259f0a7f33d5" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-utils 1.0.1", + "cw-utils 1.0.3", "cw20 1.1.0", "schemars", "serde", @@ -1839,6 +1885,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.9" @@ -1854,7 +1909,7 @@ dependencies = [ "cfg-if", "ecdsa 0.14.8", "elliptic-curve 0.12.3", - "sha2 0.10.7", + "sha2 0.10.8", ] [[package]] @@ -1867,7 +1922,7 @@ dependencies = [ "ecdsa 0.16.9", "elliptic-curve 0.13.8", "once_cell", - "sha2 0.10.7", + "sha2 0.10.8", "signature 2.2.0", ] @@ -2555,9 +2610,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "serde" @@ -2654,9 +2709,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", diff --git a/contracts/pair_astro_converter/Cargo.toml b/contracts/pair_astro_converter/Cargo.toml index 6e7147282..331f78267 100644 --- a/contracts/pair_astro_converter/Cargo.toml +++ b/contracts/pair_astro_converter/Cargo.toml @@ -33,3 +33,13 @@ thiserror = { version = "1.0" } cosmwasm-schema = "1.1" cw-utils = "1.0.1" serde = { version = "1.0.193", features = ["derive"] } + +[dev-dependencies] +anyhow = "1" +derivative = "2.2" +itertools = "0.12" +cw-multi-test = "0.20.0" +astroport-token = { path = "../token" } +astroport-factory = { path = "../factory" } +astroport-pair = "~1.3.3" +astro-token-converter = { path = "../periphery/astro_converter" } diff --git a/contracts/pair_astro_converter/README.md b/contracts/pair_astro_converter/README.md index 4b35a5fb7..dbf049fc4 100644 --- a/contracts/pair_astro_converter/README.md +++ b/contracts/pair_astro_converter/README.md @@ -1 +1,6 @@ # Astroport Astro Converter Pair Contract + +This is chain agnostic virtual pair which doesn't hold any liquidity and allows to convert old ASTRO -> new ASTRO. +Path new ASTRO -> old ASTRO is not supported. +Pair doesn't charge any fees and is meant to serve as a seamless "bridge" between Astroport frontend and +ASTRO converter contract. diff --git a/contracts/pair_astro_converter/src/contract.rs b/contracts/pair_astro_converter/src/contract.rs index aa9bb89c2..81e6483d7 100644 --- a/contracts/pair_astro_converter/src/contract.rs +++ b/contracts/pair_astro_converter/src/contract.rs @@ -1,19 +1,20 @@ use std::vec; -use astroport::asset::{addr_opt_validate, Asset, AssetInfo}; -use astroport::pair::{Cw20HookMsg, ExecuteMsg}; -use astroport::querier::query_fee_info; -use cosmwasm_schema::cw_serde; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - attr, from_json, Addr, Decimal, DepsMut, Empty, Env, MessageInfo, Response, StdResult, Uint128, + attr, coins, ensure, from_json, to_json_binary, wasm_execute, Addr, DepsMut, Empty, Env, + MessageInfo, Response, }; use cw2::{get_contract_version, set_contract_version}; use cw20::Cw20ReceiveMsg; +use astroport::asset::{addr_opt_validate, Asset, AssetInfo, AssetInfoExt}; +use astroport::astro_converter; +use astroport::pair::{Cw20HookMsg, ExecuteMsg}; + use crate::error::ContractError; -use crate::migration::migrate_config; +use crate::migration::{migrate_config, sanity_checks, MigrateMsg}; use crate::state::CONFIG; /// Contract name that is used for migration. @@ -35,18 +36,9 @@ pub fn instantiate( /// Exposes all the execute functions available in the contract. /// /// ## Variants -/// * **ExecuteMsg::UpdateConfig { params: Binary }** Not supported. -/// /// * **ExecuteMsg::Receive(msg)** Receives a message of type [`Cw20ReceiveMsg`] and processes /// it depending on the received template. /// -/// * **ExecuteMsg::ProvideLiquidity { -/// assets, -/// slippage_tolerance, -/// auto_stake, -/// receiver, -/// }** Provides liquidity in the pair with the specified input parameters. -/// /// * **ExecuteMsg::Swap { /// offer_asset, /// belief_price, @@ -56,23 +48,23 @@ pub fn instantiate( #[cfg_attr(not(feature = "library"), entry_point)] pub fn execute( deps: DepsMut, - env: Env, + _env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { match msg { - ExecuteMsg::Receive(msg) => receive_cw20(deps, env, info, msg), + ExecuteMsg::Receive(msg) => receive_cw20(deps, info, msg), ExecuteMsg::Swap { offer_asset, to, .. } => { - offer_asset.info.check(deps.api)?; - if !offer_asset.is_native_token() { - return Err(ContractError::Cw20DirectSwap {}); - } - - let to_addr = addr_opt_validate(deps.api, &to)?; - - swap(deps, env, info.clone(), info.sender, offer_asset, to_addr) + ensure!( + offer_asset.is_native_token(), + ContractError::Cw20DirectSwap {} + ); + offer_asset.assert_sent_native_token_balance(&info)?; + let sender = info.sender.clone(); + + swap(deps, sender, offer_asset, to) } _ => Err(ContractError::NotSupported {}), } @@ -83,202 +75,78 @@ pub fn execute( /// * **cw20_msg** is the CW20 message that has to be processed. pub fn receive_cw20( deps: DepsMut, - env: Env, info: MessageInfo, cw20_msg: Cw20ReceiveMsg, ) -> Result { match from_json(&cw20_msg.msg)? { - Cw20HookMsg::Swap { to, .. } => { - // Only asset contract can execute this message - let config = CONFIG.load(deps.storage)?; - - let authorized = config.pair_info.asset_infos.iter().any(|asset_info| { - matches!( - asset_info, - AssetInfo::Token { contract_addr, .. } if contract_addr == &info.sender - ) - }); - if !authorized { - return Err(ContractError::Unauthorized {}); - } - - let to_addr = addr_opt_validate(deps.api, &to)?; - let contract_addr = info.sender.clone(); - - swap( - deps, - env, - info, - Addr::unchecked(cw20_msg.sender), - Asset { - info: AssetInfo::Token { contract_addr }, - amount: cw20_msg.amount, - }, - to_addr, - ) - } + Cw20HookMsg::Swap { to, .. } => swap( + deps, + Addr::unchecked(cw20_msg.sender), + AssetInfo::cw20_unchecked(info.sender).with_balance(cw20_msg.amount), + to, + ), + _ => Err(ContractError::NotSupported {}), } } -/// Performs an swap operation with the specified parameters. The trader must approve the -/// pool contract to transfer offer assets from their wallet. +/// Performs swap operation with the specified parameters. /// /// * **sender** is the sender of the swap operation. /// /// * **offer_asset** proposed asset for swapping. /// -/// * **belief_price** is used to calculate the maximum swap spread. -/// -/// * **max_spread** sets the maximum spread of the swap operation. -/// -/// * **to** sets the recipient of the swap operation. +/// * **to_addr** sets the recipient of the swap operation. pub fn swap( deps: DepsMut, - env: Env, - info: MessageInfo, sender: Addr, offer_asset: Asset, - to: Option, + to_addr: Option, ) -> Result { - offer_asset.assert_sent_native_token_balance(&info)?; - - let mut config = CONFIG.load(deps.storage)?; - - // If the asset balance is already increased, we should subtract the user deposit from the pool amount - let pools = config - .pair_info - .query_pools(&deps.querier, &config.pair_info.contract_addr)? - .into_iter() - .map(|mut p| { - if p.info.equal(&offer_asset.info) { - p.amount = p.amount.checked_sub(offer_asset.amount)?; - } - Ok(p) - }) - .collect::>>()?; - - let offer_pool: Asset; - let ask_pool: Asset; - - if offer_asset.info.equal(&pools[0].info) { - offer_pool = pools[0].clone(); - ask_pool = pools[1].clone(); - } else if offer_asset.info.equal(&pools[1].info) { - offer_pool = pools[1].clone(); - ask_pool = pools[0].clone(); - } else { - return Err(ContractError::AssetMismatch {}); - } - - // Get fee info from the factory - let fee_info = query_fee_info( - &deps.querier, - &config.factory_addr, - config.pair_info.pair_type.clone(), - )?; - - let offer_amount = offer_asset.amount; - - let (return_amount, spread_amount, commission_amount) = compute_swap( - offer_pool.amount, - ask_pool.amount, - offer_amount, - fee_info.total_fee_rate, - )?; - - // Check the max spread limit (if it was specified) - assert_max_spread( - belief_price, - max_spread, - offer_amount, - return_amount + commission_amount, - spread_amount, - )?; - - let return_asset = Asset { - info: ask_pool.info.clone(), - amount: return_amount, - }; - - let receiver = to.unwrap_or_else(|| sender.clone()); - let mut messages = vec![]; - if !return_amount.is_zero() { - messages.push(return_asset.into_msg(receiver.clone())?) - } - - // If this pool is configured to share fees, calculate the amount to send - // to the receiver and add the transfer message - // The calculation works as follows: We take the share percentage first, - // and the remainder is then split between LPs and maker - let mut fees_commission_amount = commission_amount; - let mut fee_share_amount = Uint128::zero(); - if let Some(fee_share) = config.fee_share.clone() { - // Calculate the fee share amount from the full commission amount - let share_fee_rate = Decimal::from_ratio(fee_share.bps, 10000u16); - fee_share_amount = fees_commission_amount * share_fee_rate; - - if !fee_share_amount.is_zero() { - // Subtract the fee share amount from the commission - fees_commission_amount = fees_commission_amount.saturating_sub(fee_share_amount); + let config = CONFIG.load(deps.storage)?; - // Build send message for the shared amount - let fee_share_msg = Asset { - info: ask_pool.info.clone(), - amount: fee_share_amount, - } - .into_msg(fee_share.recipient)?; - messages.push(fee_share_msg); + ensure!( + offer_asset.info == config.from, + ContractError::AssetMismatch { + old: config.from.to_string(), + new: config.to.to_string() } - } - - // Compute the Maker fee - let mut maker_fee_amount = Uint128::zero(); - if let Some(fee_address) = fee_info.fee_address { - if let Some(f) = calculate_maker_fee( - &ask_pool.info, - fees_commission_amount, - fee_info.maker_fee_rate, - ) { - maker_fee_amount = f.amount; - messages.push(f.into_msg(fee_address)?); - } - } - - // Accumulate prices for the assets in the pool - if let Some((price0_cumulative_new, price1_cumulative_new, block_time)) = - accumulate_prices(env, &config, pools[0].amount, pools[1].amount)? - { - config.price0_cumulative_last = price0_cumulative_new; - config.price1_cumulative_last = price1_cumulative_new; - config.block_time_last = block_time; - CONFIG.save(deps.storage, &config)?; - } - - Ok(Response::new() - .add_messages( - // 1. send collateral tokens from the contract to a user - // 2. send inactive commission fees to the Maker contract - messages, - ) - .add_attributes(vec![ - attr("action", "swap"), - attr("sender", sender), - attr("receiver", receiver), - attr("offer_asset", offer_asset.info.to_string()), - attr("ask_asset", ask_pool.info.to_string()), - attr("offer_amount", offer_amount), - attr("return_amount", return_amount), - attr("spread_amount", spread_amount), - attr("commission_amount", commission_amount), - attr("maker_fee_amount", maker_fee_amount), - attr("fee_share_amount", fee_share_amount), - ])) -} + ); + + let receiver = addr_opt_validate(deps.api, &to_addr)?.unwrap_or_else(|| sender.clone()); + + let convert_msg = match &config.from { + AssetInfo::Token { contract_addr } => wasm_execute( + contract_addr, + &cw20::Cw20ExecuteMsg::Send { + contract: config.converter_contract.to_string(), + amount: offer_asset.amount, + msg: to_json_binary(&astro_converter::Cw20HookMsg { + receiver: Some(receiver.to_string()), + })?, + }, + vec![], + )?, + AssetInfo::NativeToken { denom } => wasm_execute( + &config.converter_contract, + &astro_converter::ExecuteMsg::Convert { + receiver: Some(receiver.to_string()), + }, + coins(offer_asset.amount.u128(), denom), + )?, + }; -// TODO: move somewhere else -#[cw_serde] -pub struct MigrateMsg { - pub converter_contract: String, + Ok(Response::new().add_message(convert_msg).add_attributes([ + attr("action", "swap"), + attr("receiver", receiver), + attr("offer_asset", config.from.to_string()), + attr("ask_asset", config.to.to_string()), + attr("offer_amount", offer_asset.amount), + attr("return_amount", offer_asset.amount), + attr("spread_amount", "0"), + attr("commission_amount", "0"), + attr("maker_fee_amount", "0"), + attr("fee_share_amount", "0"), + ])) } /// Manages the contract migration. @@ -286,18 +154,27 @@ pub struct MigrateMsg { pub fn migrate(deps: DepsMut, _env: Env, msg: MigrateMsg) -> Result { let contract_version = get_contract_version(deps.storage)?; + // phoenix-1: v1.0.1 + // pisco-1, injective-1, neutron-1: v1.3.3 + // injective-888: v1.1.0 + // pion-1: v1.3.0 match ( contract_version.contract.as_ref(), contract_version.version.as_ref(), ) { - ("astroport-pair", "???" | "???") => { + ("astroport-pair", "1.0.1" | "1.1.0" | "1.3.0" | "1.3.3") => { let converter_addr = deps.api.addr_validate(&msg.converter_contract)?; - let config = migrate_config(deps.storage, converter_addr)?; + let converter_config = deps.querier.query_wasm_smart::( + &converter_addr, + &astro_converter::QueryMsg::Config {}, + )?; + let config = migrate_config(deps.storage, converter_addr, &converter_config)?; + sanity_checks(&config, &converter_config)?; } _ => { return Err(ContractError::MigrationError { - expected: "astroport-pair:?|?...".to_string(), - actual: format!("{}:{}", contract_version.contract, contract_version.version), + expected: "astroport-pair:1.0.1|1.1.0|1.3.0|1.3.3".to_string(), + current: format!("{}:{}", contract_version.contract, contract_version.version), }) } } diff --git a/contracts/pair_astro_converter/src/error.rs b/contracts/pair_astro_converter/src/error.rs index 24cc25ccf..e056ce587 100644 --- a/contracts/pair_astro_converter/src/error.rs +++ b/contracts/pair_astro_converter/src/error.rs @@ -13,9 +13,15 @@ pub enum ContractError { #[error("CW20 tokens can be swapped via Cw20::Send message only")] Cw20DirectSwap {}, - #[error("Failed to migrate from {actual} to {expected}")] - MigrationError { expected: String, actual: String }, + #[error("Failed to migrate from {current}. Expected: {expected}")] + MigrationError { expected: String, current: String }, #[error("Unauthorized")] Unauthorized {}, + + #[error("Invalid CW20 token")] + InvalidCw20Token {}, + + #[error("This pair swaps from old ASTRO ({old}) to new ASTRO only ({new})")] + AssetMismatch { old: String, new: String }, } diff --git a/contracts/pair_astro_converter/src/lib.rs b/contracts/pair_astro_converter/src/lib.rs index 61b69daaf..5b68e5e9f 100644 --- a/contracts/pair_astro_converter/src/lib.rs +++ b/contracts/pair_astro_converter/src/lib.rs @@ -2,5 +2,5 @@ pub mod contract; pub mod state; pub mod error; -mod migration; +pub mod migration; pub mod queries; diff --git a/contracts/pair_astro_converter/src/migration.rs b/contracts/pair_astro_converter/src/migration.rs index 4e4223c79..09148e099 100644 --- a/contracts/pair_astro_converter/src/migration.rs +++ b/contracts/pair_astro_converter/src/migration.rs @@ -1,13 +1,19 @@ -use cosmwasm_std::{Addr, QuerierWrapper, StdResult, Storage}; +use cosmwasm_schema::cw_serde; +use cosmwasm_std::{ensure, Addr, StdError, StdResult, Storage}; use cw_storage_plus::Item; use serde::{Deserialize, Serialize}; -use astroport::asset::PairInfo; +use astroport::asset::{AssetInfo, PairInfo}; use astroport::astro_converter; use crate::state::Config; use crate::state::CONFIG; +#[cw_serde] +pub struct MigrateMsg { + pub converter_contract: String, +} + /// This structure partially captures config of the XYK pair contract. /// We don't use cw_serde macro intentionally to allow unknown fields in the config. /// Thus migration is compatible with any XYK pair version. @@ -17,12 +23,18 @@ struct PartialConfig { pub factory_addr: Addr, } -pub fn migrate_config(storage: &mut dyn Storage, converter_contract: Addr) -> StdResult { +pub fn migrate_config( + storage: &mut dyn Storage, + converter_contract: Addr, + converter_config: &astro_converter::Config, +) -> StdResult { let partial_config: PartialConfig = Item::new("config").load(storage)?; let new_config = Config { pair_info: partial_config.pair_info, factory_addr: partial_config.factory_addr, converter_contract, + from: converter_config.old_astro_asset_info.clone(), + to: AssetInfo::native(&converter_config.new_astro_denom), }; CONFIG.save(storage, &new_config)?; @@ -30,9 +42,29 @@ pub fn migrate_config(storage: &mut dyn Storage, converter_contract: Addr) -> St Ok(new_config) } -pub fn sanity_checks(querier: QuerierWrapper, config: &Config) -> StdResult<()> { - let converter_config = - querier.query_wasm_smart::(&config.converter_contract)?; +pub fn sanity_checks(config: &Config, converter_config: &astro_converter::Config) -> StdResult<()> { + ensure!( + config.pair_info.asset_infos.len() == 2, + StdError::generic_err("Only 2 assets are supported") + ); + + ensure!( + config + .pair_info + .asset_infos + .contains(&converter_config.old_astro_asset_info), + StdError::generic_err("Pair doesn't have old ASTRO specified in the converter contract") + ); + + ensure!( + config + .pair_info + .asset_infos + .contains(&AssetInfo::native(&converter_config.new_astro_denom)), + StdError::generic_err( + "Pair doesn't have new ASTRO denom specified in the converter contract" + ) + ); Ok(()) } diff --git a/contracts/pair_astro_converter/src/queries.rs b/contracts/pair_astro_converter/src/queries.rs index a9a1098dc..f02b3c16e 100644 --- a/contracts/pair_astro_converter/src/queries.rs +++ b/contracts/pair_astro_converter/src/queries.rs @@ -1,196 +1,95 @@ -use cosmwasm_std::{entry_point, to_json_binary, Binary, Deps, Env, StdError, StdResult}; +use cosmwasm_std::{ + ensure, entry_point, to_json_binary, Binary, Deps, Env, StdResult, Storage, Uint128, +}; -use astroport::asset::{Asset, PairInfo}; +use astroport::asset::{Asset, AssetInfoExt}; use astroport::pair::{ - ConfigResponse, CumulativePricesResponse, PoolResponse, QueryMsg, ReverseSimulationResponse, - SimulationResponse, XYKPoolConfig, + ConfigResponse, PoolResponse, QueryMsg, ReverseSimulationResponse, SimulationResponse, }; -use astroport::querier::{query_factory_config, query_fee_info}; +use astroport::querier::query_factory_config; +use crate::error::ContractError; use crate::state::{Config, CONFIG}; -/// Exposes all the queries available in the contract. -/// -/// ## Queries -/// * **QueryMsg::Pair {}** Returns information about the pair in an object of type [`PairInfo`]. -/// -/// * **QueryMsg::Pool {}** Returns information about the amount of assets in the pair contract as -/// well as the amount of LP tokens issued using an object of type [`PoolResponse`]. -/// -/// * **QueryMsg::Share { amount }** Returns the amount of assets that could be withdrawn from the pool -/// using a specific amount of LP tokens. The result is returned in a vector that contains objects of type [`Asset`]. -/// -/// * **QueryMsg::Simulation { offer_asset }** Returns the result of a swap simulation using a [`SimulationResponse`] object. -/// -/// * **QueryMsg::ReverseSimulation { ask_asset }** Returns the result of a reverse swap simulation using -/// a [`ReverseSimulationResponse`] object. -/// -/// * **QueryMsg::CumulativePrices {}** Returns information about cumulative prices for the assets in the -/// pool using a [`CumulativePricesResponse`] object. -/// -/// * **QueryMsg::Config {}** Returns the configuration for the pair contract using a [`ConfigResponse`] object. #[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { +pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> Result { match msg { - QueryMsg::Pair {} => to_json_binary(&CONFIG.load(deps.storage)?.pair_info), - QueryMsg::Pool {} => to_json_binary(&PoolResponse { - assets: vec![], - total_share: Default::default(), - }), - QueryMsg::Share { .. } => to_json_binary(&[]), + QueryMsg::Pair {} => Ok(to_json_binary(&CONFIG.load(deps.storage)?.pair_info)?), + QueryMsg::Pool {} => Ok(to_json_binary(&query_pool(deps.storage)?)?), + QueryMsg::Config {} => Ok(to_json_binary(&query_config(deps)?)?), + QueryMsg::Share { .. } => Ok(to_json_binary(&empty_share(deps.storage)?)?), QueryMsg::Simulation { offer_asset, .. } => { - to_json_binary(&query_simulation(deps, offer_asset)?) + let config = CONFIG.load(deps.storage)?; + ensure!( + offer_asset.info == config.from, + ContractError::AssetMismatch { + old: config.from.to_string(), + new: config.to.to_string() + } + ); + + Ok(to_json_binary(&SimulationResponse { + return_amount: offer_asset.amount, + spread_amount: Uint128::zero(), + commission_amount: Uint128::zero(), + })?) } QueryMsg::ReverseSimulation { ask_asset, .. } => { - to_json_binary(&query_reverse_simulation(deps, ask_asset)?) + let config = CONFIG.load(deps.storage)?; + + // Assert ask_asset belongs to the pair + let in_pair = config.pair_info.asset_infos.contains(&ask_asset.info); + + ensure!( + in_pair && ask_asset.info != config.from, + ContractError::AssetMismatch { + old: config.from.to_string(), + new: config.to.to_string() + } + ); + + Ok(to_json_binary(&ReverseSimulationResponse { + offer_amount: ask_asset.amount, + spread_amount: Uint128::zero(), + commission_amount: Uint128::zero(), + })?) } - QueryMsg::CumulativePrices {} => to_json_binary(&query_cumulative_prices(deps, env)?), - QueryMsg::Config {} => to_json_binary(&query_config(deps)?), - _ => Err(StdError::generic_err("Query is not supported")), - } -} - -/// Returns information about a swap simulation in a [`SimulationResponse`] object. -/// -/// * **offer_asset** is the asset to swap as well as an amount of the said asset. -pub fn query_simulation(deps: Deps, offer_asset: Asset) -> StdResult { - let config = CONFIG.load(deps.storage)?; - - let pools = config - .pair_info - .query_pools(&deps.querier, &config.pair_info.contract_addr)?; - - let offer_pool: Asset; - let ask_pool: Asset; - if offer_asset.info.equal(&pools[0].info) { - offer_pool = pools[0].clone(); - ask_pool = pools[1].clone(); - } else if offer_asset.info.equal(&pools[1].info) { - offer_pool = pools[1].clone(); - ask_pool = pools[0].clone(); - } else { - return Err(StdError::generic_err( - "Given offer asset does not belong in the pair", - )); + _ => Err(ContractError::NotSupported {}), } - - // Get fee info from the factory contract - let fee_info = query_fee_info( - &deps.querier, - config.factory_addr, - config.pair_info.pair_type, - )?; - - let (return_amount, spread_amount, commission_amount) = compute_swap( - offer_pool.amount, - ask_pool.amount, - offer_asset.amount, - fee_info.total_fee_rate, - )?; - - Ok(SimulationResponse { - return_amount, - spread_amount, - commission_amount, - }) } -/// Returns information about a reverse swap simulation in a [`ReverseSimulationResponse`] object. -/// -/// * **ask_asset** is the asset to swap to as well as the desired amount of ask -/// assets to receive from the swap. -pub fn query_reverse_simulation( - deps: Deps, - ask_asset: Asset, -) -> StdResult { - let config = CONFIG.load(deps.storage)?; - - let pools = config - .pair_info - .query_pools(&deps.querier, &config.pair_info.contract_addr)?; - - let offer_pool: Asset; - let ask_pool: Asset; - if ask_asset.info.equal(&pools[0].info) { - ask_pool = pools[0].clone(); - offer_pool = pools[1].clone(); - } else if ask_asset.info.equal(&pools[1].info) { - ask_pool = pools[1].clone(); - offer_pool = pools[0].clone(); - } else { - return Err(StdError::generic_err( - "Given ask asset doesn't belong to pairs", - )); - } - - // Get fee info from factory - let fee_info = query_fee_info( - &deps.querier, - config.factory_addr, - config.pair_info.pair_type, - )?; - - let (offer_amount, spread_amount, commission_amount) = compute_offer_amount( - offer_pool.amount, - ask_pool.amount, - ask_asset.amount, - fee_info.total_fee_rate, - )?; - - Ok(ReverseSimulationResponse { - offer_amount, - spread_amount, - commission_amount, - }) -} - -/// Returns information about cumulative prices for the assets in the pool using a [`CumulativePricesResponse`] object. -pub fn query_cumulative_prices(deps: Deps, env: Env) -> StdResult { - let config = CONFIG.load(deps.storage)?; - let (assets, total_share) = pool_info(deps.querier, &config)?; - - let mut price0_cumulative_last = config.price0_cumulative_last; - let mut price1_cumulative_last = config.price1_cumulative_last; - - if let Some((price0_cumulative_new, price1_cumulative_new, _)) = - accumulate_prices(env, &config, assets[0].amount, assets[1].amount)? - { - price0_cumulative_last = price0_cumulative_new; - price1_cumulative_last = price1_cumulative_new; - } - - let cumulative_prices = vec![ - ( - assets[0].info.clone(), - assets[1].info.clone(), - price0_cumulative_last, - ), - ( - assets[1].info.clone(), - assets[0].info.clone(), - price1_cumulative_last, - ), - ]; - - let resp = CumulativePricesResponse { - assets, - total_share, - cumulative_prices, +/// Returns the amounts of assets in the pair contract as well as the amount of LP +/// tokens currently minted in an object of type [`PoolResponse`]. +pub fn query_pool(storage: &dyn Storage) -> StdResult { + let resp = PoolResponse { + assets: empty_share(storage)?, + total_share: Uint128::zero(), }; Ok(resp) } /// Returns the pair contract configuration in a [`ConfigResponse`] object. -pub fn query_config(deps: Deps, env: Env) -> StdResult { - let config = CONFIG.load(deps.storage)?; - +pub fn query_config(deps: Deps) -> StdResult { + let config: Config = CONFIG.load(deps.storage)?; let factory_config = query_factory_config(&deps.querier, &config.factory_addr)?; Ok(ConfigResponse { - block_time_last: env.block.time.seconds(), + block_time_last: 0, params: None, owner: factory_config.owner, factory_addr: config.factory_addr, }) } + +pub fn empty_share(storage: &dyn Storage) -> StdResult> { + let share = CONFIG + .load(storage)? + .pair_info + .asset_infos + .iter() + .map(|asset_info| asset_info.with_balance(0u128)) + .collect(); + + Ok(share) +} diff --git a/contracts/pair_astro_converter/src/state.rs b/contracts/pair_astro_converter/src/state.rs index 03a8ed0b1..33f5e07ba 100644 --- a/contracts/pair_astro_converter/src/state.rs +++ b/contracts/pair_astro_converter/src/state.rs @@ -2,7 +2,7 @@ use cosmwasm_schema::cw_serde; use cosmwasm_std::Addr; use cw_storage_plus::Item; -use astroport::asset::PairInfo; +use astroport::asset::{AssetInfo, PairInfo}; /// This structure stores the main config parameters for a constant product pair contract. #[cw_serde] @@ -13,6 +13,10 @@ pub struct Config { pub factory_addr: Addr, /// ASTRO converter contract address pub converter_contract: Addr, + /// The old ASTRO asset info + pub from: AssetInfo, + /// The new ASTRO asset info + pub to: AssetInfo, } /// Stores the config struct at the given key diff --git a/contracts/pair_astro_converter/tests/helper.rs b/contracts/pair_astro_converter/tests/helper.rs new file mode 100644 index 000000000..b2930be7f --- /dev/null +++ b/contracts/pair_astro_converter/tests/helper.rs @@ -0,0 +1,553 @@ +#![cfg(not(tarpaulin_include))] +#![allow(dead_code)] + +use std::collections::HashMap; + +use anyhow::Result as AnyResult; +use cosmwasm_schema::cw_serde; +use cosmwasm_std::{ + coin, from_json, to_json_binary, Addr, Coin, Decimal, Empty, StdError, StdResult, Uint128, +}; +use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg}; +use cw_multi_test::{App, AppResponse, Contract, ContractWrapper, Executor}; +use derivative::Derivative; +use itertools::Itertools; + +use astroport::asset::{native_asset_info, token_asset_info, Asset, AssetInfo, PairInfo}; +use astroport::astro_converter; +use astroport::astro_converter::OutpostBurnParams; +use astroport::factory::{PairConfig, PairType}; +use astroport::pair::{ + CumulativePricesResponse, Cw20HookMsg, ExecuteMsg, PoolResponse, ReverseSimulationResponse, + SimulationResponse, +}; +use astroport::pair_concentrated::QueryMsg; +use astroport_pair_converter::state::Config; + +const INIT_BALANCE: u128 = u128::MAX; + +#[cw_serde] +pub struct AmpGammaResponse { + pub amp: Decimal, + pub gamma: Decimal, + pub future_time: u64, +} + +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +pub enum TestCoin { + Cw20(String), + Cw20Precise(String, u8), + Native(String), +} + +impl TestCoin { + pub fn denom(&self) -> Option { + match self { + TestCoin::Native(denom) => Some(denom.clone()), + _ => None, + } + } + + pub fn cw20_init_data(&self) -> Option<(String, u8)> { + match self { + TestCoin::Cw20(name) => Some((name.clone(), 6u8)), + TestCoin::Cw20Precise(name, precision) => Some((name.clone(), *precision)), + _ => None, + } + } + + pub fn native(denom: &str) -> Self { + Self::Native(denom.to_string()) + } + + pub fn cw20(name: &str) -> Self { + Self::Cw20(name.to_string()) + } + + pub fn cw20precise(name: &str, precision: u8) -> Self { + Self::Cw20Precise(name.to_string(), precision) + } +} + +pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { + let mut test_coins: Vec = test_coins + .iter() + .filter_map(|test_coin| match test_coin { + TestCoin::Native(name) => { + let init_balance = INIT_BALANCE; + Some(coin(init_balance, name)) + } + _ => None, + }) + .collect(); + test_coins.push(coin(INIT_BALANCE, "random-coin")); + + test_coins +} + +pub fn token_contract() -> Box> { + Box::new(ContractWrapper::new_with_empty( + astroport_token::contract::execute, + astroport_token::contract::instantiate, + astroport_token::contract::query, + )) +} + +fn pair_contract() -> Box> { + Box::new( + ContractWrapper::new_with_empty( + astroport_pair::contract::execute, + astroport_pair::contract::instantiate, + astroport_pair::contract::query, + ) + .with_reply_empty(astroport_pair::contract::reply), + ) +} + +pub fn converter_pair_contract() -> Box> { + Box::new( + ContractWrapper::new_with_empty( + astroport_pair_converter::contract::execute, + astroport_pair_converter::contract::instantiate, + astroport_pair_converter::queries::query, + ) + .with_migrate(astroport_pair_converter::contract::migrate), + ) +} + +pub fn converter_contract() -> Box> { + Box::new(ContractWrapper::new_with_empty( + astro_token_converter::contract::execute, + astro_token_converter::contract::instantiate, + astro_token_converter::contract::query, + )) +} + +fn factory_contract() -> Box> { + Box::new( + ContractWrapper::new_with_empty( + astroport_factory::contract::execute, + astroport_factory::contract::instantiate, + astroport_factory::contract::query, + ) + .with_reply_empty(astroport_factory::contract::reply), + ) +} + +#[derive(Derivative)] +#[derivative(Debug)] +pub struct Helper { + #[derivative(Debug = "ignore")] + pub app: App, + pub owner: Addr, + pub assets: HashMap, + pub factory: Addr, + pub pair_addr: Addr, +} + +impl Helper { + pub fn new(owner: &Addr, test_coins: Vec) -> AnyResult { + let mut app = App::new(|router, _, storage| { + router + .bank + .init_balance(storage, owner, init_native_coins(&test_coins)) + .unwrap() + }); + + let token_code_id = app.store_code(token_contract()); + + let asset_infos_vec = test_coins + .iter() + .cloned() + .map(|coin| { + let asset_info = match &coin { + TestCoin::Native(denom) => native_asset_info(denom.clone()), + TestCoin::Cw20(..) | TestCoin::Cw20Precise(..) => { + let (name, precision) = coin.cw20_init_data().unwrap(); + token_asset_info(Self::init_token( + &mut app, + token_code_id, + name, + precision, + owner, + )) + } + }; + (coin, asset_info) + }) + .collect::>(); + + let pair_code_id = app.store_code(pair_contract()); + let factory_code_id = app.store_code(factory_contract()); + let pair_type = PairType::Xyk {}; + + let init_msg = astroport::factory::InstantiateMsg { + fee_address: None, + pair_configs: vec![PairConfig { + code_id: pair_code_id, + maker_fee_bps: 3333, + total_fee_bps: 30u16, + pair_type: pair_type.clone(), + is_disabled: false, + is_generator_disabled: false, + }], + token_code_id, + generator_address: None, + owner: owner.to_string(), + whitelist_code_id: 0, + coin_registry_address: "registry".to_string(), + }; + + let factory = app.instantiate_contract( + factory_code_id, + owner.clone(), + &init_msg, + &[], + "factory", + None, + )?; + + let asset_infos = asset_infos_vec + .clone() + .into_iter() + .map(|(_, asset_info)| asset_info) + .collect_vec(); + let init_pair_msg = astroport::factory::ExecuteMsg::CreatePair { + pair_type, + asset_infos: asset_infos.clone(), + init_params: None, + }; + + app.execute_contract(owner.clone(), factory.clone(), &init_pair_msg, &[])?; + + let resp: PairInfo = app.wrap().query_wasm_smart( + &factory, + &astroport::factory::QueryMsg::Pair { asset_infos }, + )?; + + Ok(Self { + app, + owner: owner.clone(), + assets: asset_infos_vec.into_iter().collect(), + factory, + pair_addr: resp.contract_addr, + }) + } + + pub fn setup_converter( + &mut self, + old_astro_asset_info: AssetInfo, + new_astro_denom: &str, + ) -> AnyResult<(Addr, u64)> { + let converter_pair_code_id = self.app.store_code(converter_pair_contract()); + let converter_code_id = self.app.store_code(converter_contract()); + self.app + .instantiate_contract( + converter_code_id, + self.owner.clone(), + &astro_converter::InstantiateMsg { + outpost_burn_params: if matches!( + &old_astro_asset_info, + AssetInfo::NativeToken { .. } + ) { + Some(OutpostBurnParams { + terra_burn_addr: "terra1xxx".to_string(), + old_astro_transfer_channel: "channel-100".to_string(), + }) + } else { + None + }, + old_astro_asset_info, + new_astro_denom: new_astro_denom.to_string(), + }, + &[], + "converter", + None, + ) + .map(|addr| (addr, converter_pair_code_id)) + } + + pub fn setup_converter_and_migrate(&mut self, old: &TestCoin, new: &TestCoin) { + let (converter_addr, converter_pair_code_id) = self + .setup_converter(self.assets[old].clone(), &self.assets[new].to_string()) + .unwrap(); + // Top up converter with new ASTRO + self.give_me_money( + &[Asset::native( + self.assets[new].to_string(), + 100_000_000_000000u128, + )], + &converter_addr, + ); + self.app + .migrate_contract( + self.owner.clone(), + self.pair_addr.clone(), + &astroport_pair_converter::migration::MigrateMsg { + converter_contract: converter_addr.to_string(), + }, + converter_pair_code_id, + ) + .unwrap(); + } + + pub fn provide_liquidity(&mut self, sender: &Addr, assets: &[Asset]) -> AnyResult { + let funds = + assets.mock_coins_sent(&mut self.app, sender, &self.pair_addr, SendType::Allowance); + + let msg = ExecuteMsg::ProvideLiquidity { + assets: assets.to_vec(), + slippage_tolerance: None, + auto_stake: None, + receiver: None, + }; + + self.app + .execute_contract(sender.clone(), self.pair_addr.clone(), &msg, &funds) + } + + pub fn swap(&mut self, sender: &Addr, offer_asset: &Asset) -> AnyResult { + match &offer_asset.info { + AssetInfo::Token { contract_addr } => { + let msg = Cw20ExecuteMsg::Send { + contract: self.pair_addr.to_string(), + amount: offer_asset.amount, + msg: to_json_binary(&Cw20HookMsg::Swap { + ask_asset_info: None, + belief_price: None, + max_spread: None, + to: None, + }) + .unwrap(), + }; + + self.app + .execute_contract(sender.clone(), contract_addr.clone(), &msg, &[]) + } + AssetInfo::NativeToken { .. } => { + let funds = offer_asset.mock_coin_sent( + &mut self.app, + sender, + &self.pair_addr, + SendType::None, + ); + + let msg = ExecuteMsg::Swap { + offer_asset: offer_asset.clone(), + ask_asset_info: None, + belief_price: None, + max_spread: None, + to: None, + }; + + self.app + .execute_contract(sender.clone(), self.pair_addr.clone(), &msg, &funds) + } + } + } + + pub fn simulate_swap( + &self, + offer_asset: &Asset, + ask_asset_info: Option, + ) -> StdResult { + self.app.wrap().query_wasm_smart( + &self.pair_addr, + &QueryMsg::Simulation { + offer_asset: offer_asset.clone(), + ask_asset_info, + }, + ) + } + + pub fn simulate_reverse_swap( + &self, + ask_asset: &Asset, + offer_asset_info: Option, + ) -> StdResult { + self.app.wrap().query_wasm_smart( + &self.pair_addr, + &QueryMsg::ReverseSimulation { + ask_asset: ask_asset.clone(), + offer_asset_info, + }, + ) + } + + pub fn query_prices(&self) -> StdResult { + self.app + .wrap() + .query_wasm_smart(&self.pair_addr, &QueryMsg::CumulativePrices {}) + } + + fn init_token( + app: &mut App, + token_code: u64, + name: String, + decimals: u8, + owner: &Addr, + ) -> Addr { + let init_balance = INIT_BALANCE; + app.instantiate_contract( + token_code, + owner.clone(), + &astroport::token::InstantiateMsg { + symbol: name.to_string(), + name, + decimals, + initial_balances: vec![Cw20Coin { + address: owner.to_string(), + amount: Uint128::from(init_balance), + }], + mint: None, + marketing: None, + }, + &[], + "{name}_token", + None, + ) + .unwrap() + } + + pub fn token_balance(&self, token_addr: &Addr, user: &Addr) -> u128 { + let resp: BalanceResponse = self + .app + .wrap() + .query_wasm_smart( + token_addr, + &Cw20QueryMsg::Balance { + address: user.to_string(), + }, + ) + .unwrap(); + + resp.balance.u128() + } + + pub fn coin_balance(&self, coin: &TestCoin, user: &Addr) -> u128 { + match &self.assets[coin] { + AssetInfo::Token { contract_addr } => self.token_balance(contract_addr, user), + AssetInfo::NativeToken { denom } => self + .app + .wrap() + .query_balance(user, denom) + .unwrap() + .amount + .u128(), + } + } + + pub fn give_me_money(&mut self, assets: &[Asset], recipient: &Addr) { + let funds = + assets.mock_coins_sent(&mut self.app, &self.owner, recipient, SendType::Transfer); + + if !funds.is_empty() { + self.app + .send_tokens(self.owner.clone(), recipient.clone(), &funds) + .unwrap(); + } + } + + pub fn query_config(&self) -> StdResult { + let binary = self + .app + .wrap() + .query_wasm_raw(&self.pair_addr, b"config")? + .ok_or_else(|| StdError::generic_err("Failed to find config in storage"))?; + from_json(&binary) + } + + pub fn query_pool(&self) -> StdResult { + self.app + .wrap() + .query_wasm_smart(&self.pair_addr, &QueryMsg::Pool {}) + } + + pub fn query_share(&self, amount: impl Into) -> StdResult> { + self.app.wrap().query_wasm_smart::>( + &self.pair_addr, + &QueryMsg::Share { + amount: amount.into(), + }, + ) + } +} + +#[derive(Clone, Copy)] +pub enum SendType { + Allowance, + Transfer, + None, +} + +pub trait AssetExt { + fn mock_coin_sent( + &self, + app: &mut App, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec; +} + +impl AssetExt for Asset { + fn mock_coin_sent( + &self, + app: &mut App, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec { + let mut funds = vec![]; + match &self.info { + AssetInfo::Token { contract_addr } if !self.amount.is_zero() => { + let msg = match typ { + SendType::Allowance => Cw20ExecuteMsg::IncreaseAllowance { + spender: spender.to_string(), + amount: self.amount, + expires: None, + }, + SendType::Transfer => Cw20ExecuteMsg::Transfer { + recipient: spender.to_string(), + amount: self.amount, + }, + _ => unimplemented!(), + }; + app.execute_contract(user.clone(), contract_addr.clone(), &msg, &[]) + .unwrap(); + } + AssetInfo::NativeToken { denom } if !self.amount.is_zero() => { + funds = vec![coin(self.amount.u128(), denom)]; + } + _ => {} + } + + funds + } +} + +pub trait AssetsExt { + fn mock_coins_sent( + &self, + app: &mut App, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec; +} + +impl AssetsExt for &[Asset] { + fn mock_coins_sent( + &self, + app: &mut App, + user: &Addr, + spender: &Addr, + typ: SendType, + ) -> Vec { + let mut funds = vec![]; + for asset in self.iter() { + funds.extend(asset.mock_coin_sent(app, user, spender, typ)); + } + funds + } +} diff --git a/contracts/pair_astro_converter/tests/pair_converter_integration.rs b/contracts/pair_astro_converter/tests/pair_converter_integration.rs index 8b1378917..04f310653 100644 --- a/contracts/pair_astro_converter/tests/pair_converter_integration.rs +++ b/contracts/pair_astro_converter/tests/pair_converter_integration.rs @@ -1 +1,307 @@ +use cosmwasm_std::{Addr, StdError}; +use cw_multi_test::{App, Executor}; +use astroport::asset::{AssetInfo, AssetInfoExt, PairInfo}; +use astroport::factory::PairType; +use astroport::pair; +use astroport::pair::ConfigResponse; +use astroport_pair_converter::error::ContractError; + +use crate::helper::{token_contract, Helper, TestCoin}; + +mod helper; + +#[test] +fn test_migrate_from_xyk() { + let owner = Addr::unchecked("owner"); + + let test_coins = vec![TestCoin::cw20("ASTRO"), TestCoin::native("ibc/tf_astro")]; + let mut helper = Helper::new(&owner, test_coins.clone()).unwrap(); + + let (converter_addr, converter_pair_code_id) = helper + .setup_converter(helper.assets[&test_coins[0]].clone(), "ibc/true_tf_astro") + .unwrap(); + let migrate_msg = astroport_pair_converter::migration::MigrateMsg { + converter_contract: converter_addr.to_string(), + }; + let err = helper + .app + .migrate_contract( + owner.clone(), + helper.pair_addr.clone(), + &migrate_msg, + converter_pair_code_id, + ) + .unwrap_err(); + assert_eq!( + err.root_cause().to_string(), + "Generic error: Pair doesn't have new ASTRO denom specified in the converter contract" + ); + + let (converter_addr, converter_pair_code_id) = helper + .setup_converter(AssetInfo::cw20_unchecked("another_cw20"), "ibc/tf_astro") + .unwrap(); + let migrate_msg = astroport_pair_converter::migration::MigrateMsg { + converter_contract: converter_addr.to_string(), + }; + let err = helper + .app + .migrate_contract( + owner.clone(), + helper.pair_addr.clone(), + &migrate_msg, + converter_pair_code_id, + ) + .unwrap_err(); + assert_eq!( + err.root_cause().to_string(), + "Generic error: Pair doesn't have old ASTRO specified in the converter contract" + ); + + let (converter_addr, converter_pair_code_id) = helper + .setup_converter(helper.assets[&test_coins[0]].clone(), "ibc/tf_astro") + .unwrap(); + let migrate_msg = astroport_pair_converter::migration::MigrateMsg { + converter_contract: converter_addr.to_string(), + }; + helper + .app + .migrate_contract( + owner.clone(), + helper.pair_addr.clone(), + &migrate_msg, + converter_pair_code_id, + ) + .unwrap(); +} + +#[test] +fn test_old_hub() { + let owner = Addr::unchecked("owner"); + + let test_coins = vec![TestCoin::cw20("ASTRO"), TestCoin::native("ibc/tf_astro")]; + let mut helper = Helper::new(&owner, test_coins.clone()).unwrap(); + helper.setup_converter_and_migrate(&test_coins[0], &test_coins[1]); + + // old -> new + helper + .swap( + &owner, + &helper.assets[&test_coins[0]].with_balance(1_000000u128), + ) + .unwrap(); + + // Try new -> old + let err = helper + .swap( + &owner, + &helper.assets[&test_coins[1]].with_balance(1_000000u128), + ) + .unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + ContractError::AssetMismatch { + old: helper.assets[&test_coins[0]].to_string(), + new: helper.assets[&test_coins[1]].to_string(), + } + ); + + // Try to provide liquidity + let err = helper + .provide_liquidity( + &owner, + &[ + helper.assets[&test_coins[0]].with_balance(1_000000u128), + helper.assets[&test_coins[1]].with_balance(1_000000u128), + ], + ) + .unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + ContractError::NotSupported {} + ); +} + +#[test] +fn test_outpost() { + let owner = Addr::unchecked("owner"); + + let test_coins = vec![ + TestCoin::native("ibc/old_astro"), + TestCoin::native("tf_astro"), + ]; + let mut helper = Helper::new(&owner, test_coins.clone()).unwrap(); + helper.setup_converter_and_migrate(&test_coins[0], &test_coins[1]); + + // old -> new + helper + .swap( + &owner, + &helper.assets[&test_coins[0]].with_balance(1_000000u128), + ) + .unwrap(); + + // Try new -> old + let err = helper + .swap( + &owner, + &helper.assets[&test_coins[1]].with_balance(1_000000u128), + ) + .unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + ContractError::AssetMismatch { + old: helper.assets[&test_coins[0]].to_string(), + new: helper.assets[&test_coins[1]].to_string(), + } + ); + + // Try to provide liquidity + let err = helper + .provide_liquidity( + &owner, + &[ + helper.assets[&test_coins[0]].with_balance(1_000000u128), + helper.assets[&test_coins[1]].with_balance(1_000000u128), + ], + ) + .unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + ContractError::NotSupported {} + ); +} + +#[test] +fn test_queries() { + let owner = Addr::unchecked("owner"); + + let test_coins = vec![TestCoin::cw20("ASTRO"), TestCoin::native("ibc/tf_astro")]; + let mut helper = Helper::new(&owner, test_coins.clone()).unwrap(); + helper.setup_converter_and_migrate(&test_coins[0], &test_coins[1]); + + let share = helper.query_share(100000000u128).unwrap(); + assert_eq!( + share, + vec![ + helper.assets[&test_coins[0]].with_balance(0u8), + helper.assets[&test_coins[1]].with_balance(0u8), + ] + ); + + let pool_resp = helper.query_pool().unwrap(); + assert_eq!( + pool_resp, + pair::PoolResponse { + assets: vec![ + helper.assets[&test_coins[0]].with_balance(0u8), + helper.assets[&test_coins[1]].with_balance(0u8), + ], + total_share: 0u8.into(), + } + ); + + let err = helper.query_prices().unwrap_err(); + assert_eq!( + err, + StdError::generic_err("Querier contract error: Operation is not supported") + ); + + let pool_info = helper + .app + .wrap() + .query_wasm_smart::(&helper.pair_addr, &pair::QueryMsg::Pair {}) + .unwrap(); + assert_eq!(pool_info.pair_type, PairType::Xyk {}); + + let config = helper + .app + .wrap() + .query_wasm_smart::(&helper.pair_addr, &pair::QueryMsg::Config {}) + .unwrap(); + assert_eq!( + config, + ConfigResponse { + block_time_last: 0, + params: None, + owner: owner.clone(), + factory_addr: helper.factory.clone(), + } + ); + + let resp = helper + .simulate_swap( + &helper.assets[&test_coins[0]].with_balance(1_000000u128), + None, + ) + .unwrap(); + assert_eq!( + resp, + pair::SimulationResponse { + return_amount: 1_000000u128.into(), + spread_amount: 0u128.into(), + commission_amount: 0u128.into(), + } + ); + let err = helper + .simulate_swap( + &helper.assets[&test_coins[1]].with_balance(1_000000u128), + None, + ) + .unwrap_err(); + assert_eq!( + err, + StdError::generic_err("Querier contract error: This pair swaps from old ASTRO (contract0) to new ASTRO only (ibc/tf_astro)") + ); + + let resp = helper + .simulate_reverse_swap( + &helper.assets[&test_coins[1]].with_balance(1_000000u128), + None, + ) + .unwrap(); + assert_eq!( + resp, + pair::ReverseSimulationResponse { + offer_amount: 1_000000u128.into(), + spread_amount: 0u128.into(), + commission_amount: 0u128.into(), + } + ); + let err = helper + .simulate_reverse_swap( + &helper.assets[&test_coins[0]].with_balance(1_000000u128), + None, + ) + .unwrap_err(); + assert_eq!( + err, + StdError::generic_err("Querier contract error: This pair swaps from old ASTRO (contract0) to new ASTRO only (ibc/tf_astro)") + ); +} + +#[test] +#[should_panic(expected = "not implemented: astroport-pair-converter cannot be instantiated")] +fn test_cant_instantiate() { + let mut app = App::default(); + + let token_code_id = app.store_code(token_contract()); + let converter_pair_code_id = app.store_code(helper::converter_pair_contract()); + app.instantiate_contract( + converter_pair_code_id, + Addr::unchecked("owner"), + &astroport::pair::InstantiateMsg { + asset_infos: vec![ + AssetInfo::cw20_unchecked("astro_addr"), + AssetInfo::native("ibc/tf_astro"), + ], + token_code_id, + factory_addr: "factory".to_string(), + init_params: None, + }, + &[], + "label", + None, + ) + .unwrap(); +} diff --git a/contracts/periphery/astro_converter/src/contract.rs b/contracts/periphery/astro_converter/src/contract.rs index 9bd297665..417e650d3 100644 --- a/contracts/periphery/astro_converter/src/contract.rs +++ b/contracts/periphery/astro_converter/src/contract.rs @@ -101,7 +101,7 @@ pub fn cw20_receive( let receiver = from_json::(&cw20_msg.msg)?.receiver; addr_opt_validate(api, &receiver)?; - let receiver = receiver.unwrap_or_else(|| info.sender.to_string()); + let receiver = receiver.unwrap_or_else(|| cw20_msg.sender); let bank_msg = BankMsg::Send { to_address: receiver.clone(), amount: coins(cw20_msg.amount.u128(), config.new_astro_denom), diff --git a/contracts/periphery/astro_converter_neutron/src/contract.rs b/contracts/periphery/astro_converter_neutron/src/contract.rs index a001df23a..1b370a25c 100644 --- a/contracts/periphery/astro_converter_neutron/src/contract.rs +++ b/contracts/periphery/astro_converter_neutron/src/contract.rs @@ -47,7 +47,7 @@ pub fn execute( ExecuteMsg::TransferForBurning { timeout } => { ibc_transfer_for_burning(deps.as_ref(), env, info, config, timeout) } - ExecuteMsg::Burn {} => ContractError::BurnError {}, // burn is only available on Terra + ExecuteMsg::Burn {} => Err(ContractError::BurnError {}), // burn is only available on Terra } } From 9a4e0cc6013d94b6b457c13018e40c1ba22a4a17 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:12:30 +0400 Subject: [PATCH 28/84] make clippy happy --- contracts/periphery/astro_converter/src/contract.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/periphery/astro_converter/src/contract.rs b/contracts/periphery/astro_converter/src/contract.rs index 417e650d3..6dac8880d 100644 --- a/contracts/periphery/astro_converter/src/contract.rs +++ b/contracts/periphery/astro_converter/src/contract.rs @@ -101,7 +101,7 @@ pub fn cw20_receive( let receiver = from_json::(&cw20_msg.msg)?.receiver; addr_opt_validate(api, &receiver)?; - let receiver = receiver.unwrap_or_else(|| cw20_msg.sender); + let receiver = receiver.unwrap_or(cw20_msg.sender); let bank_msg = BankMsg::Send { to_address: receiver.clone(), amount: coins(cw20_msg.amount.u128(), config.new_astro_denom), From 4d63fc6fe26cb8823879686f46a2ed274cc07360 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:28:51 +0400 Subject: [PATCH 29/84] make clippy happy --- contracts/pair_astro_converter/src/contract.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contracts/pair_astro_converter/src/contract.rs b/contracts/pair_astro_converter/src/contract.rs index 81e6483d7..1b8713e33 100644 --- a/contracts/pair_astro_converter/src/contract.rs +++ b/contracts/pair_astro_converter/src/contract.rs @@ -62,9 +62,8 @@ pub fn execute( ContractError::Cw20DirectSwap {} ); offer_asset.assert_sent_native_token_balance(&info)?; - let sender = info.sender.clone(); - swap(deps, sender, offer_asset, to) + swap(deps, info.sender, offer_asset, to) } _ => Err(ContractError::NotSupported {}), } From 01b8a97647d1b577cc2103de69124ddf96456b97 Mon Sep 17 00:00:00 2001 From: Donovan Solms <4567303+donovansolms@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:09:07 +0200 Subject: [PATCH 30/84] feat(staking): Accept TokenFactory xASTRO --- contracts/tokenomics/staking/src/contract.rs | 68 ++--- packages/astroport/src/staking.rs | 2 + .../astroport/src/tokenfactory_tracker.rs | 258 ++++++++++++++++-- packages/astroport/src/xastro_token.rs | 1 + 4 files changed, 265 insertions(+), 64 deletions(-) diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index 3230ae32c..9d969b7db 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -1,3 +1,4 @@ +use astroport::tokenfactory_tracker::{block_before_send, track_before_send, SudoMsg}; use cosmwasm_std::{ attr, coin, entry_point, to_binary, BankMsg, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Reply, ReplyOn, Response, StdError, StdResult, SubMsg, Uint128, WasmMsg, @@ -12,7 +13,7 @@ use crate::state::{Config, CONFIG}; use astroport::staking::{ ConfigResponse, ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg, StakingResponse, }; -use astroport::tokenfactory_tracker::InstantiateMsg as TrackerInstantiateMsg; +// use astroport::tokenfactory_tracker::InstantiateMsg as TrackerInstantiateMsg; use cw2::set_contract_version; use cw_utils::{must_pay, parse_instantiate_response_data}; @@ -30,7 +31,6 @@ const TOKEN_SYMBOL: &str = "xASTRO"; /// A `reply` call code ID used for sub-messages. const INSTANTIATE_DENOM_REPLY_ID: u64 = 1; -const INSTANTIATE_TRACKING_REPLY_ID: u64 = 2; /// Minimum initial xastro share pub(crate) const MINIMUM_STAKE_AMOUNT: Uint128 = Uint128::new(1_000); @@ -94,6 +94,27 @@ pub fn execute( } } +/// Exposes execute functions called by the chain's TokenFactory module +/// +/// ## Variants +/// * **SudoMsg::BlockBeforeSend** Called before sending a token, error fails the transaction +/// * **SudoMsg::TrackBeforeSend** Called before sending a token, error is ignored +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result { + match msg { + // For xASTRO we don't implement any blocking, but is still required + // to be implemented + SudoMsg::BlockBeforeSend { .. } => Ok(Response::default()), + // TrackBeforeSend is called before a send - if an error is returned it will + // be ignored and the send will continue + // Minting a token directly to an address is also tracked + SudoMsg::TrackBeforeSend { from, to, amount } => { + //let config = CONFIG.load(deps.storage)?; + // Get the module address + track_before_send(deps, env, from, to, amount).map_err(Into::into) + } + } +} /// The entry point to the contract for processing replies from submessages. #[cfg_attr(not(feature = "library"), entry_point)] pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result { @@ -107,26 +128,6 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result Result Result { - let mut config = CONFIG.load(deps.storage)?; - - // TODO: Fix unwraps here - let init_response = - parse_instantiate_response_data(msg.result.unwrap().data.unwrap().as_slice()) - .map_err(|e| StdError::generic_err(format!("{e}")))?; + // Enable balance tracking for xASTRO let set_hook_msg = MsgSetBeforeSendHook { sender: env.contract.address.to_string(), denom: config.xastro_denom.clone(), - cosmwasm_address: init_response.contract_address.clone(), + cosmwasm_address: env.contract.address.to_string(), }; - config.tracking_contract_address = init_response.contract_address; CONFIG.save(deps.storage, &config)?; Ok(Response::new() .add_message(set_hook_msg) - .add_attribute("xastro_tracking_contract", config.tracking_contract_address)) + .add_message(denom_metadata_msg) + .add_attribute("xastro_denom", config.xastro_denom)) } _ => Err(ContractError::FailedToParseReply {}), } diff --git a/packages/astroport/src/staking.rs b/packages/astroport/src/staking.rs index 0f19b7b8e..e458ba055 100644 --- a/packages/astroport/src/staking.rs +++ b/packages/astroport/src/staking.rs @@ -40,6 +40,8 @@ pub struct ConfigResponse { pub deposit_denom: String, /// The xASTRO denom pub share_denom: String, + // TODO: Comments + pub share_tracking_address: String, } // The structure returned as part of set_data when staking or unstaking diff --git a/packages/astroport/src/tokenfactory_tracker.rs b/packages/astroport/src/tokenfactory_tracker.rs index 06ae2be4b..4281dbb7d 100644 --- a/packages/astroport/src/tokenfactory_tracker.rs +++ b/packages/astroport/src/tokenfactory_tracker.rs @@ -1,13 +1,7 @@ -use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{Coin, Uint128, Uint64}; - -#[cw_serde] -pub struct InstantiateMsg { - // The denom to track - pub tracked_denom: String, - // The module address of the TokenFactory module - pub tokenfactory_module_address: String, -} +use cosmwasm_schema::cw_serde; +use cosmwasm_std::{ + attr, Addr, Api, Coin, CustomQuery, DepsMut, Env, MessageInfo, Response, StdError, StdResult, +}; #[cw_serde] pub enum SudoMsg { @@ -33,18 +27,234 @@ pub enum SudoMsg { }, } -#[cw_serde] -#[derive(QueryResponses)] -pub enum QueryMsg { - // Returns the balance of the given address at the given timestamp - // in seconds. If unset, returns the balance at the current time - #[returns(Uint128)] - BalanceAt { - address: String, - timestamp: Option, - }, - // Returns the total token supply at the given timestamp in seconds. - // If unset, returns the balance at the current time - #[returns(Uint128)] - TotalSupplyAt { timestamp: Option }, +// Sudo endpoint called by chain before sending tokens +// Errors returned by this endpoint will prevent the transaction from being sent +pub fn block_before_send( + _deps: DepsMut, + _env: Env, + // The address being sent from + _from: String, + // The address being sent to + _to: String, + // The amount and denom being sent + _amount: Coin, +) -> StdResult> +where + C: CustomQuery, +{ + Ok(Response::new()) } + +// Sudo endpoint called by chain before sending tokens +// Errors returned by this endpoint will NOT prevent the transaction from being sent +pub fn track_before_send( + _deps: DepsMut, + _env: Env, + // The address being sent from + _from: String, + // The address being sent to + _to: String, + // The amount and denom being sent + _amount: Coin, +) -> StdResult> +where + C: CustomQuery, +{ + // let config = CONFIG.load(deps.storage)?; + + // // Ensure the denom being sent is the tracked denom + // // If this isn't checked, another token could be tracked with the same + // // contract and that will skew the real numbers + // if amount.denom != config.tracked_denom { + // return Err(ContractError::InvalidDenom { + // expected_denom: config.tracked_denom, + // }); + // } + + // // If the token is minted directly to an address, we don't need to subtract + // // as the sender is the module address + // if from != config.tokenfactory_module_address { + // BALANCES.update( + // deps.storage, + // &from, + // env.block.time.seconds(), + // |balance| -> StdResult<_> { + // Ok(balance.unwrap_or_default().checked_sub(amount.amount)?) + // }, + // )?; + // } else { + // // Minted new tokens + // TOTAL_SUPPLY_HISTORY.update( + // deps.storage, + // env.block.time.seconds(), + // |balance| -> StdResult<_> { + // Ok(balance.unwrap_or_default().checked_add(amount.amount)?) + // }, + // )?; + // } + + // // When burning tokens, the receiver is the token factory module address + // // Sending tokens to the module address isn't allowed by the chain + // if to != config.tokenfactory_module_address { + // BALANCES.update( + // deps.storage, + // &to, + // env.block.time.seconds(), + // |balance| -> StdResult<_> { + // Ok(balance.unwrap_or_default().checked_add(amount.amount)?) + // }, + // )?; + // } else { + // // Burned tokens + // TOTAL_SUPPLY_HISTORY.update( + // deps.storage, + // env.block.time.seconds(), + // |balance| -> StdResult<_> { + // Ok(balance.unwrap_or_default().checked_sub(amount.amount)?) + // }, + // )?; + // } + + Ok(Response::new()) +} + +// use cosmwasm_schema::cw_serde; +// use cosmwasm_std::{ +// attr, Addr, Api, CustomQuery, DepsMut, Env, MessageInfo, Response, StdError, StdResult, +// }; +// use cw_storage_plus::Item; + +// const MAX_PROPOSAL_TTL: u64 = 1209600; + +// /// This structure describes the parameters used for creating a request for a change of contract ownership. +// #[cw_serde] +// pub struct OwnershipProposal { +// /// The newly proposed contract owner +// pub owner: Addr, +// /// Time until the proposal to change ownership expires +// pub ttl: u64, +// } + +// /// Creates a new request to change contract ownership. +// /// +// /// `new_owner` is the newly proposed owner. +// /// +// /// `expires_in` is the time during which the ownership change proposal is still valid. +// /// +// /// `owner` is the current owner. +// /// +// /// ## Executor +// /// Only the current contract owner can execute this. +// pub fn propose_new_owner( +// deps: DepsMut, +// info: MessageInfo, +// env: Env, +// new_owner: String, +// expires_in: u64, +// owner: Addr, +// proposal: Item, +// ) -> StdResult> +// where +// C: CustomQuery, +// { +// // Permission check +// if info.sender != owner { +// return Err(StdError::generic_err("Unauthorized")); +// } + +// let new_owner = deps.api.addr_validate(new_owner.as_str())?; + +// // Check that the new owner is not the same as the current one +// if new_owner == owner { +// return Err(StdError::generic_err("New owner cannot be same")); +// } + +// if MAX_PROPOSAL_TTL < expires_in { +// return Err(StdError::generic_err(format!( +// "Parameter expires_in cannot be higher than {MAX_PROPOSAL_TTL}" +// ))); +// } + +// proposal.save( +// deps.storage, +// &OwnershipProposal { +// owner: new_owner.clone(), +// ttl: env.block.time.seconds() + expires_in, +// }, +// )?; + +// Ok(Response::new().add_attributes(vec![ +// attr("action", "propose_new_owner"), +// attr("new_owner", new_owner), +// ])) +// } + +// /// Removes a request to change contract ownership. +// /// `owner` is the current contract owner. +// /// +// /// ## Executor +// /// Only the current owner can execute this. +// pub fn drop_ownership_proposal( +// deps: DepsMut, +// info: MessageInfo, +// owner: Addr, +// proposal: Item, +// ) -> StdResult> +// where +// C: CustomQuery, +// { +// // Permission check +// if info.sender != owner { +// return Err(StdError::generic_err("Unauthorized")); +// } + +// proposal.remove(deps.storage); + +// Ok(Response::new().add_attributes(vec![attr("action", "drop_ownership_proposal")])) +// } + +// /// Claims ownership over the contract. +// /// +// /// `cb` is a callback function to process ownership transition. +// /// +// /// ## Executor +// /// Only the newly proposed owner can execute this. +// pub fn claim_ownership( +// deps: DepsMut, +// info: MessageInfo, +// env: Env, +// proposal: Item, +// cb: fn(DepsMut, Addr) -> StdResult<()>, +// ) -> StdResult> +// where +// C: CustomQuery, +// { +// let p = proposal +// .load(deps.storage) +// .map_err(|_| StdError::generic_err("Ownership proposal not found"))?; + +// // Check the sender +// if info.sender != p.owner { +// return Err(StdError::generic_err("Unauthorized")); +// } + +// if env.block.time.seconds() > p.ttl { +// return Err(StdError::generic_err("Ownership proposal expired")); +// } + +// proposal.remove(deps.storage); + +// // Run callback +// cb(deps, p.owner.clone())?; + +// Ok(Response::new().add_attributes(vec![ +// attr("action", "claim_ownership"), +// attr("new_owner", p.owner), +// ])) +// } + +// /// Bulk validation and conversion between [`String`] -> [`Addr`] for an array of addresses. +// /// If any address is invalid, the function returns [`StdError`]. +// pub fn validate_addresses(api: &dyn Api, admins: &[String]) -> StdResult> { +// admins.iter().map(|addr| api.addr_validate(addr)).collect() +// } diff --git a/packages/astroport/src/xastro_token.rs b/packages/astroport/src/xastro_token.rs index b72515599..321af65aa 100644 --- a/packages/astroport/src/xastro_token.rs +++ b/packages/astroport/src/xastro_token.rs @@ -1,3 +1,4 @@ +// TODO: DEPRECATE use cosmwasm_schema::{cw_serde, QueryResponses}; use cosmwasm_std::{StdError, StdResult, Uint128}; From 390ac8c3fdea2b22a87bc0018ea08e3a130f5497 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Tue, 16 Jan 2024 16:26:55 +0400 Subject: [PATCH 31/84] WIP: clean up before merge with main --- Cargo.lock | 703 ++++++++++-------- Cargo.toml | 2 - .../tokenfactory_tracker/src/query.rs | 3 +- .../cw20_tf_converter/.cargo/config | 6 - .../tokenomics/cw20_tf_converter/Cargo.toml | 40 - .../tokenomics/cw20_tf_converter/README.md | 3 - .../cw20_tf_converter/src/contract.rs | 36 - .../tokenomics/cw20_tf_converter/src/error.rs | 70 -- .../cw20_tf_converter/src/execute.rs | 19 - .../tokenomics/cw20_tf_converter/src/lib.rs | 5 - .../tokenomics/cw20_tf_converter/src/query.rs | 11 - .../tokenomics/cw20_tf_converter/src/state.rs | 10 - contracts/tokenomics/staking/src/contract.rs | 15 +- .../tokenomics/staking/tests/integration.rs | 1 + packages/astroport/src/cw20_tf_converter.rs | 35 - packages/astroport/src/lib.rs | 1 - .../astroport/src/tokenfactory_tracker.rs | 26 +- packages/astroport_mocks/src/staking.rs | 22 +- 18 files changed, 418 insertions(+), 590 deletions(-) delete mode 100644 contracts/tokenomics/cw20_tf_converter/.cargo/config delete mode 100644 contracts/tokenomics/cw20_tf_converter/Cargo.toml delete mode 100644 contracts/tokenomics/cw20_tf_converter/README.md delete mode 100644 contracts/tokenomics/cw20_tf_converter/src/contract.rs delete mode 100644 contracts/tokenomics/cw20_tf_converter/src/error.rs delete mode 100644 contracts/tokenomics/cw20_tf_converter/src/execute.rs delete mode 100644 contracts/tokenomics/cw20_tf_converter/src/lib.rs delete mode 100644 contracts/tokenomics/cw20_tf_converter/src/query.rs delete mode 100644 contracts/tokenomics/cw20_tf_converter/src/state.rs delete mode 100644 packages/astroport/src/cw20_tf_converter.rs diff --git a/Cargo.lock b/Cargo.lock index c53353543..4f8a5058e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ "getrandom", "once_cell", @@ -15,9 +15,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "ap-valkyrie" @@ -41,7 +41,7 @@ dependencies = [ [[package]] name = "astro-satellite-package" version = "0.1.0" -source = "git+https://github.com/astroport-fi/astroport_ibc#ffb48ebfd7dbbc010cf86c9b02bad236c456fca0" +source = "git+https://github.com/astroport-fi/astroport_ibc#61f3cf90ac7e48de93224e906171ebe206d7f860" dependencies = [ "astroport-governance 1.2.0", "cosmwasm-schema", @@ -56,10 +56,10 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.2", + "cw-utils 1.0.3", "cw20 0.15.1", "cw3", - "injective-math", + "injective-math 0.1.23", "itertools 0.10.5", "test-case", "thiserror", @@ -83,42 +83,24 @@ dependencies = [ "astroport", "cosmwasm-schema", "cosmwasm-std", - "cw-controllers 1.1.1", - "cw-storage-plus 1.1.0", - "cw-utils 1.0.2", - "cw2 1.1.1", - "cw20 1.1.1", + "cw-controllers 1.1.2", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw2 1.1.2", + "cw20 1.1.2", "cw20-ics20", "schemars", "semver", - "serde 1.0.188", - "thiserror", -] - -[[package]] -name = "astroport-cw20-tf-converter" -version = "1.0.0" -dependencies = [ - "anyhow", - "astroport", - "cosmwasm-schema", - "cosmwasm-std", - "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", - "cw-storage-plus 0.15.1", - "cw2 1.1.1", - "cw20 0.15.1", - "schemars", - "serde 1.0.188", - "serde-json-wasm", + "serde 1.0.195", "thiserror", ] [[package]] name = "astroport-escrow-fee-distributor" version = "1.0.2" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -139,7 +121,7 @@ dependencies = [ "cosmwasm-std", "cw-multi-test 0.15.1", "cw-storage-plus 0.15.1", - "cw-utils 1.0.2", + "cw-utils 1.0.3", "cw2 0.15.1", "cw20 0.15.1", "itertools 0.10.5", @@ -158,8 +140,8 @@ dependencies = [ "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", "cw-storage-plus 0.15.1", - "cw-utils 1.0.2", - "cw2 1.1.1", + "cw-utils 1.0.3", + "cw2 1.1.2", "thiserror", ] @@ -170,7 +152,7 @@ dependencies = [ "anyhow", "astroport", "astroport-factory", - "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance)", + "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance)", "astroport-mocks", "astroport-native-coin-registry", "astroport-nft", @@ -183,7 +165,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.2", + "cw-utils 1.0.3", "cw1-whitelist", "cw2 0.15.1", "cw20 0.15.1", @@ -226,8 +208,8 @@ dependencies = [ [[package]] name = "astroport-governance" -version = "1.4.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" +version = "1.4.1" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ "astroport", "cosmwasm-schema", @@ -239,8 +221,8 @@ dependencies = [ [[package]] name = "astroport-governance" -version = "1.4.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance#19cf042770a787414a1966b321e05eb2548c7c16" +version = "1.4.1" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ "astroport", "cosmwasm-schema", @@ -266,12 +248,12 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", - "cw-storage-plus 1.1.0", + "cw-storage-plus 1.2.0", "cw20 0.15.1", "cw20-base 0.15.1", "derivative", "itertools 0.10.5", - "serde_json 1.0.107", + "serde_json 1.0.111", "thiserror", ] @@ -283,7 +265,7 @@ dependencies = [ "astroport", "astroport-escrow-fee-distributor", "astroport-factory", - "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "astroport-native-coin-registry", "astroport-pair", "astroport-pair-stable", @@ -319,12 +301,12 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", - "cw-utils 1.0.2", + "cw-utils 1.0.3", "cw20 0.15.1", "cw3", "injective-cosmwasm", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -360,9 +342,9 @@ dependencies = [ [[package]] name = "astroport-nft" version = "1.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -402,7 +384,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.2", + "cw-utils 1.0.3", "cw2 0.15.1", "cw20 0.15.1", "integer-sqrt", @@ -412,25 +394,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-pair-astro-xastro" -version = "1.0.3" -dependencies = [ - "astroport", - "astroport-factory", - "astroport-pair-bonded", - "astroport-staking", - "astroport-token", - "astroport-xastro-token", - "cosmwasm-schema", - "cosmwasm-std", - "cw-multi-test 0.15.1", - "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", - "thiserror", -] - [[package]] name = "astroport-pair-bonded" version = "1.0.1" @@ -503,7 +466,7 @@ dependencies = [ "derivative", "hex", "injective-cosmwasm", - "injective-math", + "injective-math 0.1.23", "injective-testing", "itertools 0.10.5", "proptest", @@ -525,7 +488,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.2", + "cw-utils 1.0.3", "cw2 0.15.1", "cw20 0.15.1", "derivative", @@ -545,8 +508,8 @@ dependencies = [ "astroport-factory", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 1.1.0", - "cw20 1.1.1", + "cw-storage-plus 1.2.0", + "cw20 1.1.2", "itertools 0.11.0", "thiserror", ] @@ -582,8 +545,8 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.2", - "cw2 1.1.1", + "cw-utils 1.0.3", + "cw2 1.1.2", "cw20 0.15.1", "cw3", "itertools 0.10.5", @@ -602,7 +565,7 @@ dependencies = [ "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_cozy_fork)", "cw-storage-plus 0.15.1", - "cw-utils 1.0.2", + "cw-utils 1.0.3", "cw2 0.15.1", "derivative", "itertools 0.11.0", @@ -631,8 +594,8 @@ dependencies = [ "astroport", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 1.1.0", - "cw2 1.1.1", + "cw-storage-plus 1.2.0", + "cw2 1.1.2", "thiserror", ] @@ -720,9 +683,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.4" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -730,6 +693,12 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + [[package]] name = "bigint" version = "4.4.3" @@ -763,9 +732,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "block-buffer" @@ -787,9 +756,9 @@ dependencies = [ [[package]] name = "bnum" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128a44527fc0d6abf05f9eda748b9027536e12dff93f5acc8449f51583309350" +checksum = "ab9008b6bb9fc80b5277f2fe481c09e828743d9151203e804583eb4c9e15b31d" [[package]] name = "byteorder" @@ -803,7 +772,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" dependencies = [ - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -832,9 +801,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "cosmos-sdk-proto" @@ -849,44 +818,45 @@ dependencies = [ [[package]] name = "cosmwasm-crypto" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6fb22494cf7d23d0c348740e06e5c742070b2991fd41db77bba0bcfbae1a723" +checksum = "8ed6aa9f904de106fa16443ad14ec2abe75e94ba003bb61c681c0e43d4c58d2a" dependencies = [ "digest 0.10.7", + "ecdsa 0.16.9", "ed25519-zebra", - "k256 0.13.1", + "k256 0.13.3", "rand_core 0.6.4", "thiserror", ] [[package]] name = "cosmwasm-derive" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e199424486ea97d6b211db6387fd72e26b4a439d40cc23140b2d8305728055b" +checksum = "40abec852f3d4abec6d44ead9a58b78325021a1ead1e7229c3471414e57b2e49" dependencies = [ "syn 1.0.109", ] [[package]] name = "cosmwasm-schema" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fef683a9c1c4eabd6d31515719d0d2cc66952c4c87f7eb192bfc90384517dc34" +checksum = "b166215fbfe93dc5575bae062aa57ae7bb41121cffe53bac33b033257949d2a9" dependencies = [ "cosmwasm-schema-derive", "schemars", - "serde 1.0.188", - "serde_json 1.0.107", + "serde 1.0.195", + "serde_json 1.0.111", "thiserror", ] [[package]] name = "cosmwasm-schema-derive" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9567025acbb4c0c008178393eb53b3ac3c2e492c25949d3bf415b9cbe80772d8" +checksum = "8bf12f8e20bb29d1db66b7ca590bc2f670b548d21e9be92499bc0f9022a994a8" dependencies = [ "proc-macro2", "quote", @@ -895,11 +865,12 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d89d680fb60439b7c5947b15f9c84b961b88d1f8a3b20c4bd178a3f87db8bae" +checksum = "ad011ae7447188e26e4a7dbca2fcd0fc186aa21ae5c86df0503ea44c78f9e469" dependencies = [ - "base64 0.21.4", + "base64 0.21.7", + "bech32", "bnum", "cosmwasm-crypto", "cosmwasm-derive", @@ -907,27 +878,28 @@ dependencies = [ "forward_ref", "hex", "schemars", - "serde 1.0.188", + "serde 1.0.195", "serde-json-wasm", "sha2 0.10.8", + "static_assertions 1.1.0", "thiserror", ] [[package]] name = "cosmwasm-storage" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a1c574d30feffe4b8121e61e839c231a5ce21901221d2fb4d5c945968a4f00" +checksum = "66de2ab9db04757bcedef2b5984fbe536903ada4a8a9766717a4a71197ef34f6" dependencies = [ "cosmwasm-std", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -958,9 +930,9 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -1001,22 +973,22 @@ dependencies = [ "cw-storage-plus 0.13.4", "cw-utils 0.13.4", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] [[package]] name = "cw-controllers" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b129ca74fa41111fd2e1727426532556dc63973420343b659f5c072b85d789" +checksum = "57de8d3761e46be863e3ac1eba8c8a976362a48c6abf240df1e26c3e421ee9e8" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 1.1.0", - "cw-utils 1.0.2", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1035,7 +1007,7 @@ dependencies = [ "itertools 0.10.5", "prost 0.9.0", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1046,13 +1018,13 @@ source = "git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_coz dependencies = [ "anyhow", "cosmwasm-std", - "cw-storage-plus 1.1.0", - "cw-utils 1.0.2", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", "derivative", "itertools 0.11.0", "prost 0.11.9", "schemars", - "serde 1.0.188", + "serde 1.0.195", "sha2 0.10.8", "thiserror", ] @@ -1064,14 +1036,14 @@ source = "git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1a dependencies = [ "anyhow", "cosmwasm-std", - "cw-storage-plus 1.1.0", - "cw-utils 1.0.2", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", "derivative", "itertools 0.10.5", "k256 0.11.6", "prost 0.9.0", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1083,7 +1055,7 @@ checksum = "7d7ee1963302b0ac2a9d42fe0faec826209c17452bfd36fbfd9d002a88929261" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1094,7 +1066,7 @@ checksum = "648b1507290bbc03a8d88463d7cd9b04b1fa0155e5eef366c4fa052b9caaac7a" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1105,18 +1077,18 @@ checksum = "dc6cf70ef7686e2da9ad7b067c5942cd3e88dd9453f7af42f54557f8af300fb0" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] name = "cw-storage-plus" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f0e92a069d62067f3472c62e30adedb4cab1754725c0f2a682b3128d2bf3c79" +checksum = "d5ff29294ee99373e2cd5fd21786a3c0ced99a52fec2ca347d565489c61b723c" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1127,7 +1099,7 @@ checksum = "ef842a1792e4285beff7b3b518705f760fa4111dc1e296e53f3e92d1ef7f6220" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1139,7 +1111,7 @@ checksum = "9dbaecb78c8e8abfd6b4258c7f4fbeb5c49a5e45ee4d910d3240ee8e1d714e1b" dependencies = [ "cosmwasm-std", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1154,22 +1126,22 @@ dependencies = [ "cw2 0.15.1", "schemars", "semver", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] [[package]] name = "cw-utils" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9f351a4e4d81ef7c890e44d903f8c0bdcdc00f094fd3a181eaf70c0eec7a3a" +checksum = "1c4a657e5caacc3a0d00ee96ca8618745d050b8f757c709babafb81208d4239c" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw2 1.1.1", + "cw2 1.1.2", "schemars", "semver", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1182,7 +1154,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1198,7 +1170,7 @@ dependencies = [ "cw1", "cw2 0.15.1", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1211,7 +1183,7 @@ dependencies = [ "cosmwasm-std", "cw-storage-plus 0.11.1", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1223,7 +1195,7 @@ dependencies = [ "cosmwasm-std", "cw-storage-plus 0.13.4", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1236,20 +1208,21 @@ dependencies = [ "cosmwasm-std", "cw-storage-plus 0.15.1", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] name = "cw2" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9431d14f64f49e41c6ef5561ed11a5391c417d0cb16455dea8cdcb9037a8d197" +checksum = "c6c120b24fbbf5c3bedebb97f2cc85fbfa1c3287e09223428e7e597b5293c1fa" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 1.1.0", + "cw-storage-plus 1.2.0", "schemars", - "serde 1.0.188", + "semver", + "serde 1.0.195", "thiserror", ] @@ -1262,7 +1235,7 @@ dependencies = [ "cosmwasm-std", "cw-utils 0.11.1", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1274,7 +1247,7 @@ dependencies = [ "cosmwasm-std", "cw-utils 0.13.4", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1287,20 +1260,20 @@ dependencies = [ "cosmwasm-std", "cw-utils 0.15.1", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] name = "cw20" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786e9da5e937f473cecd2463e81384c1af65d0f6398bbd851be7655487c55492" +checksum = "526e39bb20534e25a1cd0386727f0038f4da294e5e535729ba3ef54055246abd" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-utils 1.0.2", + "cw-utils 1.0.3", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1315,7 +1288,7 @@ dependencies = [ "cw2 0.11.1", "cw20 0.11.1", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1333,7 +1306,7 @@ dependencies = [ "cw20 0.15.1", "schemars", "semver", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1351,22 +1324,22 @@ dependencies = [ "cw20 0.13.4", "schemars", "semver", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] [[package]] name = "cw3" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d056ec33ec146554aa1d16c9535763341db75589a47743c006c377e62b54034" +checksum = "2967fbd073d4b626dd9e7148e05a84a3bebd9794e71342e12351110ffbb12395" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-utils 1.0.2", - "cw20 1.1.1", + "cw-utils 1.0.3", + "cw20 1.1.2", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1380,7 +1353,7 @@ dependencies = [ "cosmwasm-std", "cw-utils 0.15.1", "schemars", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1396,7 +1369,7 @@ dependencies = [ "cw2 0.15.1", "cw721", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -1422,9 +1395,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] [[package]] name = "derivative" @@ -1466,9 +1442,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "dyn-clone" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" [[package]] name = "ecdsa" @@ -1484,16 +1460,16 @@ dependencies = [ [[package]] name = "ecdsa" -version = "0.16.8" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der 0.7.8", "digest 0.10.7", - "elliptic-curve 0.13.6", + "elliptic-curve 0.13.8", "rfc6979 0.4.0", - "signature 2.1.0", - "spki 0.7.2", + "signature 2.2.0", + "spki 0.7.3", ] [[package]] @@ -1506,7 +1482,7 @@ dependencies = [ "hashbrown", "hex", "rand_core 0.6.4", - "serde 1.0.188", + "serde 1.0.195", "sha2 0.9.9", "zeroize", ] @@ -1539,12 +1515,12 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.13.6" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct 0.2.0", - "crypto-bigint 0.5.3", + "crypto-bigint 0.5.5", "digest 0.10.7", "ff 0.13.0", "generic-array", @@ -1558,9 +1534,9 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", "windows-sys", @@ -1573,7 +1549,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3932e82d64d347a045208924002930dc105a138995ccdc1479d0f05f0359f17c" dependencies = [ "crunchy 0.2.2", - "fixed-hash", + "fixed-hash 0.3.2", "impl-rlp", "impl-serde", "tiny-keccak 1.5.0", @@ -1588,8 +1564,8 @@ dependencies = [ "crunchy 0.2.2", "ethbloom", "ethereum-types-serialize", - "fixed-hash", - "serde 1.0.188", + "fixed-hash 0.3.2", + "serde 1.0.195", "uint 0.5.0", ] @@ -1599,7 +1575,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1873d77b32bc1891a79dad925f2acbc318ee942b38b9110f9dbc5fbeffcea350" dependencies = [ - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1641,6 +1617,15 @@ dependencies = [ "static_assertions 0.2.5", ] +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "static_assertions 1.1.0", +] + [[package]] name = "flex-error" version = "0.4.4" @@ -1677,9 +1662,9 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generator-controller" version = "1.3.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -1718,9 +1703,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -1773,7 +1758,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" dependencies = [ - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1800,7 +1785,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" dependencies = [ - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -1811,17 +1796,17 @@ checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" [[package]] name = "injective-cosmwasm" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4feaba1e0816808642abaed4eb369799c863a759f77bb71a15daca076d9874" +checksum = "53b6f08b14a23696948d51ba6a050382cbc6e23522efec3ca607a5b1a317de0c" dependencies = [ "cosmwasm-std", - "cw-storage-plus 0.15.1", + "cw-storage-plus 1.2.0", "ethereum-types", "hex", - "injective-math", + "injective-math 0.2.4", "schemars", - "serde 1.0.188", + "serde 1.0.195", "serde_repr", "subtle-encoding", "tiny-keccak 1.5.0", @@ -1837,25 +1822,39 @@ dependencies = [ "cosmwasm-std", "ethereum-types", "schemars", - "serde 1.0.188", + "serde 1.0.195", + "subtle-encoding", +] + +[[package]] +name = "injective-math" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db4e31ffb7dff274e0be1117bc8f1240f6572d6157be2c4daf13ff82eaaddd85" +dependencies = [ + "cosmwasm-std", + "ethereum-types", + "primitive-types", + "schemars", + "serde 1.0.195", "subtle-encoding", ] [[package]] name = "injective-testing" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980b8e23acb5310a44ea725fe05c15ba01d3e00bbb3725076373ae27111efa3d" +checksum = "49dc1d881d0b7726745ed776a87d1e6f93e877d2d5ebd0fe8be759f5424a091a" dependencies = [ "anyhow", "base64 0.13.1", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", "injective-cosmwasm", - "injective-math", + "injective-math 0.2.4", "rand 0.4.6", "secp256k1", - "serde 1.0.188", + "serde 1.0.195", "tiny-keccak 1.5.0", ] @@ -1888,9 +1887,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "k256" @@ -1906,16 +1905,16 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", - "ecdsa 0.16.8", - "elliptic-curve 0.13.6", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", "once_cell", "sha2 0.10.8", - "signature 2.1.0", + "signature 2.2.0", ] [[package]] @@ -1926,9 +1925,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.149" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libm" @@ -1938,15 +1937,15 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "linux-raw-sys" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -2065,9 +2064,9 @@ checksum = "4eae0151b9dacf24fcc170d9995e511669a082856a91f958a2fe380bfab3fb22" [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" @@ -2087,7 +2086,7 @@ dependencies = [ "prost 0.11.9", "prost-types", "schemars", - "serde 1.0.188", + "serde 1.0.195", "serde-cw-value", ] @@ -2116,15 +2115,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -2150,57 +2149,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ "der 0.7.8", - "spki 0.7.2", + "spki 0.7.3", ] [[package]] -name = "ppv-lite86" -version = "0.2.17" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "ppv-lite86" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "primitive-types" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "fixed-hash 0.8.0", + "uint 0.9.5", ] [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.0", + "bitflags 2.4.1", "lazy_static", "num-traits", "rand 0.8.5", @@ -2364,9 +2355,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2478,18 +2469,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rfc6979" @@ -2529,17 +2520,17 @@ checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustc-serialize" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" +checksum = "fe834bc780604f4674073badbad26d7219cadfb4a2275802db12cbae17498401" [[package]] name = "rustix" -version = "0.38.18" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a74ee2d7c2581cd139b42447d7d9389b889bdaad3a73f1ebb16f2a3237bb19c" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "errno", "libc", "linux-raw-sys", @@ -2560,27 +2551,27 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "schemars" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", - "serde 1.0.188", - "serde_json 1.0.107", + "serde 1.0.195", + "serde_json 1.0.111", ] [[package]] name = "schemars_derive" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -2639,9 +2630,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "serde" @@ -2654,9 +2645,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.188" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] @@ -2667,7 +2658,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75d32da6b8ed758b7d850b6c3c08f1d7df51a4df3cb201296e63e34a78e99d4" dependencies = [ - "serde 1.0.188", + "serde 1.0.195", ] [[package]] @@ -2676,27 +2667,27 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16a62a1fad1e1828b24acac8f2b468971dade7b8c3c2e672bcadefefb1f8c137" dependencies = [ - "serde 1.0.188", + "serde 1.0.195", ] [[package]] name = "serde_bytes" -version = "0.11.12" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" dependencies = [ - "serde 1.0.188", + "serde 1.0.195", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.48", ] [[package]] @@ -2722,24 +2713,24 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "itoa", "ryu", - "serde 1.0.188", + "serde 1.0.195", ] [[package]] name = "serde_repr" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" +checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.48", ] [[package]] @@ -2778,9 +2769,9 @@ dependencies = [ [[package]] name = "signature" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", "rand_core 0.6.4", @@ -2796,9 +2787,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "2593d31f82ead8df961d8bd23a64c2ccf2eb5dd34b0a34bfb4dd54011c72009e" [[package]] name = "snafu" @@ -2833,9 +2824,9 @@ dependencies = [ [[package]] name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der 0.7.8", @@ -2881,9 +2872,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -2892,15 +2883,15 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.11" +version = "0.12.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" +checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" [[package]] name = "tempfile" -version = "3.8.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if", "fastrand", @@ -2921,7 +2912,7 @@ dependencies = [ "num-traits", "prost 0.11.9", "prost-types", - "serde 1.0.188", + "serde 1.0.195", "serde_bytes", "subtle-encoding", "time", @@ -2929,66 +2920,65 @@ dependencies = [ [[package]] name = "test-case" -version = "3.2.1" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f1e820b7f1d95a0cdbf97a5df9de10e1be731983ab943e56703ac1b8e9d425" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" dependencies = [ "test-case-macros", ] [[package]] name = "test-case-core" -version = "3.2.1" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c25e2cb8f5fcd7318157634e8838aa6f7e4715c96637f969fabaccd1ef5462" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" dependencies = [ "cfg-if", - "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.48", ] [[package]] name = "test-case-macros" -version = "3.2.1" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37cfd7bbc88a0104e304229fba519bdc45501a30b760fb72240342f1289ad257" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.48", "test-case-core", ] [[package]] name = "thiserror" -version = "1.0.49" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.49" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.48", ] [[package]] name = "time" -version = "0.3.29" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" +checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" dependencies = [ "deranged", + "powerfmt", "time-core", "time-macros", ] @@ -3001,9 +2991,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" dependencies = [ "time-core", ] @@ -3085,7 +3075,7 @@ dependencies = [ "cw-storage-plus 0.11.1", "cw20 0.11.1", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -3098,7 +3088,7 @@ dependencies = [ "cw-storage-plus 0.11.1", "cw20 0.11.1", "schemars", - "serde 1.0.188", + "serde 1.0.195", "valkyrie", ] @@ -3113,7 +3103,7 @@ dependencies = [ "cw20 0.11.1", "cw20-base 0.11.1", "schemars", - "serde 1.0.188", + "serde 1.0.195", "thiserror", ] @@ -3126,9 +3116,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "voting-escrow" version = "1.3.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -3141,9 +3131,9 @@ dependencies = [ [[package]] name = "voting-escrow-delegation" version = "1.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#19cf042770a787414a1966b321e05eb2548c7c16" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport-governance 1.4.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -3193,11 +3183,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.0", ] [[package]] @@ -3206,13 +3196,28 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -3221,44 +3226,86 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + [[package]] name = "zeroize" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" diff --git a/Cargo.toml b/Cargo.toml index b791b2935..a951c2214 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,13 +7,11 @@ members = [ "contracts/pair_stable", "contracts/pair_concentrated", "contracts/pair_concentrated_inj", - "contracts/pair_astro_xastro", "contracts/router", "contracts/token", "contracts/whitelist", "contracts/cw20_ics20", "templates/*", - "contracts/tokenomics/cw20_tf_converter", "contracts/tokenomics/generator", "contracts/tokenomics/maker", "contracts/tokenomics/staking", diff --git a/contracts/periphery/tokenfactory_tracker/src/query.rs b/contracts/periphery/tokenfactory_tracker/src/query.rs index 1d85cd096..b2b06c0b0 100644 --- a/contracts/periphery/tokenfactory_tracker/src/query.rs +++ b/contracts/periphery/tokenfactory_tracker/src/query.rs @@ -1,5 +1,6 @@ #[cfg(not(feature = "library"))] -use cosmwasm_std::{entry_point, to_binary, Binary, Deps, Env, Order, StdResult, Uint128, Uint64}; +use cosmwasm_std::entry_point; +use cosmwasm_std::{to_binary, Binary, Deps, Env, Order, StdResult, Uint128, Uint64}; use cw_storage_plus::Bound; use astroport::tokenfactory_tracker::QueryMsg; diff --git a/contracts/tokenomics/cw20_tf_converter/.cargo/config b/contracts/tokenomics/cw20_tf_converter/.cargo/config deleted file mode 100644 index f1bf3f596..000000000 --- a/contracts/tokenomics/cw20_tf_converter/.cargo/config +++ /dev/null @@ -1,6 +0,0 @@ -[alias] -wasm = "build --release --lib --target wasm32-unknown-unknown" -wasm-debug = "build --lib --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --bin schema" \ No newline at end of file diff --git a/contracts/tokenomics/cw20_tf_converter/Cargo.toml b/contracts/tokenomics/cw20_tf_converter/Cargo.toml deleted file mode 100644 index 776815fe3..000000000 --- a/contracts/tokenomics/cw20_tf_converter/Cargo.toml +++ /dev/null @@ -1,40 +0,0 @@ -[package] -name = "astroport-cw20-tf-converter" -version = "1.0.0" -authors = ["Astroport"] -edition = "2021" -description = "Converts CW20 tokens to TokenFactory tokens" -license = "GPL-3.0" - -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -# for quicker tests, cargo test --lib -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] -library = [] - -[dependencies] -cw2 = "1.0.1" -cw20 = "0.15" -cosmwasm-schema = "1.1.0" -cosmwasm-std = { version = "1.1", features = ["iterator", "ibc3"] } -cw-storage-plus = "0.15" -schemars = "0.8.12" -astroport = { path = "../../../packages/astroport", version = "3" } -serde = { version = "1.0.164", default-features = false, features = ["derive"] } -thiserror = "1.0.40" -serde-json-wasm = "0.5.1" - -[dev-dependencies] -cw-multi-test = "0.16.5" -anyhow = "1.0" diff --git a/contracts/tokenomics/cw20_tf_converter/README.md b/contracts/tokenomics/cw20_tf_converter/README.md deleted file mode 100644 index fb237406a..000000000 --- a/contracts/tokenomics/cw20_tf_converter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# CW20 ASTRO to TokenFactory converter - -This contract receives CW20 ASTRO (on Terra) or IBC'd ASTRO on other chains to returns the TokenFactory version at a 1:1 ratio \ No newline at end of file diff --git a/contracts/tokenomics/cw20_tf_converter/src/contract.rs b/contracts/tokenomics/cw20_tf_converter/src/contract.rs deleted file mode 100644 index bf0092059..000000000 --- a/contracts/tokenomics/cw20_tf_converter/src/contract.rs +++ /dev/null @@ -1,36 +0,0 @@ -use cosmwasm_std::{entry_point, DepsMut, Env, MessageInfo, Response}; -use cw2::set_contract_version; - -use astroport::cw20_tf_converter::{Config, InstantiateMsg, MigrateMsg}; - -use crate::{error::ContractError, state::CONFIG}; - -/// Contract name that is used for migration. -const CONTRACT_NAME: &str = "astroport-hub"; -/// Contract version that is used for migration. -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); - -/// Instantiates the contract, storing the config and querying the staking contract. -/// Returns a `Response` object on successful execution or a `ContractError` on failure. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - deps: DepsMut, - _env: Env, - _info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - let config = Config { - owner: deps.api.addr_validate(&msg.owner)?, - }; - CONFIG.save(deps.storage, &config)?; - - Ok(Response::default()) -} - -/// Migrates the contract to a new version. -#[entry_point] -pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { - Err(ContractError::MigrationError {}) -} diff --git a/contracts/tokenomics/cw20_tf_converter/src/error.rs b/contracts/tokenomics/cw20_tf_converter/src/error.rs deleted file mode 100644 index b1bb819b8..000000000 --- a/contracts/tokenomics/cw20_tf_converter/src/error.rs +++ /dev/null @@ -1,70 +0,0 @@ -use cosmwasm_std::{OverflowError, StdError}; -use serde_json_wasm::de::Error as SerdeError; -use thiserror::Error; - -/// This enum describes Hub's contract errors -#[derive(Error, Debug, PartialEq)] -pub enum ContractError { - #[error("{0}")] - Std(#[from] StdError), - - #[error("Unable to parse: {0}")] - ParseError(#[from] std::num::ParseIntError), - - #[error("Contract can't be migrated!")] - MigrationError {}, - - #[error("Unauthorized")] - Unauthorized {}, - - #[error("You can not send 0 tokens")] - ZeroAmount {}, - - #[error("Insufficient funds held for the action")] - InsufficientFunds {}, - - #[error("The provided address does not have any funds")] - NoFunds {}, - - #[error("Voting power exceeds channel balance")] - InvalidVotingPower {}, - - #[error("The action {} is not allowed via an IBC memo", action)] - NotMemoAction { action: String }, - - #[error( - "The action {} is not allowed via IBC and must be actioned via a tranfer memo", - action - )] - NotIBCAction { action: String }, - - #[error("Memo does not conform to the expected format: {}", reason)] - InvalidMemo { reason: SerdeError }, - - #[error("Memo was not intended for the hook contract")] - InvalidDestination {}, - - #[error("Got a submessage reply with unknown id: {id}")] - UnknownReplyId { id: u64 }, - - #[error("Invalid submessage {0}", reason)] - InvalidSubmessage { reason: String }, - - #[error("Outpost already added, remove it first: {0}", address)] - OutpostAlreadyAdded { address: String }, - - #[error("No Outpost found that matches the message channels")] - UnknownOutpost {}, - - #[error("Invalid IBC timeout: {timeout}, must be between {min} and {max} seconds")] - InvalidIBCTimeout { timeout: u64, min: u64, max: u64 }, - - #[error("Channel already established: {channel_id}")] - ChannelAlreadyEstablished { channel_id: String }, -} - -impl From for ContractError { - fn from(o: OverflowError) -> Self { - StdError::from(o).into() - } -} diff --git a/contracts/tokenomics/cw20_tf_converter/src/execute.rs b/contracts/tokenomics/cw20_tf_converter/src/execute.rs deleted file mode 100644 index 4d8d5bab7..000000000 --- a/contracts/tokenomics/cw20_tf_converter/src/execute.rs +++ /dev/null @@ -1,19 +0,0 @@ -use astroport::cw20_tf_converter::ExecuteMsg; -use cosmwasm_std::{ - entry_point, from_binary, to_binary, Addr, DepsMut, Env, MessageInfo, Response, StdError, - StdResult, SubMsg, WasmMsg, -}; -use cw20::{Cw20ExecuteMsg, Cw20ReceiveMsg}; - -use crate::error::ContractError; - -/// Exposes all the execute functions available in the contract. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - Ok(Response::default()) -} diff --git a/contracts/tokenomics/cw20_tf_converter/src/lib.rs b/contracts/tokenomics/cw20_tf_converter/src/lib.rs deleted file mode 100644 index 512e6c212..000000000 --- a/contracts/tokenomics/cw20_tf_converter/src/lib.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod contract; -pub mod error; -pub mod execute; -pub mod query; -pub mod state; diff --git a/contracts/tokenomics/cw20_tf_converter/src/query.rs b/contracts/tokenomics/cw20_tf_converter/src/query.rs deleted file mode 100644 index 53cf77037..000000000 --- a/contracts/tokenomics/cw20_tf_converter/src/query.rs +++ /dev/null @@ -1,11 +0,0 @@ -use astroport::cw20_tf_converter::QueryMsg; -#[cfg(not(feature = "library"))] -use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Addr, Binary, Deps, Env, Order, StdResult, Uint128}; -use cw_storage_plus::Bound; - -/// Expose available contract queries. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { - to_binary("todo") -} diff --git a/contracts/tokenomics/cw20_tf_converter/src/state.rs b/contracts/tokenomics/cw20_tf_converter/src/state.rs deleted file mode 100644 index 3d8966b95..000000000 --- a/contracts/tokenomics/cw20_tf_converter/src/state.rs +++ /dev/null @@ -1,10 +0,0 @@ -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Addr, Deps, Order, StdError, StdResult, Storage, Uint128}; -use cw_storage_plus::{Bound, Item, Map}; - -use astroport::{common::OwnershipProposal, cw20_tf_converter::Config}; - -use crate::error::ContractError; - -/// Stores the contract config -pub const CONFIG: Item = Item::new("config"); diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index 9d969b7db..98085b6aa 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -1,23 +1,22 @@ -use astroport::tokenfactory_tracker::{block_before_send, track_before_send, SudoMsg}; use cosmwasm_std::{ attr, coin, entry_point, to_binary, BankMsg, Binary, CosmosMsg, Deps, DepsMut, Env, - MessageInfo, Reply, ReplyOn, Response, StdError, StdResult, SubMsg, Uint128, WasmMsg, + MessageInfo, Reply, ReplyOn, Response, StdResult, SubMsg, Uint128, }; +use cw2::set_contract_version; +use cw_utils::must_pay; use osmosis_std::types::cosmos::bank::v1beta1::{DenomUnit, Metadata}; use osmosis_std::types::osmosis::tokenfactory::v1beta1::{ MsgBurn, MsgCreateDenom, MsgMint, MsgSetBeforeSendHook, MsgSetDenomMetadata, }; -use crate::error::ContractError; -use crate::state::{Config, CONFIG}; +use astroport::querier::query_balance; use astroport::staking::{ ConfigResponse, ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg, StakingResponse, }; -// use astroport::tokenfactory_tracker::InstantiateMsg as TrackerInstantiateMsg; -use cw2::set_contract_version; -use cw_utils::{must_pay, parse_instantiate_response_data}; +use astroport::tokenfactory_tracker::{track_before_send, SudoMsg}; -use astroport::querier::query_balance; +use crate::error::ContractError; +use crate::state::{Config, CONFIG}; /// Contract name that is used for migration. const CONTRACT_NAME: &str = "astroport-staking"; diff --git a/contracts/tokenomics/staking/tests/integration.rs b/contracts/tokenomics/staking/tests/integration.rs index 762454f84..a7f2d6b89 100644 --- a/contracts/tokenomics/staking/tests/integration.rs +++ b/contracts/tokenomics/staking/tests/integration.rs @@ -78,6 +78,7 @@ fn test_instantiate_tokenfactory() { let msg = InstantiateMsg { owner: owner.to_string(), deposit_token_denom: ASTRO_DENOM.to_string(), + tracking_code_id: 0, // TODO: store tracker code id }; let staking_instance = app .instantiate_contract( diff --git a/packages/astroport/src/cw20_tf_converter.rs b/packages/astroport/src/cw20_tf_converter.rs deleted file mode 100644 index 3d145500c..000000000 --- a/packages/astroport/src/cw20_tf_converter.rs +++ /dev/null @@ -1,35 +0,0 @@ -use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{Addr, Uint128, Uint64}; -use cw20::Cw20ReceiveMsg; - -/// Holds the parameters used for creating a conversion contract -#[cw_serde] -pub struct InstantiateMsg { - /// The contract owner - pub owner: String, -} - -/// The contract migration message -/// We currently take no arguments for migrations -#[cw_serde] -pub struct MigrateMsg {} - -/// Describes the execute messages available in the contract -#[cw_serde] -pub enum ExecuteMsg {} - -/// Messages handled via CW20 transfers -#[cw_serde] -pub enum Cw20HookMsg {} - -/// Describes the query messages available in the contract -#[cw_serde] -#[derive(QueryResponses)] -pub enum QueryMsg {} - -/// The config of the conversion contract -#[cw_serde] -pub struct Config { - /// The owner of the contract - pub owner: Addr, -} diff --git a/packages/astroport/src/lib.rs b/packages/astroport/src/lib.rs index 2b11c63a1..f06847437 100644 --- a/packages/astroport/src/lib.rs +++ b/packages/astroport/src/lib.rs @@ -2,7 +2,6 @@ pub mod asset; pub mod common; pub mod cosmwasm_ext; pub mod cw20_ics20; -pub mod cw20_tf_converter; pub mod factory; pub mod fee_granter; pub mod generator; diff --git a/packages/astroport/src/tokenfactory_tracker.rs b/packages/astroport/src/tokenfactory_tracker.rs index 4281dbb7d..c477d6e6e 100644 --- a/packages/astroport/src/tokenfactory_tracker.rs +++ b/packages/astroport/src/tokenfactory_tracker.rs @@ -1,7 +1,13 @@ -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{ - attr, Addr, Api, Coin, CustomQuery, DepsMut, Env, MessageInfo, Response, StdError, StdResult, -}; +use cosmwasm_schema::{cw_serde, QueryResponses}; +use cosmwasm_std::{Coin, CustomQuery, DepsMut, Env, Response, StdResult, Uint128, Uint64}; + +#[cw_serde] +pub struct InstantiateMsg { + // The address of the token factory module + pub tokenfactory_module_address: String, + // The denom of the token being tracked + pub tracked_denom: String, +} #[cw_serde] pub enum SudoMsg { @@ -27,6 +33,18 @@ pub enum SudoMsg { }, } +#[cw_serde] +#[derive(QueryResponses)] +pub enum QueryMsg { + #[returns(Uint128)] + BalanceAt { + address: String, + timestamp: Option, + }, + #[returns(Uint128)] + TotalSupplyAt { timestamp: Option }, +} + // Sudo endpoint called by chain before sending tokens // Errors returned by this endpoint will prevent the transaction from being sent pub fn block_before_send( diff --git a/packages/astroport_mocks/src/staking.rs b/packages/astroport_mocks/src/staking.rs index d06f7d8da..7adc56f01 100644 --- a/packages/astroport_mocks/src/staking.rs +++ b/packages/astroport_mocks/src/staking.rs @@ -1,14 +1,15 @@ use std::fmt::Debug; -use astroport::{ - staking::{ConfigResponse, Cw20HookMsg, InstantiateMsg, QueryMsg}, - token::ExecuteMsg, -}; use cosmwasm_std::{to_binary, Addr, Api, CustomQuery, Storage, Uint128}; use cw_multi_test::{Bank, ContractWrapper, Distribution, Executor, Gov, Ibc, Module, Staking}; use schemars::JsonSchema; use serde::de::DeserializeOwned; +use astroport::{ + staking::{ConfigResponse, InstantiateMsg, QueryMsg}, + token::ExecuteMsg, +}; + use crate::{ astroport_address, token::MockTokenOpt, MockToken, MockTokenBuilder, WKApp, ASTROPORT, }; @@ -90,9 +91,8 @@ where astroport, &InstantiateMsg { owner: ASTROPORT.to_owned(), - marketing: None, - token_code_id, - deposit_token_addr: astro_token.address.to_string(), + deposit_token_denom: "".to_string(), + tracking_code_id: 0, }, &[], "Astroport Staking", @@ -135,7 +135,7 @@ where MockToken { app: self.app.clone(), - address: config.deposit_token_addr, + address: Addr::unchecked(config.deposit_denom), } } @@ -148,7 +148,7 @@ where astro_token.address, &ExecuteMsg::Send { amount, - msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), + msg: to_binary(&()).unwrap(), contract: self.address.to_string(), }, &[], @@ -166,7 +166,7 @@ where MockToken { app: self.app.clone(), - address: config.share_token_addr, + address: Addr::unchecked(config.share_denom), } } @@ -179,7 +179,7 @@ where xastro_token.address, &ExecuteMsg::Send { amount, - msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), + msg: to_binary(&()).unwrap(), contract: self.address.to_string(), }, &[], From f35b9f79b283ebfbd34ae2509108b0bc59bb0791 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Tue, 16 Jan 2024 16:37:12 +0400 Subject: [PATCH 32/84] post merge adjustments --- Cargo.lock | 117 ++++++++++++++---- Cargo.toml | 2 +- .../tokenfactory_tracker/src/contract.rs | 18 +-- .../tokenfactory_tracker/src/query.rs | 6 +- contracts/tokenomics/staking/src/contract.rs | 7 +- .../tokenomics/staking/tests/common/helper.rs | 4 +- .../tokenomics/staking/tests/integration.rs | 76 ++++++------ packages/astroport_mocks/src/staking.rs | 4 +- 8 files changed, 149 insertions(+), 85 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4eab41ace..f245fd2bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -107,7 +107,7 @@ dependencies = [ "cw-storage-plus 0.15.1", "cw2 0.15.1", "itertools 0.10.5", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -128,7 +128,7 @@ dependencies = [ "cw20 0.15.1", "itertools 0.10.5", "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -174,7 +174,7 @@ dependencies = [ "cw721-base", "generator-controller", "generator-proxy-to-vkr", - "protobuf", + "protobuf 2.28.0", "thiserror", "valkyrie", "valkyrie-lp-staking", @@ -414,26 +414,7 @@ dependencies = [ "integer-sqrt", "proptest", "prost 0.11.9", - "protobuf", - "thiserror", -] - -[[package]] -name = "astroport-pair-astro-xastro" -version = "1.0.3" -dependencies = [ - "astroport 3.8.0", - "astroport-factory 1.7.0", - "astroport-pair-bonded", - "astroport-staking", - "astroport-token", - "astroport-xastro-token", - "cosmwasm-schema", - "cosmwasm-std", - "cw-multi-test 0.15.1", - "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", + "protobuf 2.28.0", "thiserror", ] @@ -607,19 +588,22 @@ dependencies = [ [[package]] name = "astroport-staking" -version = "1.1.0" +version = "2.0.0" dependencies = [ + "anyhow", "astroport 3.8.0", "astroport-token", "astroport-xastro-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", + "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_cozy_fork)", "cw-storage-plus 0.15.1", "cw-utils 1.0.3", "cw2 0.15.1", - "cw20 0.15.1", - "protobuf", + "derivative", + "itertools 0.11.0", + "osmosis-std", + "protobuf 3.2.0", "thiserror", ] @@ -636,6 +620,18 @@ dependencies = [ "snafu", ] +[[package]] +name = "astroport-tokenfactory-tracker" +version = "1.0.0" +dependencies = [ + "astroport 3.8.0", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 1.2.0", + "cw2 1.1.2", + "thiserror", +] + [[package]] name = "astroport-vesting" version = "1.3.2" @@ -821,6 +817,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "num-traits", +] + [[package]] name = "cloudabi" version = "0.0.3" @@ -2006,6 +2011,35 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "osmosis-std" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d7aa053bc3fad557ac90a0377688b400c395e2537f0f1de3293a15cad2e970" +dependencies = [ + "chrono", + "cosmwasm-std", + "osmosis-std-derive", + "prost 0.11.9", + "prost-types", + "schemars", + "serde", + "serde-cw-value", +] + +[[package]] +name = "osmosis-std-derive" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5ebdfd1bc8ed04db596e110c6baa9b174b04f6ed1ec22c666ddc5cb3fa91bd7" +dependencies = [ + "itertools 0.10.5", + "proc-macro2", + "prost-types", + "quote", + "syn 1.0.109", +] + [[package]] name = "parking_lot" version = "0.12.1" @@ -2201,6 +2235,26 @@ dependencies = [ "bytes", ] +[[package]] +name = "protobuf" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55bad9126f378a853655831eb7363b7b01b81d19f8cb1218861086ca4a1a61e" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror", +] + +[[package]] +name = "protobuf-support" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d4d7b8601c814cfb36bcebb79f0e61e45e1e93640cf778837833bbed05c372" +dependencies = [ + "thiserror", +] + [[package]] name = "pyo3" version = "0.18.3" @@ -2504,6 +2558,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-cw-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75d32da6b8ed758b7d850b6c3c08f1d7df51a4df3cb201296e63e34a78e99d4" +dependencies = [ + "serde", +] + [[package]] name = "serde-json-wasm" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index 3bc4026f4..a57342ed2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ members = [ "contracts/pair_concentrated", "contracts/pair_transmuter", # "contracts/pair_concentrated_inj", TODO: rewrite OB liquidity deployment - "contracts/pair_astro_xastro", + # "contracts/pair_astro_xastro", # unused "contracts/router", "contracts/token", "contracts/whitelist", diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index 1db988cc8..e32ee7daf 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -117,7 +117,7 @@ mod tests { use cosmwasm_std::{ testing::{mock_dependencies, mock_env, mock_info}, - to_binary, Coin, Uint128, Uint64, + to_json_binary, Coin, Uint128, Uint64, }; use crate::query::query; @@ -222,7 +222,7 @@ mod tests { }, ) .unwrap(); - assert_eq!(balance, to_binary(&expected_user1_balance).unwrap()); + assert_eq!(balance, to_json_binary(&expected_user1_balance).unwrap()); let balance = query( deps.as_ref(), @@ -233,7 +233,7 @@ mod tests { }, ) .unwrap(); - assert_eq!(balance, to_binary(&expected_user2_balance).unwrap()); + assert_eq!(balance, to_json_binary(&expected_user2_balance).unwrap()); let balance = query( deps.as_ref(), @@ -244,7 +244,7 @@ mod tests { }, ) .unwrap(); - assert_eq!(balance, to_binary(&expected_user3_balance).unwrap()); + assert_eq!(balance, to_json_binary(&expected_user3_balance).unwrap()); let balance = query( deps.as_ref(), @@ -255,7 +255,7 @@ mod tests { }, ) .unwrap(); - assert_eq!(balance, to_binary(&expected_user3_balance).unwrap()); + assert_eq!(balance, to_json_binary(&expected_user3_balance).unwrap()); let balance = query( deps.as_ref(), @@ -266,7 +266,7 @@ mod tests { }, ) .unwrap(); - assert_eq!(balance, to_binary(&expected_user4_balance).unwrap()); + assert_eq!(balance, to_json_binary(&expected_user4_balance).unwrap()); let balance = query( deps.as_ref(), @@ -276,7 +276,7 @@ mod tests { }, ) .unwrap(); - assert_eq!(balance, to_binary(&expected_total_supply).unwrap()); + assert_eq!(balance, to_json_binary(&expected_total_supply).unwrap()); let balance = query( deps.as_ref(), @@ -284,7 +284,7 @@ mod tests { astroport::tokenfactory_tracker::QueryMsg::TotalSupplyAt { timestamp: None }, ) .unwrap(); - assert_eq!(balance, to_binary(&expected_total_supply).unwrap()); + assert_eq!(balance, to_json_binary(&expected_total_supply).unwrap()); } #[test] @@ -338,6 +338,6 @@ mod tests { }, ) .unwrap(); - assert_eq!(balance, to_binary(&Uint128::zero()).unwrap()); + assert_eq!(balance, to_json_binary(&Uint128::zero()).unwrap()); } } diff --git a/contracts/periphery/tokenfactory_tracker/src/query.rs b/contracts/periphery/tokenfactory_tracker/src/query.rs index b2b06c0b0..8fe5f5d6f 100644 --- a/contracts/periphery/tokenfactory_tracker/src/query.rs +++ b/contracts/periphery/tokenfactory_tracker/src/query.rs @@ -1,6 +1,6 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, Env, Order, StdResult, Uint128, Uint64}; +use cosmwasm_std::{to_json_binary, Binary, Deps, Env, Order, StdResult, Uint128, Uint64}; use cw_storage_plus::Bound; use astroport::tokenfactory_tracker::QueryMsg; @@ -10,12 +10,12 @@ use crate::state::{BALANCES, TOTAL_SUPPLY_HISTORY}; #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::BalanceAt { address, timestamp } => to_binary(&balance_at( + QueryMsg::BalanceAt { address, timestamp } => to_json_binary(&balance_at( deps, address, timestamp.unwrap_or_else(|| Uint64::from(env.block.time.seconds())), )?), - QueryMsg::TotalSupplyAt { timestamp } => to_binary(&total_supply_at( + QueryMsg::TotalSupplyAt { timestamp } => to_json_binary(&total_supply_at( deps, timestamp.unwrap_or_else(|| Uint64::from(env.block.time.seconds())), )?), diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index dba243e6c..c7bf78012 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -253,7 +253,7 @@ fn execute_enter(deps: DepsMut, env: Env, info: MessageInfo) -> Result Result StdResult { share_tracking_address: config.tracking_contract_address, })?), QueryMsg::TotalShares {} => { - to_json_binary(&query_supply(&deps.querier, &config.xastro_token_addr)?) + // to_json_binary(&query_supply(&deps.querier, &config.xastro_token_addr)?) + todo!("TotalShares query not implemented") } QueryMsg::TotalDeposit {} => to_json_binary(&query_balance( &deps.querier, diff --git a/contracts/tokenomics/staking/tests/common/helper.rs b/contracts/tokenomics/staking/tests/common/helper.rs index 688dc91bd..8434a4b1e 100644 --- a/contracts/tokenomics/staking/tests/common/helper.rs +++ b/contracts/tokenomics/staking/tests/common/helper.rs @@ -21,8 +21,8 @@ use astroport::token::Cw20Coin; use cosmwasm_schema::cw_serde; use cosmwasm_std::testing::MockApi; use cosmwasm_std::{ - coin, coins, from_slice, to_binary, Addr, Coin, Decimal, Decimal256, Empty, GovMsg, IbcMsg, - IbcQuery, MemoryStorage, StdError, StdResult, Storage, Uint128, + coin, coins, from_slice, to_json_binary, Addr, Coin, Decimal, Decimal256, Empty, GovMsg, + IbcMsg, IbcQuery, MemoryStorage, StdError, StdResult, Storage, Uint128, }; use cw_multi_test::{ AddressGenerator, App, AppResponse, BankKeeper, BasicAppBuilder, Contract, ContractWrapper, diff --git a/contracts/tokenomics/staking/tests/integration.rs b/contracts/tokenomics/staking/tests/integration.rs index a7f2d6b89..88676bba9 100644 --- a/contracts/tokenomics/staking/tests/integration.rs +++ b/contracts/tokenomics/staking/tests/integration.rs @@ -4,8 +4,8 @@ use astroport::staking::{ConfigResponse, InstantiateMsg, QueryMsg}; use common::neutron_ext::NeutronStargate; use cosmwasm_schema::{schemars::JsonSchema, serde::de::DeserializeOwned}; use cosmwasm_std::{ - attr, testing::MockApi, to_binary, Addr, Api, CustomQuery, Empty, GovMsg, IbcMsg, IbcQuery, - MemoryStorage, Querier, QueryRequest, Storage, Uint128, WasmQuery, + attr, testing::MockApi, to_json_binary, Addr, Api, CustomQuery, Empty, GovMsg, IbcMsg, + IbcQuery, MemoryStorage, Querier, QueryRequest, Storage, Uint128, WasmQuery, }; use std::fmt::Debug; // use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; @@ -177,7 +177,7 @@ fn test_instantiate_tokenfactory() { // .wrap() // .query::(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: staking_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })) // .unwrap(); @@ -223,7 +223,7 @@ fn test_instantiate_tokenfactory() { // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(1000u128), // }; @@ -242,7 +242,7 @@ fn test_instantiate_tokenfactory() { // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(1001u128), // }; @@ -271,7 +271,7 @@ fn test_instantiate_tokenfactory() { // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(2u128), // }; @@ -288,7 +288,7 @@ fn test_instantiate_tokenfactory() { // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(10u128), // }; @@ -344,7 +344,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -356,7 +356,7 @@ fn test_instantiate_tokenfactory() { // // We can unstake ASTRO only by calling the xASTRO token. // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), // amount: Uint128::from(10u128), // }; @@ -373,7 +373,7 @@ fn test_instantiate_tokenfactory() { // // Tru to stake Alice's 1100 ASTRO for 1100 xASTRO // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(1100u128), // }; @@ -393,7 +393,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -409,7 +409,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -425,7 +425,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -437,7 +437,7 @@ fn test_instantiate_tokenfactory() { // // We can stake tokens only by calling the ASTRO token. // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(10u128), // }; @@ -454,7 +454,7 @@ fn test_instantiate_tokenfactory() { // // Try to unstake Alice's 10 xASTRO for 10 ASTRO // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), // amount: Uint128::from(10u128), // }; @@ -474,7 +474,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -490,7 +490,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -506,7 +506,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -522,7 +522,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -564,7 +564,7 @@ fn test_instantiate_tokenfactory() { // // enter Alice's 2000 ASTRO for 1000 xASTRO // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(2000u128), // }; @@ -584,7 +584,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -596,7 +596,7 @@ fn test_instantiate_tokenfactory() { // // Try to burn Alice's 2000 xASTRO and unstake // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), // amount: Uint128::from(2000u128), // }; @@ -654,7 +654,7 @@ fn test_instantiate_tokenfactory() { // // Stake Alice's 2000 ASTRO for 1000 xASTRO (subtract min liquid amount) // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(2000u128), // }; @@ -670,7 +670,7 @@ fn test_instantiate_tokenfactory() { // // Stake Bob's 10 ASTRO for 10 xASTRO // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(10u128), // }; @@ -685,7 +685,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -701,7 +701,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -717,7 +717,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -753,7 +753,7 @@ fn test_instantiate_tokenfactory() { // // Stake Alice's 10 ASTRO for 9 xASTRO: 10*2010/2030 = 9 // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(10u128), // }; @@ -773,7 +773,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -789,7 +789,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -801,7 +801,7 @@ fn test_instantiate_tokenfactory() { // // Burn Bob's 5 xASTRO and unstake: gets 5*2040/2019 = 5 ASTRO // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Leave {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), // amount: Uint128::from(5u128), // }; @@ -821,7 +821,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -837,7 +837,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -853,7 +853,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -869,7 +869,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -885,7 +885,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), @@ -916,7 +916,7 @@ fn test_instantiate_tokenfactory() { // // enter Alice's 2000 ASTRO for 1000 xASTRO // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), -// msg: to_binary(&Cw20HookMsg::Enter {}).unwrap(), +// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(2000u128), // }; @@ -936,7 +936,7 @@ fn test_instantiate_tokenfactory() { // let res: Result = // router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { // contract_addr: x_astro_token_instance.to_string(), -// msg: to_binary(&msg).unwrap(), +// msg: to_json_binary(&msg).unwrap(), // })); // assert_eq!( // res.unwrap(), diff --git a/packages/astroport_mocks/src/staking.rs b/packages/astroport_mocks/src/staking.rs index 7adc56f01..3edae2abd 100644 --- a/packages/astroport_mocks/src/staking.rs +++ b/packages/astroport_mocks/src/staking.rs @@ -148,7 +148,7 @@ where astro_token.address, &ExecuteMsg::Send { amount, - msg: to_binary(&()).unwrap(), + msg: to_json_binary(&()).unwrap(), contract: self.address.to_string(), }, &[], @@ -179,7 +179,7 @@ where xastro_token.address, &ExecuteMsg::Send { amount, - msg: to_binary(&()).unwrap(), + msg: to_json_binary(&()).unwrap(), contract: self.address.to_string(), }, &[], From e8f8967c05ef4dfa77c13e93da0793e4e3b1203f Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Tue, 16 Jan 2024 17:51:05 +0400 Subject: [PATCH 33/84] remove deprecated cw20_ics20 --- Cargo.toml | 1 - contracts/cw20_ics20/.cargo/config | 6 - contracts/cw20_ics20/Cargo.toml | 36 - contracts/cw20_ics20/README.md | 72 -- contracts/cw20_ics20/src/amount.rs | 66 -- contracts/cw20_ics20/src/bin/schema.rs | 11 - contracts/cw20_ics20/src/contract.rs | 735 ------------------- contracts/cw20_ics20/src/error.rs | 83 --- contracts/cw20_ics20/src/ibc.rs | 870 ----------------------- contracts/cw20_ics20/src/lib.rs | 23 - contracts/cw20_ics20/src/migrations.rs | 15 - contracts/cw20_ics20/src/msg.rs | 122 ---- contracts/cw20_ics20/src/state.rs | 112 --- contracts/cw20_ics20/src/test_helpers.rs | 126 ---- packages/astroport/src/cw20_ics20.rs | 16 - packages/astroport/src/lib.rs | 1 - 16 files changed, 2295 deletions(-) delete mode 100644 contracts/cw20_ics20/.cargo/config delete mode 100644 contracts/cw20_ics20/Cargo.toml delete mode 100644 contracts/cw20_ics20/README.md delete mode 100644 contracts/cw20_ics20/src/amount.rs delete mode 100644 contracts/cw20_ics20/src/bin/schema.rs delete mode 100644 contracts/cw20_ics20/src/contract.rs delete mode 100644 contracts/cw20_ics20/src/error.rs delete mode 100644 contracts/cw20_ics20/src/ibc.rs delete mode 100644 contracts/cw20_ics20/src/lib.rs delete mode 100644 contracts/cw20_ics20/src/migrations.rs delete mode 100644 contracts/cw20_ics20/src/msg.rs delete mode 100644 contracts/cw20_ics20/src/state.rs delete mode 100644 contracts/cw20_ics20/src/test_helpers.rs delete mode 100644 packages/astroport/src/cw20_ics20.rs diff --git a/Cargo.toml b/Cargo.toml index a57342ed2..ee16e4cb4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,6 @@ members = [ "contracts/router", "contracts/token", "contracts/whitelist", - # "contracts/cw20_ics20", # contract is being deprecated "templates/*", "contracts/tokenomics/*", "contracts/periphery/*", diff --git a/contracts/cw20_ics20/.cargo/config b/contracts/cw20_ics20/.cargo/config deleted file mode 100644 index f5174787c..000000000 --- a/contracts/cw20_ics20/.cargo/config +++ /dev/null @@ -1,6 +0,0 @@ -[alias] -wasm = "build --release --lib --target wasm32-unknown-unknown" -wasm-debug = "build --lib --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --bin schema" diff --git a/contracts/cw20_ics20/Cargo.toml b/contracts/cw20_ics20/Cargo.toml deleted file mode 100644 index 4c129dd8b..000000000 --- a/contracts/cw20_ics20/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -[package] -name = "astroport-cw20-ics20" -version = "1.1.1" -authors = ["Astroport", "Ethan Frey "] -edition = "2021" -description = "IBC Enabled contracts that receives CW20 tokens and sends them over ICS20 to a remote chain with additional memo handling" -license = "Apache-2.0" -repository = "https://github.com/CosmWasm/cw-plus" -homepage = "https://cosmwasm.com" -documentation = "https://docs.cosmwasm.com" - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -backtraces = ["cosmwasm-std/backtraces"] -# use library feature to disable all init/handle/query exports -library = [] - -[dependencies] -cosmwasm-schema = { version = "1.1.0" } -cw-utils = "1.0.1" -cw2 = "1.1.0" -cw20 = "1.1.0" -cosmwasm-std = { version = "1.1.0", features = ["stargate"] } -cw-storage-plus = "1.0.1" -cw-controllers = "1.1.0" -schemars = "0.8.1" -semver = "1" -serde = { version = "1.0.103", default-features = false, features = ["derive"] } -thiserror = { version = "1.0.23" } - -astroport = { path = "../../packages/astroport", version = "3" } - -[dev-dependencies] -cw20-ics20-original = { version = "0.13.4", package = "cw20-ics20" } diff --git a/contracts/cw20_ics20/README.md b/contracts/cw20_ics20/README.md deleted file mode 100644 index 27f84ce7a..000000000 --- a/contracts/cw20_ics20/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# CW20 ICS20 - -This is an *IBC Enabled* contract that allows us to send CW20 tokens from one chain over the standard ICS20 -protocol to the bank module of another chain. In short, it lets us send our custom CW20 tokens with IBC and use -them just like native tokens on other chains. - -It is only designed to send tokens and redeem previously sent tokens. It will not mint tokens belonging -to assets originating on the foreign chain. This is different than the Golang `ibctransfer` module, but -we properly implement ICS20 and respond with an error message... let's hope the Go side handles this correctly. - -## IBC memo handling via a hook contract - -If a memo is included in the message, we check for the existence of a hook contract handler. If an address is not set, it fails the transaction and refunds the user. If an address is set, the funds as well as the memo is forwarded for handling. Should the memo result in a failed transaction, everything is reverted and the user is refunded. - -In the absence of a memo, funds are sent as usual. - -## Workflow - -The contract starts with minimal state. It just stores a default timeout in seconds for all packets it sends. -Most importantly it binds a local IBC port to enable channel connections. - -An external party first needs to make one or more channels using this contract as one endpoint. It will use standard ics20 -unordered channels for the version negotiation. Once established, it manages a list of known channels. You can use -[ts-relayer](https://github.com/confio/ts-relayer) `ibc-setup ics20` command to create these. - -After there is at least one channel, you can send any CW20 token to this contract via the -[receiver pattern](https://github.com/CosmWasm/cw-plus/blob/master/packages/cw20/README.md#receiver). -The receive message must contain the channel to send over and the remote address to send to. It may optionally -include a custom timeout. - -## Messages - -It only accepts CW20ReceiveMsg from a cw20 contract. The data sent along with that message must be a JSON-serialized -TransferMsg: - -```rust -pub struct TransferMsg { - /// The local channel to send the packets on - pub channel: String, - /// The remote address to send to - /// Don't use HumanAddress as this will likely have a different Bech32 prefix than we use - /// and cannot be validated locally - pub remote_address: String, - /// How long the packet lives in seconds. If not specified, use default_timeout - pub timeout: Option, -} -``` - -In addition, it supports directly sending native tokens via `ExecuteMsg::Transfer(TransferMsg)`. -You must send *exactly one* coin denom along with the transfer message, and that amount will be transfered -to the remote host. - -## Queries - -Queries only make sense relative to the established channels of this contract. - -* `Port{}` - returns the port ID this contract has bound, so you can create channels. This info can be queried - via wasmd contract info query, but we expose another query here for convenience. -* `ListChannels{}` - returns a (currently unpaginated) list of all channels that have been created on this contract. - Returns their local channelId along with some basic metadata, like the remote port/channel and the connection they - run on top of. -* `Channel{id}` - returns more detailed information on one specific channel. In addition to the information available - in the list view, it returns the current outstanding balance on that channel, as well as the total amount that - has ever been sent on the channel. - -## IBC Responses - -These are defined by the ICS20 spec. - -Notably, each Channel has a balance of tokens sent over that channel. If an incoming transfer request comes in for -a denom it does not know, or for a balance larger than we have sent, we will return an error in the acknowledgement -packet. \ No newline at end of file diff --git a/contracts/cw20_ics20/src/amount.rs b/contracts/cw20_ics20/src/amount.rs deleted file mode 100644 index a0c42d9f8..000000000 --- a/contracts/cw20_ics20/src/amount.rs +++ /dev/null @@ -1,66 +0,0 @@ -use crate::error::ContractError; -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Coin, Uint128}; -use cw20::Cw20Coin; -use std::convert::TryInto; - -#[cw_serde] -pub enum Amount { - Native(Coin), - // FIXME? USe Cw20CoinVerified, and validate cw20 addresses - Cw20(Cw20Coin), -} - -impl Amount { - // TODO: write test for this - pub fn from_parts(denom: String, amount: Uint128) -> Self { - if denom.starts_with("cw20:") { - let address = denom.get(5..).unwrap().into(); - Amount::Cw20(Cw20Coin { address, amount }) - } else { - Amount::Native(Coin { denom, amount }) - } - } - - pub fn cw20(amount: u128, addr: &str) -> Self { - Amount::Cw20(Cw20Coin { - address: addr.into(), - amount: Uint128::new(amount), - }) - } - - pub fn native(amount: u128, denom: &str) -> Self { - Amount::Native(Coin { - denom: denom.to_string(), - amount: Uint128::new(amount), - }) - } -} - -impl Amount { - pub fn denom(&self) -> String { - match self { - Amount::Native(c) => c.denom.clone(), - Amount::Cw20(c) => format!("cw20:{}", c.address.as_str()), - } - } - - pub fn amount(&self) -> Uint128 { - match self { - Amount::Native(c) => c.amount, - Amount::Cw20(c) => c.amount, - } - } - - /// convert the amount into u64 - pub fn u64_amount(&self) -> Result { - Ok(self.amount().u128().try_into()?) - } - - pub fn is_empty(&self) -> bool { - match self { - Amount::Native(c) => c.amount.is_zero(), - Amount::Cw20(c) => c.amount.is_zero(), - } - } -} diff --git a/contracts/cw20_ics20/src/bin/schema.rs b/contracts/cw20_ics20/src/bin/schema.rs deleted file mode 100644 index 71eb09c4f..000000000 --- a/contracts/cw20_ics20/src/bin/schema.rs +++ /dev/null @@ -1,11 +0,0 @@ -use cosmwasm_schema::write_api; - -use astroport_cw20_ics20::msg::{ExecuteMsg, InitMsg, QueryMsg}; - -fn main() { - write_api! { - instantiate: InitMsg, - execute: ExecuteMsg, - query: QueryMsg, - } -} diff --git a/contracts/cw20_ics20/src/contract.rs b/contracts/cw20_ics20/src/contract.rs deleted file mode 100644 index a97aefac6..000000000 --- a/contracts/cw20_ics20/src/contract.rs +++ /dev/null @@ -1,735 +0,0 @@ -use astroport::asset::addr_opt_validate; -use astroport::cw20_ics20::TransferMsg; -#[cfg(not(feature = "library"))] -use cosmwasm_std::entry_point; -use cosmwasm_std::{ - from_json, to_json_binary, Addr, Binary, Deps, DepsMut, Env, IbcMsg, IbcQuery, MessageInfo, - Order, PortIdResponse, Response, StdError, StdResult, -}; -use semver::Version; - -use cw2::{get_contract_version, set_contract_version}; -use cw20::{Cw20Coin, Cw20ReceiveMsg}; -use cw_storage_plus::Bound; - -use crate::amount::Amount; -use crate::error::ContractError; -use crate::ibc::Ics20Packet; -use crate::migrations::standard_v1; -use crate::msg::{ - AllowMsg, AllowedInfo, AllowedResponse, ChannelResponse, ConfigResponse, ExecuteMsg, InitMsg, - ListAllowedResponse, ListChannelsResponse, MigrateMsg, PortResponse, QueryMsg, -}; -use crate::state::{ - increase_channel_balance, AllowInfo, Config, ADMIN, ALLOW_LIST, CHANNEL_INFO, CHANNEL_STATE, - CONFIG, -}; -use cw_utils::{maybe_addr, nonpayable, one_coin}; - -// version info for migration info -const CONTRACT_NAME: &str = "crates.io:cw20-ics20"; -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - mut deps: DepsMut, - _env: Env, - _info: MessageInfo, - msg: InitMsg, -) -> Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - let cfg = Config { - default_timeout: msg.default_timeout, - default_gas_limit: msg.default_gas_limit, - hook_addr: addr_opt_validate(deps.api, &msg.hook_addr)?, - }; - CONFIG.save(deps.storage, &cfg)?; - - let admin = deps.api.addr_validate(&msg.gov_contract)?; - ADMIN.set(deps.branch(), Some(admin))?; - - // add all allows - for allowed in msg.allowlist { - let contract = deps.api.addr_validate(&allowed.contract)?; - let info = AllowInfo { - gas_limit: allowed.gas_limit, - }; - ALLOW_LIST.save(deps.storage, &contract, &info)?; - } - Ok(Response::default()) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - match msg { - ExecuteMsg::Receive(msg) => execute_receive(deps, env, info, msg), - ExecuteMsg::Transfer(msg) => { - let coin = one_coin(&info)?; - execute_transfer(deps, env, msg, Amount::Native(coin), info.sender) - } - ExecuteMsg::Allow(allow) => execute_allow(deps, env, info, allow), - ExecuteMsg::UpdateAdmin { admin } => { - let admin = deps.api.addr_validate(&admin)?; - Ok(ADMIN.execute_update_admin(deps, info, Some(admin))?) - } - ExecuteMsg::UpdateHookAddress { new_address } => { - execute_update_hook_address(deps, info, new_address) - } - } -} - -pub fn execute_receive( - deps: DepsMut, - env: Env, - info: MessageInfo, - wrapper: Cw20ReceiveMsg, -) -> Result { - nonpayable(&info)?; - - let msg: TransferMsg = from_json(&wrapper.msg)?; - let amount = Amount::Cw20(Cw20Coin { - address: info.sender.to_string(), - amount: wrapper.amount, - }); - let api = deps.api; - execute_transfer(deps, env, msg, amount, api.addr_validate(&wrapper.sender)?) -} - -pub fn execute_transfer( - deps: DepsMut, - env: Env, - msg: TransferMsg, - amount: Amount, - sender: Addr, -) -> Result { - if amount.is_empty() { - return Err(ContractError::NoFunds {}); - } - // ensure the requested channel is registered - if !CHANNEL_INFO.has(deps.storage, &msg.channel) { - return Err(ContractError::NoSuchChannel { id: msg.channel }); - } - let config = CONFIG.load(deps.storage)?; - - // if cw20 token, validate and ensure it is whitelisted, or we set default gas limit - if let Amount::Cw20(coin) = &amount { - let addr = deps.api.addr_validate(&coin.address)?; - // if limit is set, then we always allow cw20 - if config.default_gas_limit.is_none() { - ALLOW_LIST - .may_load(deps.storage, &addr)? - .ok_or(ContractError::NotOnAllowList)?; - } - }; - - // delta from user is in seconds - let timeout_delta = match msg.timeout { - Some(t) => t, - None => config.default_timeout, - }; - // timeout is in nanoseconds - let timeout = env.block.time.plus_seconds(timeout_delta); - - // build ics20 packet - let packet = Ics20Packet::new( - amount.amount(), - amount.denom(), - sender.as_ref(), - &msg.remote_address, - ) - .with_memo(msg.memo); - packet.validate()?; - - // Update the balance now (optimistically) like ibctransfer modules. - // In on_packet_failure (ack with error message or a timeout), we reduce the balance appropriately. - // This means the channel works fine if success acks are not relayed. - increase_channel_balance(deps.storage, &msg.channel, &amount.denom(), amount.amount())?; - - // prepare ibc message - let msg = IbcMsg::SendPacket { - channel_id: msg.channel, - data: to_json_binary(&packet)?, - timeout: timeout.into(), - }; - - // send response - let res = Response::new() - .add_message(msg) - .add_attribute("action", "transfer") - .add_attribute("sender", &packet.sender) - .add_attribute("receiver", &packet.receiver) - .add_attribute("denom", &packet.denom) - .add_attribute("amount", packet.amount.to_string()); - Ok(res) -} - -/// The gov contract can allow new contracts, or increase the gas limit on existing contracts. -/// It cannot block or reduce the limit to avoid forcible sticking tokens in the channel. -pub fn execute_allow( - deps: DepsMut, - _env: Env, - info: MessageInfo, - allow: AllowMsg, -) -> Result { - ADMIN.assert_admin(deps.as_ref(), &info.sender)?; - - let contract = deps.api.addr_validate(&allow.contract)?; - let set = AllowInfo { - gas_limit: allow.gas_limit, - }; - ALLOW_LIST.update(deps.storage, &contract, |old| { - if let Some(old) = old { - // we must ensure it increases the limit - match (old.gas_limit, set.gas_limit) { - (None, Some(_)) => return Err(ContractError::CannotLowerGas), - (Some(old), Some(new)) if new < old => return Err(ContractError::CannotLowerGas), - _ => {} - }; - } - Ok(AllowInfo { - gas_limit: allow.gas_limit, - }) - })?; - - let gas = if let Some(gas) = allow.gas_limit { - gas.to_string() - } else { - "None".to_string() - }; - - let res = Response::new() - .add_attribute("action", "allow") - .add_attribute("contract", allow.contract) - .add_attribute("gas_limit", gas); - Ok(res) -} - -/// Update the hook contract address to the new one provided -/// May only be executed by the contract admin -pub fn execute_update_hook_address( - deps: DepsMut, - info: MessageInfo, - new_address: String, -) -> Result { - ADMIN.assert_admin(deps.as_ref(), &info.sender)?; - - let validated_address = deps.api.addr_validate(&new_address)?; - let mut cfg = CONFIG.load(deps.storage)?; - cfg.hook_addr = Some(validated_address); - CONFIG.save(deps.storage, &cfg)?; - - Ok(Response::default() - .add_attribute("action", "update_hook_contract") - .add_attribute("new_address", new_address)) -} - -const MIGRATE_MIN_VERSION: &str = "0.13.4"; -const MIGRATE_VERSION_ASTROPORT_V1: &str = "1.1.1"; - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(deps: DepsMut, _env: Env, msg: MigrateMsg) -> Result { - let version: Version = CONTRACT_VERSION.parse().map_err(from_semver)?; - let stored = get_contract_version(deps.storage)?; - let storage_version: Version = stored.version.parse().map_err(from_semver)?; - - // First, ensure we are working from an equal or older version of this contract - // wrong type - if CONTRACT_NAME != stored.contract { - return Err(ContractError::CannotMigrate { - previous_contract: stored.contract, - }); - } - // existing one is newer - if storage_version > version { - return Err(ContractError::CannotMigrateVersion { - previous_version: stored.version, - }); - } - - // Then, run the proper migration - if storage_version < MIGRATE_MIN_VERSION.parse().map_err(from_semver)? { - return Err(ContractError::CannotMigrateVersion { - previous_version: stored.version, - }); - } - // Run the migration from minimum v0.13.4 to our custom Astroport v1.1.1 - if storage_version <= MIGRATE_VERSION_ASTROPORT_V1.parse().map_err(from_semver)? { - let old_config = standard_v1::CONFIG.load(deps.storage)?; - let config = Config { - default_timeout: old_config.default_timeout, - default_gas_limit: old_config.default_gas_limit, - hook_addr: addr_opt_validate(deps.api, &msg.hook_addr)?, - }; - CONFIG.save(deps.storage, &config)?; - } - - // otherwise no migration (yet) - add them here - - // always allow setting the default gas limit via MigrateMsg, even if same version - // (Note this doesn't allow unsetting it now) - if msg.default_gas_limit.is_some() { - CONFIG.update(deps.storage, |mut old| -> StdResult<_> { - old.default_gas_limit = msg.default_gas_limit; - Ok(old) - })?; - } - - // we don't need to save anything if migrating from the same version - if storage_version < version { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - } - - Ok(Response::new()) -} - -fn from_semver(err: semver::Error) -> StdError { - StdError::generic_err(format!("Semver: {}", err)) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { - match msg { - QueryMsg::Port {} => to_json_binary(&query_port(deps)?), - QueryMsg::ListChannels {} => to_json_binary(&query_list(deps)?), - QueryMsg::Channel { id } => to_json_binary(&query_channel(deps, id)?), - QueryMsg::Config {} => to_json_binary(&query_config(deps)?), - QueryMsg::Allowed { contract } => to_json_binary(&query_allowed(deps, contract)?), - QueryMsg::ListAllowed { start_after, limit } => { - to_json_binary(&list_allowed(deps, start_after, limit)?) - } - QueryMsg::Admin {} => to_json_binary(&ADMIN.query_admin(deps)?), - } -} - -fn query_port(deps: Deps) -> StdResult { - let query = IbcQuery::PortId {}.into(); - let PortIdResponse { port_id } = deps.querier.query(&query)?; - Ok(PortResponse { port_id }) -} - -fn query_list(deps: Deps) -> StdResult { - let channels = CHANNEL_INFO - .range_raw(deps.storage, None, None, Order::Ascending) - .map(|r| r.map(|(_, v)| v)) - .collect::>()?; - Ok(ListChannelsResponse { channels }) -} - -// make public for ibc tests -pub fn query_channel(deps: Deps, id: String) -> StdResult { - let info = CHANNEL_INFO.load(deps.storage, &id)?; - // this returns Vec<(outstanding, total)> - let state = CHANNEL_STATE - .prefix(&id) - .range(deps.storage, None, None, Order::Ascending) - .map(|r| { - r.map(|(denom, v)| { - let outstanding = Amount::from_parts(denom.clone(), v.outstanding); - let total = Amount::from_parts(denom, v.total_sent); - (outstanding, total) - }) - }) - .collect::>>()?; - // we want (Vec, Vec) - let (balances, total_sent) = state.into_iter().unzip(); - - Ok(ChannelResponse { - info, - balances, - total_sent, - }) -} - -fn query_config(deps: Deps) -> StdResult { - let cfg = CONFIG.load(deps.storage)?; - let admin = ADMIN.get(deps)?.unwrap_or_else(|| Addr::unchecked("")); - let res = ConfigResponse { - default_timeout: cfg.default_timeout, - default_gas_limit: cfg.default_gas_limit, - gov_contract: admin.into(), - hook_addr: cfg.hook_addr, - }; - Ok(res) -} - -fn query_allowed(deps: Deps, contract: String) -> StdResult { - let addr = deps.api.addr_validate(&contract)?; - let info = ALLOW_LIST.may_load(deps.storage, &addr)?; - let res = match info { - None => AllowedResponse { - is_allowed: false, - gas_limit: None, - }, - Some(a) => AllowedResponse { - is_allowed: true, - gas_limit: a.gas_limit, - }, - }; - Ok(res) -} - -// settings for pagination -const MAX_LIMIT: u32 = 30; -const DEFAULT_LIMIT: u32 = 10; - -fn list_allowed( - deps: Deps, - start_after: Option, - limit: Option, -) -> StdResult { - let limit = limit.unwrap_or(DEFAULT_LIMIT).min(MAX_LIMIT) as usize; - let addr = maybe_addr(deps.api, start_after)?; - let start = addr.as_ref().map(Bound::exclusive); - - let allow = ALLOW_LIST - .range(deps.storage, start, None, Order::Ascending) - .take(limit) - .map(|item| { - item.map(|(addr, allow)| AllowedInfo { - contract: addr.into(), - gas_limit: allow.gas_limit, - }) - }) - .collect::>()?; - Ok(ListAllowedResponse { allow }) -} - -#[cfg(test)] -mod test { - use super::*; - use crate::test_helpers::*; - - use cosmwasm_schema::cw_serde; - use cosmwasm_std::testing::{mock_env, mock_info}; - use cosmwasm_std::{coin, coins, CosmosMsg, IbcMsg, StdError, Uint128}; - - use cw_controllers::AdminError; - use cw_utils::PaymentError; - - #[test] - fn setup_and_query() { - let deps = setup(&["channel-3", "channel-7"], &[]); - - let raw_list = query(deps.as_ref(), mock_env(), QueryMsg::ListChannels {}).unwrap(); - let list_res: ListChannelsResponse = from_json(&raw_list).unwrap(); - assert_eq!(2, list_res.channels.len()); - assert_eq!(mock_channel_info("channel-3"), list_res.channels[0]); - assert_eq!(mock_channel_info("channel-7"), list_res.channels[1]); - - let raw_channel = query( - deps.as_ref(), - mock_env(), - QueryMsg::Channel { - id: "channel-3".to_string(), - }, - ) - .unwrap(); - let chan_res: ChannelResponse = from_json(&raw_channel).unwrap(); - assert_eq!(chan_res.info, mock_channel_info("channel-3")); - assert_eq!(0, chan_res.total_sent.len()); - assert_eq!(0, chan_res.balances.len()); - - let err = query( - deps.as_ref(), - mock_env(), - QueryMsg::Channel { - id: "channel-10".to_string(), - }, - ) - .unwrap_err(); - assert_eq!( - err, - StdError::not_found("astroport_cw20_ics20::state::ChannelInfo") - ); - } - - #[test] - fn proper_checks_on_execute_native() { - let send_channel = "channel-5"; - let mut deps = setup(&[send_channel, "channel-10"], &[]); - - let mut transfer = TransferMsg { - channel: send_channel.to_string(), - remote_address: "foreign-address".to_string(), - timeout: None, - memo: None, - }; - - // works with proper funds - let msg = ExecuteMsg::Transfer(transfer.clone()); - let info = mock_info("foobar", &coins(1234567, "ucosm")); - let res = execute(deps.as_mut(), mock_env(), info, msg).unwrap(); - assert_eq!(res.messages[0].gas_limit, None); - assert_eq!(1, res.messages.len()); - if let CosmosMsg::Ibc(IbcMsg::SendPacket { - channel_id, - data, - timeout, - }) = &res.messages[0].msg - { - let expected_timeout = mock_env().block.time.plus_seconds(DEFAULT_TIMEOUT); - assert_eq!(timeout, &expected_timeout.into()); - assert_eq!(channel_id.as_str(), send_channel); - let msg: Ics20Packet = from_json(data).unwrap(); - assert_eq!(msg.amount, Uint128::new(1234567)); - assert_eq!(msg.denom.as_str(), "ucosm"); - assert_eq!(msg.sender.as_str(), "foobar"); - assert_eq!(msg.receiver.as_str(), "foreign-address"); - } else { - panic!("Unexpected return message: {:?}", res.messages[0]); - } - - // reject with no funds - let msg = ExecuteMsg::Transfer(transfer.clone()); - let info = mock_info("foobar", &[]); - let err = execute(deps.as_mut(), mock_env(), info, msg).unwrap_err(); - assert_eq!(err, ContractError::Payment(PaymentError::NoFunds {})); - - // reject with multiple tokens funds - let msg = ExecuteMsg::Transfer(transfer.clone()); - let info = mock_info("foobar", &[coin(1234567, "ucosm"), coin(54321, "uatom")]); - let err = execute(deps.as_mut(), mock_env(), info, msg).unwrap_err(); - assert_eq!(err, ContractError::Payment(PaymentError::MultipleDenoms {})); - - // reject with bad channel id - transfer.channel = "channel-45".to_string(); - let msg = ExecuteMsg::Transfer(transfer); - let info = mock_info("foobar", &coins(1234567, "ucosm")); - let err = execute(deps.as_mut(), mock_env(), info, msg).unwrap_err(); - assert_eq!( - err, - ContractError::NoSuchChannel { - id: "channel-45".to_string() - } - ); - } - - #[test] - fn proper_checks_on_execute_cw20() { - let send_channel = "channel-15"; - let cw20_addr = "my-token"; - let mut deps = setup(&["channel-3", send_channel], &[(cw20_addr, 123456)]); - - let transfer = TransferMsg { - channel: send_channel.to_string(), - remote_address: "foreign-address".to_string(), - timeout: Some(7777), - memo: None, - }; - let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { - sender: "my-account".into(), - amount: Uint128::new(888777666), - msg: to_json_binary(&transfer).unwrap(), - }); - - // works with proper funds - let info = mock_info(cw20_addr, &[]); - let res = execute(deps.as_mut(), mock_env(), info, msg.clone()).unwrap(); - assert_eq!(1, res.messages.len()); - assert_eq!(res.messages[0].gas_limit, None); - if let CosmosMsg::Ibc(IbcMsg::SendPacket { - channel_id, - data, - timeout, - }) = &res.messages[0].msg - { - let expected_timeout = mock_env().block.time.plus_seconds(7777); - assert_eq!(timeout, &expected_timeout.into()); - assert_eq!(channel_id.as_str(), send_channel); - let msg: Ics20Packet = from_json(data).unwrap(); - assert_eq!(msg.amount, Uint128::new(888777666)); - assert_eq!(msg.denom, format!("cw20:{}", cw20_addr)); - assert_eq!(msg.sender.as_str(), "my-account"); - assert_eq!(msg.receiver.as_str(), "foreign-address"); - } else { - panic!("Unexpected return message: {:?}", res.messages[0]); - } - - // reject with tokens funds - let info = mock_info("foobar", &coins(1234567, "ucosm")); - let err = execute(deps.as_mut(), mock_env(), info, msg).unwrap_err(); - assert_eq!(err, ContractError::Payment(PaymentError::NonPayable {})); - } - - #[test] - fn execute_cw20_fails_if_not_whitelisted_unless_default_gas_limit() { - let send_channel = "channel-15"; - let mut deps = setup_standard_0134(&[send_channel], &[]); - - let cw20_addr = "my-token"; - let transfer = TransferMsg { - channel: send_channel.to_string(), - remote_address: "foreign-address".to_string(), - timeout: Some(7777), - memo: None, - }; - let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { - sender: "my-account".into(), - amount: Uint128::new(888777666), - msg: to_json_binary(&transfer).unwrap(), - }); - - // rejected as not on allow list - let info = mock_info(cw20_addr, &[]); - let err = execute(deps.as_mut(), mock_env(), info.clone(), msg.clone()).unwrap_err(); - assert_eq!(err, ContractError::NotOnAllowList); - - // add a default gas limit - migrate( - deps.as_mut(), - mock_env(), - MigrateMsg { - default_gas_limit: Some(123456), - hook_addr: None, - }, - ) - .unwrap(); - - // try again - execute(deps.as_mut(), mock_env(), info, msg).unwrap(); - } - - #[test] - fn astroport_v1_migration_works() { - // basic state with one channel - let send_channel = "channel-15"; - let cw20_addr = "my-token"; - // Instantiate the original v0.13.4 contract - let mut deps = setup_standard_0134(&[send_channel], &[(cw20_addr, 123456)]); - - // pretend this is an old contract - set version explicitly - set_contract_version(deps.as_mut().storage, CONTRACT_NAME, MIGRATE_MIN_VERSION).unwrap(); - - // run migration to custom Astroport version - migrate( - deps.as_mut(), - mock_env(), - MigrateMsg { - default_gas_limit: Some(123456), - hook_addr: Some("hook_contract".to_string()), - }, - ) - .unwrap(); - - // check config updates - let config = query_config(deps.as_ref()).unwrap(); - assert_eq!(config.default_gas_limit, Some(123456)); - assert_eq!(config.hook_addr.unwrap(), "hook_contract"); - } - - fn test_with_memo(memo: &str) { - let send_channel = "channel-5"; - let mut deps = setup(&[send_channel, "channel-10"], &[]); - - let transfer = TransferMsg { - channel: send_channel.to_string(), - remote_address: "foreign-address".to_string(), - timeout: None, - memo: Some(memo.to_string()), - }; - - // works with proper funds - let msg = ExecuteMsg::Transfer(transfer); - let info = mock_info("foobar", &coins(1234567, "ucosm")); - let res = execute(deps.as_mut(), mock_env(), info, msg).unwrap(); - assert_eq!(res.messages[0].gas_limit, None); - assert_eq!(1, res.messages.len()); - if let CosmosMsg::Ibc(IbcMsg::SendPacket { - channel_id, - data, - timeout, - }) = &res.messages[0].msg - { - let expected_timeout = mock_env().block.time.plus_seconds(DEFAULT_TIMEOUT); - assert_eq!(timeout, &expected_timeout.into()); - assert_eq!(channel_id.as_str(), send_channel); - let msg: Ics20Packet = from_json(data).unwrap(); - assert_eq!(msg.amount, Uint128::new(1234567)); - assert_eq!(msg.denom.as_str(), "ucosm"); - assert_eq!(msg.sender.as_str(), "foobar"); - assert_eq!(msg.receiver.as_str(), "foreign-address"); - assert_eq!( - msg.memo - .expect("Memo was None when Some was expected") - .as_str(), - memo - ); - } else { - panic!("Unexpected return message: {:?}", res.messages[0]); - } - } - - #[test] - fn execute_with_memo_works() { - test_with_memo("memo"); - } - - #[test] - fn execute_with_empty_string_memo_works() { - test_with_memo(""); - } - - #[test] - fn memo_is_backwards_compatible() { - let mut deps = setup(&["channel-5", "channel-10"], &[]); - let transfer: TransferMsg = cosmwasm_std::from_json( - br#"{"channel": "channel-5", "remote_address": "foreign-address"}"#, - ) - .unwrap(); - - let msg = ExecuteMsg::Transfer(transfer); - let info = mock_info("foobar", &coins(1234567, "ucosm")); - let res = execute(deps.as_mut(), mock_env(), info, msg).unwrap(); - assert_eq!(1, res.messages.len()); - if let CosmosMsg::Ibc(IbcMsg::SendPacket { - channel_id: _, - data, - timeout: _, - }) = &res.messages[0].msg - { - let msg: Ics20Packet = from_json(data).unwrap(); - assert_eq!(msg.memo, None); - - // This is the old version of the Ics20Packet. Deserializing into it - // should still work as the memo isn't included - #[cw_serde] - struct Ics20PacketNoMemo { - pub amount: Uint128, - pub denom: String, - pub sender: String, - pub receiver: String, - } - - let _msg: Ics20PacketNoMemo = from_json(data).unwrap(); - } else { - panic!("Unexpected return message: {:?}", res.messages[0]); - } - } - - #[test] - fn update_hook_contract() { - let mut deps = setup(&["channel-0"], &[]); - - let msg = ExecuteMsg::UpdateHookAddress { - new_address: "new_hook_contract".to_string(), - }; - // Attempt to update while not Admin - let info = mock_info("not_admin", &coins(1234567, "ucosm")); - let res = execute(deps.as_mut(), mock_env(), info, msg.clone()).unwrap_err(); - - assert_eq!(res, ContractError::Admin(AdminError::NotAdmin {})); - - // Update while Admin - let info = mock_info("gov", &coins(1234567, "ucosm")); - execute(deps.as_mut(), mock_env(), info, msg).unwrap(); - - // Ensure new handler is set - let config = query_config(deps.as_ref()).unwrap(); - assert_eq!(config.hook_addr.unwrap(), "new_hook_contract"); - } -} diff --git a/contracts/cw20_ics20/src/error.rs b/contracts/cw20_ics20/src/error.rs deleted file mode 100644 index 3fe785037..000000000 --- a/contracts/cw20_ics20/src/error.rs +++ /dev/null @@ -1,83 +0,0 @@ -use std::num::TryFromIntError; -use std::string::FromUtf8Error; -use thiserror::Error; - -use cosmwasm_std::StdError; -use cw_controllers::AdminError; -use cw_utils::PaymentError; - -/// Never is a placeholder to ensure we don't return any errors -#[derive(Error, Debug)] -pub enum Never {} - -#[derive(Error, Debug, PartialEq)] -pub enum ContractError { - #[error("{0}")] - Std(#[from] StdError), - - #[error("{0}")] - Payment(#[from] PaymentError), - - #[error("{0}")] - Admin(#[from] AdminError), - - #[error("Channel doesn't exist: {id}")] - NoSuchChannel { id: String }, - - #[error("Didn't send any funds")] - NoFunds {}, - - #[error("Amount larger than 2**64, not supported by ics20 packets")] - AmountOverflow {}, - - #[error("Only supports channel with ibc version ics20-1, got {version}")] - InvalidIbcVersion { version: String }, - - #[error("Only supports unordered channel")] - OnlyOrderedChannel {}, - - #[error("Insufficient funds to redeem voucher on channel")] - InsufficientFunds {}, - - #[error("Only accepts tokens that originate on this chain, not native tokens of remote chain")] - NoForeignTokens {}, - - #[error("Parsed port from denom ({port}) doesn't match packet")] - FromOtherPort { port: String }, - - #[error("Parsed channel from denom ({channel}) doesn't match packet")] - FromOtherChannel { channel: String }, - - #[error("Cannot migrate from different contract type: {previous_contract}")] - CannotMigrate { previous_contract: String }, - - #[error("Cannot migrate from unsupported version: {previous_version}")] - CannotMigrateVersion { previous_version: String }, - - #[error("Got a submessage reply with unknown id: {id}")] - UnknownReplyId { id: u64 }, - - #[error("You cannot lower the gas limit for a contract on the allow list")] - CannotLowerGas, - - #[error("Only the governance contract can do this")] - Unauthorized, - - #[error("You can only send cw20 tokens that have been explicitly allowed by governance")] - NotOnAllowList, - - #[error("Memo provided but Hook contract not set")] - NoHookContract, -} - -impl From for ContractError { - fn from(_: FromUtf8Error) -> Self { - ContractError::Std(StdError::invalid_utf8("parsing denom key")) - } -} - -impl From for ContractError { - fn from(_: TryFromIntError) -> Self { - ContractError::AmountOverflow {} - } -} diff --git a/contracts/cw20_ics20/src/ibc.rs b/contracts/cw20_ics20/src/ibc.rs deleted file mode 100644 index d65d2a196..000000000 --- a/contracts/cw20_ics20/src/ibc.rs +++ /dev/null @@ -1,870 +0,0 @@ -use astroport::outpost_handler::Cw20HookMsg; -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; - -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{ - attr, entry_point, from_json, to_json_binary, BankMsg, Binary, CosmosMsg, Deps, DepsMut, Env, - IbcBasicResponse, IbcChannel, IbcChannelCloseMsg, IbcChannelConnectMsg, IbcChannelOpenMsg, - IbcEndpoint, IbcOrder, IbcPacket, IbcPacketAckMsg, IbcPacketReceiveMsg, IbcPacketTimeoutMsg, - IbcReceiveResponse, Reply, Response, SubMsg, SubMsgResult, Uint128, WasmMsg, -}; - -use crate::amount::Amount; -use crate::error::{ContractError, Never}; -use crate::state::{ - reduce_channel_balance, undo_reduce_channel_balance, ChannelInfo, ReplyArgs, ALLOW_LIST, - CHANNEL_INFO, CONFIG, REPLY_ARGS, -}; -use cw20::Cw20ExecuteMsg; - -pub const ICS20_VERSION: &str = "ics20-1"; -pub const ICS20_ORDERING: IbcOrder = IbcOrder::Unordered; - -/// The format for sending an ics20 packet. -/// Proto defined here: https://github.com/cosmos/cosmos-sdk/blob/v0.42.0/proto/ibc/applications/transfer/v1/transfer.proto#L11-L20 -/// This is compatible with the JSON serialization -#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema, Debug, Default)] -pub struct Ics20Packet { - /// amount of tokens to transfer is encoded as a string, but limited to u64 max - pub amount: Uint128, - /// the token denomination to be transferred - pub denom: String, - /// the recipient address on the destination chain - pub receiver: String, - /// the sender address - pub sender: String, - /// optional memo for the IBC transfer - #[serde(skip_serializing_if = "Option::is_none")] - pub memo: Option, -} - -impl Ics20Packet { - pub fn new>(amount: Uint128, denom: T, sender: &str, receiver: &str) -> Self { - Ics20Packet { - denom: denom.into(), - amount, - sender: sender.to_string(), - receiver: receiver.to_string(), - memo: None, - } - } - - pub fn with_memo(self, memo: Option) -> Self { - Ics20Packet { memo, ..self } - } - - pub fn validate(&self) -> Result<(), ContractError> { - if self.amount.u128() > (u64::MAX as u128) { - Err(ContractError::AmountOverflow {}) - } else { - Ok(()) - } - } -} - -/// This is a generic ICS acknowledgement format. -/// Proto defined here: https://github.com/cosmos/cosmos-sdk/blob/v0.42.0/proto/ibc/core/channel/v1/channel.proto#L141-L147 -/// This is compatible with the JSON serialization -#[cw_serde] -pub enum Ics20Ack { - Result(Binary), - Error(String), -} - -// create a serialized success message -fn ack_success() -> Binary { - let res = Ics20Ack::Result(b"1".into()); - to_json_binary(&res).unwrap() -} - -// create a serialized error message -fn ack_fail(err: String) -> Binary { - let res = Ics20Ack::Error(err); - to_json_binary(&res).unwrap() -} - -const RECEIVE_ID: u64 = 1337; -const ACK_FAILURE_ID: u64 = 0xfa17; - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn reply(deps: DepsMut, _env: Env, reply: Reply) -> Result { - match reply.id { - RECEIVE_ID => match reply.result { - SubMsgResult::Ok(_) => Ok(Response::new()), - SubMsgResult::Err(err) => { - // Important design note: with ibcv2 and wasmd 0.22 we can implement this all much easier. - // No reply needed... the receive function and submessage should return error on failure and all - // state gets reverted with a proper app-level message auto-generated - - // Since we need compatibility with Juno (Jan 2022), we need to ensure that optimisitic - // state updates in ibc_packet_receive get reverted in the (unlikely) chance of an - // error while sending the token - - // However, this requires passing some state between the ibc_packet_receive function and - // the reply handler. We do this with a singleton, with is "okay" for IBC as there is no - // reentrancy on these functions (cannot be called by another contract). This pattern - // should not be used for ExecuteMsg handlers - let reply_args = REPLY_ARGS.load(deps.storage)?; - undo_reduce_channel_balance( - deps.storage, - &reply_args.channel, - &reply_args.denom, - reply_args.amount, - )?; - - Ok(Response::new().set_data(ack_fail(err))) - } - }, - ACK_FAILURE_ID => match reply.result { - SubMsgResult::Ok(_) => Ok(Response::new()), - SubMsgResult::Err(err) => Ok(Response::new().set_data(ack_fail(err))), - }, - _ => Err(ContractError::UnknownReplyId { id: reply.id }), - } -} - -#[cfg_attr(not(feature = "library"), entry_point)] -/// enforces ordering and versioning constraints -pub fn ibc_channel_open( - _deps: DepsMut, - _env: Env, - msg: IbcChannelOpenMsg, -) -> Result<(), ContractError> { - enforce_order_and_version(msg.channel(), msg.counterparty_version())?; - Ok(()) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -/// record the channel in CHANNEL_INFO -pub fn ibc_channel_connect( - deps: DepsMut, - _env: Env, - msg: IbcChannelConnectMsg, -) -> Result { - // we need to check the counter party version in try and ack (sometimes here) - enforce_order_and_version(msg.channel(), msg.counterparty_version())?; - - let channel: IbcChannel = msg.into(); - let info = ChannelInfo { - id: channel.endpoint.channel_id, - counterparty_endpoint: channel.counterparty_endpoint, - connection_id: channel.connection_id, - }; - CHANNEL_INFO.save(deps.storage, &info.id, &info)?; - - Ok(IbcBasicResponse::default()) -} - -fn enforce_order_and_version( - channel: &IbcChannel, - counterparty_version: Option<&str>, -) -> Result<(), ContractError> { - if channel.version != ICS20_VERSION { - return Err(ContractError::InvalidIbcVersion { - version: channel.version.clone(), - }); - } - if let Some(version) = counterparty_version { - if version != ICS20_VERSION { - return Err(ContractError::InvalidIbcVersion { - version: version.to_string(), - }); - } - } - if channel.order != ICS20_ORDERING { - return Err(ContractError::OnlyOrderedChannel {}); - } - Ok(()) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn ibc_channel_close( - _deps: DepsMut, - _env: Env, - _channel: IbcChannelCloseMsg, -) -> Result { - // TODO: what to do here? - // we will have locked funds that need to be returned somehow - unimplemented!(); -} - -#[cfg_attr(not(feature = "library"), entry_point)] -/// Check to see if we have any balance here -/// We should not return an error if possible, but rather an acknowledgement of failure -pub fn ibc_packet_receive( - deps: DepsMut, - _env: Env, - msg: IbcPacketReceiveMsg, -) -> Result { - let packet = msg.packet; - - do_ibc_packet_receive(deps, &packet).or_else(|err| { - Ok(IbcReceiveResponse::new() - .set_ack(ack_fail(err.to_string())) - .add_attributes(vec![ - attr("action", "receive"), - attr("success", "false"), - attr("error", err.to_string()), - ])) - }) -} - -// Returns local denom if the denom is an encoded voucher from the expected endpoint -// Otherwise, error -fn parse_voucher_denom<'a>( - voucher_denom: &'a str, - remote_endpoint: &IbcEndpoint, -) -> Result<&'a str, ContractError> { - let split_denom: Vec<&str> = voucher_denom.splitn(3, '/').collect(); - if split_denom.len() != 3 { - return Err(ContractError::NoForeignTokens {}); - } - // a few more sanity checks - if split_denom[0] != remote_endpoint.port_id { - return Err(ContractError::FromOtherPort { - port: split_denom[0].into(), - }); - } - if split_denom[1] != remote_endpoint.channel_id { - return Err(ContractError::FromOtherChannel { - channel: split_denom[1].into(), - }); - } - - Ok(split_denom[2]) -} - -// this does the work of ibc_packet_receive, we wrap it to turn errors into acknowledgements -fn do_ibc_packet_receive( - deps: DepsMut, - packet: &IbcPacket, -) -> Result { - let msg: Ics20Packet = from_json(&packet.data)?; - let channel = packet.dest.channel_id.clone(); - - // If the token originated on the remote chain, it looks like "ucosm". - // If it originated on our chain, it looks like "port/channel/ucosm". - let denom = parse_voucher_denom(&msg.denom, &packet.src)?; - - // we need to save the data to update the balances in reply - let reply_args = ReplyArgs { - channel: channel.clone(), - denom: denom.to_string(), - amount: msg.amount, - }; - REPLY_ARGS.save(deps.storage, &reply_args)?; - - let to_send = Amount::from_parts(denom.to_string(), msg.amount); - let gas_limit = check_gas_limit(deps.as_ref(), &to_send)?; - - // If memo is set we need to forward the information to our contract to action - // else we just send the tokens to the receiver - let mut submsg = if let Some(received_memo) = &msg.memo { - let config = CONFIG.load(deps.storage)?; - - // If no hook contract is set but we received a memo, fail and return funds - // we do this as a safety feature - otherwise a user could send a memo to be actioned - // on the Hub, but the contract isn't set which would result in a loss of funds. - // In case a user just wants to add a memo, the contract would pass the funds on - // to the final destination - let hook_contract = config.hook_addr.ok_or(ContractError::NoHookContract {})?; - - let action_msg: CosmosMsg = match to_send { - // If someone sends native tokens to our channel, fail the transfer - // as native tokens should use the transfer<>transfer channels - Amount::Native(..) => Err(ContractError::NotOnAllowList {}), - // All CW20's on our allowed list is forwarded to the handler contract - // it is up to the handler to decide if the CW20 is allowed or not - Amount::Cw20(coin) => { - let msg = Cw20ExecuteMsg::Send { - contract: hook_contract.to_string(), - amount: coin.amount, - msg: to_json_binary(&Cw20HookMsg::OutpostMemo { - // The channel this packet was received on - channel: packet.dest.channel_id.clone(), - // Original sender from Outpost - sender: msg.sender.clone(), - // Original receiver set in the transfer - receiver: msg.receiver.clone(), - memo: received_memo.clone(), - })?, - }; - - Ok(WasmMsg::Execute { - contract_addr: coin.address, - msg: to_json_binary(&msg).unwrap(), - funds: vec![], - } - .into()) - } - }?; - SubMsg::reply_on_error(action_msg, RECEIVE_ID) - } else { - // Memo is not set, send to receiver - let send = send_amount(to_send, msg.receiver.clone()); - SubMsg::reply_on_error(send, RECEIVE_ID) - }; - - submsg.gas_limit = gas_limit; - - // make sure we have enough balance for this - // We can't update the channel balance before checking the memo as in - // the original contract since ContractErrors are handled as Ok to pass - // back the ack. See original ibc_packet_receive for more info - reduce_channel_balance(deps.storage, &channel, denom, msg.amount)?; - - let res = IbcReceiveResponse::new() - .set_ack(ack_success()) - .add_submessage(submsg) - .add_attribute("action", "receive") - .add_attribute("sender", msg.sender) - .add_attribute("receiver", msg.receiver) - .add_attribute("denom", denom) - .add_attribute("amount", msg.amount) - .add_attribute("success", "true"); - - Ok(res) -} - -fn check_gas_limit(deps: Deps, amount: &Amount) -> Result, ContractError> { - match amount { - Amount::Cw20(coin) => { - // if cw20 token, use the registered gas limit, or error if not whitelisted - let addr = deps.api.addr_validate(&coin.address)?; - let allowed = ALLOW_LIST.may_load(deps.storage, &addr)?; - match allowed { - Some(allow) => Ok(allow.gas_limit), - None => match CONFIG.load(deps.storage)?.default_gas_limit { - Some(base) => Ok(Some(base)), - None => Err(ContractError::NotOnAllowList), - }, - } - } - _ => Ok(None), - } -} - -#[cfg_attr(not(feature = "library"), entry_point)] -/// check if success or failure and update balance, or return funds -pub fn ibc_packet_ack( - deps: DepsMut, - _env: Env, - msg: IbcPacketAckMsg, -) -> Result { - // Design decision: should we trap error like in receive? - // TODO: unsure... as it is now a failed ack handling would revert the tx and would be - // retried again and again. is that good? - let ics20msg: Ics20Ack = from_json(&msg.acknowledgement.data)?; - match ics20msg { - Ics20Ack::Result(_) => on_packet_success(deps, msg.original_packet), - Ics20Ack::Error(err) => on_packet_failure(deps, msg.original_packet, err), - } -} - -#[cfg_attr(not(feature = "library"), entry_point)] -/// return fund to original sender (same as failure in ibc_packet_ack) -pub fn ibc_packet_timeout( - deps: DepsMut, - _env: Env, - msg: IbcPacketTimeoutMsg, -) -> Result { - // TODO: trap error like in receive? (same question as ack above) - let packet = msg.packet; - on_packet_failure(deps, packet, "timeout".to_string()) -} - -// update the balance stored on this (channel, denom) index -fn on_packet_success(_deps: DepsMut, packet: IbcPacket) -> Result { - let msg: Ics20Packet = from_json(&packet.data)?; - - // similar event messages like ibctransfer module - let attributes = vec![ - attr("action", "acknowledge"), - attr("sender", &msg.sender), - attr("receiver", &msg.receiver), - attr("denom", &msg.denom), - attr("amount", msg.amount), - attr("success", "true"), - ]; - - Ok(IbcBasicResponse::new().add_attributes(attributes)) -} - -// return the tokens to sender -fn on_packet_failure( - deps: DepsMut, - packet: IbcPacket, - err: String, -) -> Result { - let ics_msg: Ics20Packet = from_json(&packet.data)?; - - // undo the balance update on failure (as we pre-emptively added it on send) - reduce_channel_balance( - deps.storage, - &packet.src.channel_id, - &ics_msg.denom, - ics_msg.amount, - )?; - - let to_send = Amount::from_parts(ics_msg.denom.clone(), ics_msg.amount); - let gas_limit = check_gas_limit(deps.as_ref(), &to_send)?; - - // If the sender of this was originally the hook contract, we need - // to send the funds back via notification instead of just sending - // the funds - let config = CONFIG.load(deps.storage)?; - let msg: CosmosMsg; - if let Some(hook_addr) = &config.hook_addr { - // Hook contract was the sender - if hook_addr == &ics_msg.sender { - msg = match to_send { - // Native tokens via the channel is not allowed - Amount::Native(_coin) => Err(ContractError::NotOnAllowList {}), - // Notify the memo handler of the failure - Amount::Cw20(coin) => { - let cw20_msg = Cw20ExecuteMsg::Send { - contract: hook_addr.to_string(), - amount: coin.amount, - msg: to_json_binary(&Cw20HookMsg::TransferFailure { - receiver: ics_msg.receiver.clone(), - })?, - }; - - Ok(WasmMsg::Execute { - contract_addr: coin.address, - msg: to_json_binary(&cw20_msg)?, - funds: vec![], - } - .into()) - } - }?; - } else { - // Hook contract was not the sender, send funds back to sender - msg = send_amount(to_send, ics_msg.sender.clone()); - } - } else { - // No hook is set, send funds back to sender - msg = send_amount(to_send, ics_msg.sender.clone()); - } - let mut submsg = SubMsg::reply_on_error(msg, ACK_FAILURE_ID); - submsg.gas_limit = gas_limit; - - // similar event messages like ibctransfer module - let res = IbcBasicResponse::new() - .add_submessage(submsg) - .add_attribute("action", "acknowledge") - .add_attribute("sender", ics_msg.sender) - .add_attribute("receiver", ics_msg.receiver) - .add_attribute("denom", ics_msg.denom) - .add_attribute("amount", ics_msg.amount.to_string()) - .add_attribute("success", "false") - .add_attribute("error", err); - - Ok(res) -} - -fn send_amount(amount: Amount, recipient: String) -> CosmosMsg { - match amount { - Amount::Native(coin) => BankMsg::Send { - to_address: recipient, - amount: vec![coin], - } - .into(), - Amount::Cw20(coin) => { - let msg = Cw20ExecuteMsg::Transfer { - recipient, - amount: coin.amount, - }; - WasmMsg::Execute { - contract_addr: coin.address, - msg: to_json_binary(&msg).unwrap(), - funds: vec![], - } - .into() - } - } -} - -#[cfg(test)] -mod test { - use super::*; - use crate::test_helpers::*; - - use crate::contract::{execute, migrate, query_channel}; - use crate::msg::{ExecuteMsg, MigrateMsg}; - use astroport::cw20_ics20::TransferMsg; - use cosmwasm_std::testing::{mock_env, mock_info}; - use cosmwasm_std::{coins, to_vec, Addr, IbcEndpoint, IbcMsg, IbcTimeout, Timestamp}; - use cw20::Cw20ReceiveMsg; - - #[test] - fn check_ack_json() { - let success = Ics20Ack::Result(b"1".into()); - let fail = Ics20Ack::Error("bad coin".into()); - - let success_json = String::from_utf8(to_vec(&success).unwrap()).unwrap(); - assert_eq!(r#"{"result":"MQ=="}"#, success_json.as_str()); - - let fail_json = String::from_utf8(to_vec(&fail).unwrap()).unwrap(); - assert_eq!(r#"{"error":"bad coin"}"#, fail_json.as_str()); - } - - #[test] - fn check_packet_json() { - let packet = Ics20Packet::new( - Uint128::new(12345), - "ucosm", - "cosmos1zedxv25ah8fksmg2lzrndrpkvsjqgk4zt5ff7n", - "wasm1fucynrfkrt684pm8jrt8la5h2csvs5cnldcgqc", - ); - // Example message generated from the SDK - let expected = r#"{"amount":"12345","denom":"ucosm","receiver":"wasm1fucynrfkrt684pm8jrt8la5h2csvs5cnldcgqc","sender":"cosmos1zedxv25ah8fksmg2lzrndrpkvsjqgk4zt5ff7n"}"#; - - let encdoded = String::from_utf8(to_vec(&packet).unwrap()).unwrap(); - assert_eq!(expected, encdoded.as_str()); - } - - fn cw20_payment( - amount: u128, - address: &str, - recipient: &str, - gas_limit: Option, - ) -> SubMsg { - let msg = Cw20ExecuteMsg::Transfer { - recipient: recipient.into(), - amount: Uint128::new(amount), - }; - let exec = WasmMsg::Execute { - contract_addr: address.into(), - msg: to_json_binary(&msg).unwrap(), - funds: vec![], - }; - let mut msg = SubMsg::reply_on_error(exec, RECEIVE_ID); - msg.gas_limit = gas_limit; - msg - } - - fn native_payment(amount: u128, denom: &str, recipient: &str) -> SubMsg { - SubMsg::reply_on_error( - BankMsg::Send { - to_address: recipient.into(), - amount: coins(amount, denom), - }, - RECEIVE_ID, - ) - } - - fn mock_receive_packet( - my_channel: &str, - amount: u128, - denom: &str, - receiver: &str, - memo: Option, - ) -> IbcPacket { - let data = Ics20Packet { - // this is returning a foreign (our) token, thus denom is // - denom: format!("{}/{}/{}", REMOTE_PORT, "channel-1234", denom), - amount: amount.into(), - sender: "remote-sender".to_string(), - receiver: receiver.to_string(), - memo, - }; - print!("Packet denom: {}", &data.denom); - IbcPacket::new( - to_json_binary(&data).unwrap(), - IbcEndpoint { - port_id: REMOTE_PORT.to_string(), - channel_id: "channel-1234".to_string(), - }, - IbcEndpoint { - port_id: CONTRACT_PORT.to_string(), - channel_id: my_channel.to_string(), - }, - 3, - Timestamp::from_seconds(1665321069).into(), - ) - } - - fn mock_relayer_addr() -> Addr { - Addr::unchecked("relayer") - } - - #[test] - fn send_receive_cw20() { - let send_channel = "channel-9"; - let cw20_addr = "token-addr"; - let cw20_denom = "cw20:token-addr"; - let gas_limit = 1234567; - let mut deps = setup( - &["channel-1", "channel-7", send_channel], - &[(cw20_addr, gas_limit)], - ); - - // prepare some mock packets - let recv_packet = - mock_receive_packet(send_channel, 876543210, cw20_denom, "local-rcpt", None); - let recv_high_packet = - mock_receive_packet(send_channel, 1876543210, cw20_denom, "local-rcpt", None); - - // cannot receive this denom yet - let msg = IbcPacketReceiveMsg::new(recv_packet.clone(), mock_relayer_addr()); - let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); - assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); - let no_funds = Ics20Ack::Error(ContractError::InsufficientFunds {}.to_string()); - assert_eq!(ack, no_funds); - - // we send some cw20 tokens over - let transfer = TransferMsg { - channel: send_channel.to_string(), - remote_address: "remote-rcpt".to_string(), - timeout: None, - memo: None, - }; - let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { - sender: "local-sender".to_string(), - amount: Uint128::new(987654321), - msg: to_json_binary(&transfer).unwrap(), - }); - let info = mock_info(cw20_addr, &[]); - let res = execute(deps.as_mut(), mock_env(), info, msg).unwrap(); - assert_eq!(1, res.messages.len()); - let expected = Ics20Packet { - denom: cw20_denom.into(), - amount: Uint128::new(987654321), - sender: "local-sender".to_string(), - receiver: "remote-rcpt".to_string(), - memo: None, - }; - let timeout = mock_env().block.time.plus_seconds(DEFAULT_TIMEOUT); - assert_eq!( - &res.messages[0], - &SubMsg::new(IbcMsg::SendPacket { - channel_id: send_channel.to_string(), - data: to_json_binary(&expected).unwrap(), - timeout: IbcTimeout::with_timestamp(timeout), - }) - ); - - // query channel state|_| - let state = query_channel(deps.as_ref(), send_channel.to_string()).unwrap(); - assert_eq!(state.balances, vec![Amount::cw20(987654321, cw20_addr)]); - assert_eq!(state.total_sent, vec![Amount::cw20(987654321, cw20_addr)]); - - // cannot receive more than we sent - let msg = IbcPacketReceiveMsg::new(recv_high_packet, mock_relayer_addr()); - let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); - assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); - assert_eq!(ack, no_funds); - - // we can receive less than we sent - let msg = IbcPacketReceiveMsg::new(recv_packet, mock_relayer_addr()); - let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); - assert_eq!(1, res.messages.len()); - assert_eq!( - cw20_payment(876543210, cw20_addr, "local-rcpt", Some(gas_limit)), - res.messages[0] - ); - let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); - assert!(matches!(ack, Ics20Ack::Result(_))); - - // TODO: we need to call the reply block - - // query channel state - let state = query_channel(deps.as_ref(), send_channel.to_string()).unwrap(); - assert_eq!(state.balances, vec![Amount::cw20(111111111, cw20_addr)]); - assert_eq!(state.total_sent, vec![Amount::cw20(987654321, cw20_addr)]); - } - - #[test] - fn send_receive_cw20_no_handler_with_memo() { - let send_channel = "channel-9"; - let cw20_addr = "token-addr"; - let cw20_denom = "cw20:token-addr"; - let gas_limit = 1234567; - let mut deps = setup( - &["channel-1", "channel-7", send_channel], - &[(cw20_addr, gas_limit)], - ); - - // prepare some mock packets - let recv_packet = - mock_receive_packet(send_channel, 876543210, cw20_denom, "local-rcpt", None); - let recv_packet_with_memo = mock_receive_packet( - send_channel, - 876543210, - cw20_denom, - "local-rcpt", - Some("Sample memo".to_string()), - ); - let recv_high_packet = - mock_receive_packet(send_channel, 1876543210, cw20_denom, "local-rcpt", None); - - // cannot receive this denom yet - let msg = IbcPacketReceiveMsg::new(recv_packet, mock_relayer_addr()); - let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); - assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); - let no_funds = Ics20Ack::Error(ContractError::InsufficientFunds {}.to_string()); - assert_eq!(ack, no_funds); - - // we send some cw20 tokens over - let transfer = TransferMsg { - channel: send_channel.to_string(), - remote_address: "remote-rcpt".to_string(), - timeout: None, - memo: None, - }; - let msg = ExecuteMsg::Receive(Cw20ReceiveMsg { - sender: "local-sender".to_string(), - amount: Uint128::new(987654321), - msg: to_json_binary(&transfer).unwrap(), - }); - let info = mock_info(cw20_addr, &[]); - let res = execute(deps.as_mut(), mock_env(), info, msg).unwrap(); - assert_eq!(1, res.messages.len()); - let expected = Ics20Packet { - denom: cw20_denom.into(), - amount: Uint128::new(987654321), - sender: "local-sender".to_string(), - receiver: "remote-rcpt".to_string(), - memo: None, - }; - let timeout = mock_env().block.time.plus_seconds(DEFAULT_TIMEOUT); - assert_eq!( - &res.messages[0], - &SubMsg::new(IbcMsg::SendPacket { - channel_id: send_channel.to_string(), - data: to_json_binary(&expected).unwrap(), - timeout: IbcTimeout::with_timestamp(timeout), - }) - ); - - // query channel state|_| - let state = query_channel(deps.as_ref(), send_channel.to_string()).unwrap(); - assert_eq!(state.balances, vec![Amount::cw20(987654321, cw20_addr)]); - assert_eq!(state.total_sent, vec![Amount::cw20(987654321, cw20_addr)]); - - // cannot receive more than we sent - let msg = IbcPacketReceiveMsg::new(recv_high_packet, mock_relayer_addr()); - let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); - assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); - assert_eq!(ack, no_funds); - - // We can receive less than we sent, but if a memo is set without a handler, we fail - let msg = IbcPacketReceiveMsg::new(recv_packet_with_memo, mock_relayer_addr()); - let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); - - // No messages should be sent - assert_eq!(0, res.messages.len()); - let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); - // We should get an error because no handler is set - assert!(matches!(ack, Ics20Ack::Error(_))); - - // query channel state - // The balance in the channels should not have changed due to failure - let state = query_channel(deps.as_ref(), send_channel.to_string()).unwrap(); - assert_eq!(state.balances, vec![Amount::cw20(987654321, cw20_addr)]); - assert_eq!(state.total_sent, vec![Amount::cw20(987654321, cw20_addr)]); - } - - #[test] - fn send_receive_native() { - let send_channel = "channel-9"; - let mut deps = setup(&["channel-1", "channel-7", send_channel], &[]); - - let denom = "uatom"; - - // prepare some mock packets - let recv_packet = mock_receive_packet(send_channel, 876543210, denom, "local-rcpt", None); - let recv_high_packet = - mock_receive_packet(send_channel, 1876543210, denom, "local-rcpt", None); - - // cannot receive this denom yet - let msg = IbcPacketReceiveMsg::new(recv_packet.clone(), mock_relayer_addr()); - let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); - assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); - let no_funds = Ics20Ack::Error(ContractError::InsufficientFunds {}.to_string()); - assert_eq!(ack, no_funds); - - // we transfer some tokens - let msg = ExecuteMsg::Transfer(TransferMsg { - channel: send_channel.to_string(), - remote_address: "my-remote-address".to_string(), - timeout: None, - memo: None, - }); - let info = mock_info("local-sender", &coins(987654321, denom)); - execute(deps.as_mut(), mock_env(), info, msg).unwrap(); - - // query channel state|_| - let state = query_channel(deps.as_ref(), send_channel.to_string()).unwrap(); - assert_eq!(state.balances, vec![Amount::native(987654321, denom)]); - assert_eq!(state.total_sent, vec![Amount::native(987654321, denom)]); - - // cannot receive more than we sent - let msg = IbcPacketReceiveMsg::new(recv_high_packet, mock_relayer_addr()); - let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); - assert!(res.messages.is_empty()); - let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); - assert_eq!(ack, no_funds); - - // we can receive less than we sent - let msg = IbcPacketReceiveMsg::new(recv_packet, mock_relayer_addr()); - let res = ibc_packet_receive(deps.as_mut(), mock_env(), msg).unwrap(); - assert_eq!(1, res.messages.len()); - assert_eq!( - native_payment(876543210, denom, "local-rcpt"), - res.messages[0] - ); - let ack: Ics20Ack = from_json(&res.acknowledgement).unwrap(); - assert!(matches!(ack, Ics20Ack::Result(_))); - - // only need to call reply block on error case - - // query channel state - let state = query_channel(deps.as_ref(), send_channel.to_string()).unwrap(); - assert_eq!(state.balances, vec![Amount::native(111111111, denom)]); - assert_eq!(state.total_sent, vec![Amount::native(987654321, denom)]); - } - - #[test] - fn check_gas_limit_handles_all_cases() { - let send_channel = "channel-9"; - let allowed = "foobar"; - let allowed_gas = 777666; - let mut deps = setup_standard_0134(&[send_channel], &[(allowed, allowed_gas)]); - - // allow list will get proper gas - let limit = check_gas_limit(deps.as_ref(), &Amount::cw20(500, allowed)).unwrap(); - assert_eq!(limit, Some(allowed_gas)); - - // non-allow list will error - let random = "tokenz"; - check_gas_limit(deps.as_ref(), &Amount::cw20(500, random)).unwrap_err(); - - // add default_gas_limit - let def_limit = 54321; - migrate( - deps.as_mut(), - mock_env(), - MigrateMsg { - default_gas_limit: Some(def_limit), - hook_addr: None, - }, - ) - .unwrap(); - - // allow list still gets proper gas - let limit = check_gas_limit(deps.as_ref(), &Amount::cw20(500, allowed)).unwrap(); - assert_eq!(limit, Some(allowed_gas)); - - // non-allow list will now get default - let limit = check_gas_limit(deps.as_ref(), &Amount::cw20(500, random)).unwrap(); - assert_eq!(limit, Some(def_limit)); - } -} diff --git a/contracts/cw20_ics20/src/lib.rs b/contracts/cw20_ics20/src/lib.rs deleted file mode 100644 index a9dba517d..000000000 --- a/contracts/cw20_ics20/src/lib.rs +++ /dev/null @@ -1,23 +0,0 @@ -/*! -This is an *IBC Enabled* contract that allows us to send CW20 tokens from one chain over the standard ICS20 -protocol to the bank module of another chain. In short, it lets us send our custom CW20 tokens with IBC and use -them just like native tokens on other chains. - -It is only designed to send tokens and redeem previously sent tokens. It will not mint tokens belonging -to assets originating on the foreign chain. This is different than the Golang `ibctransfer` module, but -we properly implement ICS20 and respond with an error message... let's hope the Go side handles this correctly. - -For more information on this contract, please check out the -[README](https://github.com/CosmWasm/cw-plus/blob/main/contracts/cw20-ics20/README.md). -*/ - -pub mod amount; -pub mod contract; -mod error; -pub mod ibc; -mod migrations; -pub mod msg; -pub mod state; -mod test_helpers; - -pub use crate::error::ContractError; diff --git a/contracts/cw20_ics20/src/migrations.rs b/contracts/cw20_ics20/src/migrations.rs deleted file mode 100644 index 5e1168619..000000000 --- a/contracts/cw20_ics20/src/migrations.rs +++ /dev/null @@ -1,15 +0,0 @@ -// standard_v1 is anything before the custom Astroport v1.1.1, -// specifically we're upgrading from cw-plus/cw20-ics20 v0.15 -pub mod standard_v1 { - use cosmwasm_schema::cw_serde; - - use cw_storage_plus::Item; - - #[cw_serde] - pub struct Config { - pub default_timeout: u64, - pub default_gas_limit: Option, - } - - pub const CONFIG: Item = Item::new("ics20_config"); -} diff --git a/contracts/cw20_ics20/src/msg.rs b/contracts/cw20_ics20/src/msg.rs deleted file mode 100644 index 68cd27780..000000000 --- a/contracts/cw20_ics20/src/msg.rs +++ /dev/null @@ -1,122 +0,0 @@ -use astroport::cw20_ics20::TransferMsg; -use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::Addr; -use cw20::Cw20ReceiveMsg; - -use crate::amount::Amount; -use crate::state::ChannelInfo; - -#[cw_serde] -pub struct InitMsg { - /// Default timeout for ics20 packets, specified in seconds - pub default_timeout: u64, - /// who can allow more contracts - pub gov_contract: String, - /// initial allowlist - all cw20 tokens we will send must be previously allowed by governance - pub allowlist: Vec, - /// If set, contracts off the allowlist will run with this gas limit. - /// If unset, will refuse to accept any contract off the allow list. - pub default_gas_limit: Option, - /// Hook contract that will receive memo with funds (optional) - pub hook_addr: Option, -} - -#[cw_serde] -pub struct AllowMsg { - pub contract: String, - pub gas_limit: Option, -} - -#[cw_serde] -pub struct MigrateMsg { - pub default_gas_limit: Option, - pub hook_addr: Option, -} - -#[cw_serde] -pub enum ExecuteMsg { - /// This accepts a properly-encoded ReceiveMsg from a cw20 contract - Receive(Cw20ReceiveMsg), - /// This allows us to transfer *exactly one* native token - Transfer(TransferMsg), - /// This must be called by gov_contract, will allow a new cw20 token to be sent - Allow(AllowMsg), - /// Change the admin (must be called by current admin) - UpdateAdmin { admin: String }, - /// Update hook contract address (must be called by admin) - UpdateHookAddress { new_address: String }, -} - -#[cw_serde] -#[derive(QueryResponses)] -pub enum QueryMsg { - /// Return the port ID bound by this contract. - #[returns(PortResponse)] - Port {}, - /// Show all channels we have connected to. - #[returns(ListChannelsResponse)] - ListChannels {}, - /// Returns the details of the name channel, error if not created. - #[returns(ChannelResponse)] - Channel { id: String }, - /// Show the Config. - #[returns(ConfigResponse)] - Config {}, - #[returns(cw_controllers::AdminResponse)] - Admin {}, - /// Query if a given cw20 contract is allowed. - #[returns(AllowedResponse)] - Allowed { contract: String }, - /// List all allowed cw20 contracts. - #[returns(ListAllowedResponse)] - ListAllowed { - start_after: Option, - limit: Option, - }, -} - -#[cw_serde] -pub struct ListChannelsResponse { - pub channels: Vec, -} - -#[cw_serde] -pub struct ChannelResponse { - /// Information on the channel's connection - pub info: ChannelInfo, - /// How many tokens we currently have pending over this channel - pub balances: Vec, - /// The total number of tokens that have been sent over this channel - /// (even if many have been returned, so balance is low) - pub total_sent: Vec, -} - -#[cw_serde] -pub struct PortResponse { - pub port_id: String, -} - -#[cw_serde] -pub struct ConfigResponse { - pub default_timeout: u64, - pub default_gas_limit: Option, - pub gov_contract: String, - pub hook_addr: Option, -} - -#[cw_serde] -pub struct AllowedResponse { - pub is_allowed: bool, - pub gas_limit: Option, -} - -#[cw_serde] -pub struct ListAllowedResponse { - pub allow: Vec, -} - -#[cw_serde] -pub struct AllowedInfo { - pub contract: String, - pub gas_limit: Option, -} diff --git a/contracts/cw20_ics20/src/state.rs b/contracts/cw20_ics20/src/state.rs deleted file mode 100644 index 6c65fa564..000000000 --- a/contracts/cw20_ics20/src/state.rs +++ /dev/null @@ -1,112 +0,0 @@ -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Addr, IbcEndpoint, StdResult, Storage, Uint128}; -use cw_controllers::Admin; -use cw_storage_plus::{Item, Map}; - -use crate::ContractError; - -pub const ADMIN: Admin = Admin::new("admin"); - -pub const CONFIG: Item = Item::new("ics20_config"); - -// Used to pass info from the ibc_packet_receive to the reply handler -pub const REPLY_ARGS: Item = Item::new("reply_args"); - -/// static info on one channel that doesn't change -pub const CHANNEL_INFO: Map<&str, ChannelInfo> = Map::new("channel_info"); - -/// indexed by (channel_id, denom) maintaining the balance of the channel in that currency -pub const CHANNEL_STATE: Map<(&str, &str), ChannelState> = Map::new("channel_state"); - -/// Every cw20 contract we allow to be sent is stored here, possibly with a gas_limit -pub const ALLOW_LIST: Map<&Addr, AllowInfo> = Map::new("allow_list"); - -#[cw_serde] -#[derive(Default)] -pub struct ChannelState { - pub outstanding: Uint128, - pub total_sent: Uint128, -} - -#[cw_serde] -pub struct Config { - pub default_timeout: u64, - pub default_gas_limit: Option, - /// Hook contract that will receive memo with funds (optional) - pub hook_addr: Option, -} - -#[cw_serde] -pub struct ChannelInfo { - /// id of this channel - pub id: String, - /// the remote channel/port we connect to - pub counterparty_endpoint: IbcEndpoint, - /// the connection this exists on (you can use to query client/consensus info) - pub connection_id: String, -} - -#[cw_serde] -pub struct AllowInfo { - pub gas_limit: Option, -} - -#[cw_serde] -pub struct ReplyArgs { - pub channel: String, - pub denom: String, - pub amount: Uint128, -} - -pub fn increase_channel_balance( - storage: &mut dyn Storage, - channel: &str, - denom: &str, - amount: Uint128, -) -> Result<(), ContractError> { - CHANNEL_STATE.update(storage, (channel, denom), |orig| -> StdResult<_> { - let mut state = orig.unwrap_or_default(); - state.outstanding += amount; - state.total_sent += amount; - Ok(state) - })?; - Ok(()) -} - -pub fn reduce_channel_balance( - storage: &mut dyn Storage, - channel: &str, - denom: &str, - amount: Uint128, -) -> Result<(), ContractError> { - CHANNEL_STATE.update( - storage, - (channel, denom), - |orig| -> Result<_, ContractError> { - // this will return error if we don't have the funds there to cover the request (or no denom registered) - let mut cur = orig.ok_or(ContractError::InsufficientFunds {})?; - cur.outstanding = cur - .outstanding - .checked_sub(amount) - .or(Err(ContractError::InsufficientFunds {}))?; - Ok(cur) - }, - )?; - Ok(()) -} - -// this is like increase, but it only "un-subtracts" (= adds) outstanding, not total_sent -// calling `reduce_channel_balance` and then `undo_reduce_channel_balance` should leave state unchanged. -pub fn undo_reduce_channel_balance( - storage: &mut dyn Storage, - channel: &str, - denom: &str, - amount: Uint128, -) -> Result<(), ContractError> { - CHANNEL_STATE.update(storage, (channel, denom), |orig| -> StdResult<_> { - let mut state = orig.unwrap_or_default(); - state.outstanding += amount; - Ok(state) - })?; - Ok(()) -} diff --git a/contracts/cw20_ics20/src/test_helpers.rs b/contracts/cw20_ics20/src/test_helpers.rs deleted file mode 100644 index b2266c3d4..000000000 --- a/contracts/cw20_ics20/src/test_helpers.rs +++ /dev/null @@ -1,126 +0,0 @@ -#![cfg(test)] - -use crate::contract::instantiate; -use crate::ibc::{ibc_channel_connect, ibc_channel_open, ICS20_ORDERING, ICS20_VERSION}; -use crate::state::ChannelInfo; - -use cosmwasm_std::testing::{ - mock_dependencies, mock_env, mock_info, MockApi, MockQuerier, MockStorage, -}; -use cosmwasm_std::{ - DepsMut, IbcChannel, IbcChannelConnectMsg, IbcChannelOpenMsg, IbcEndpoint, OwnedDeps, -}; - -use crate::msg::{AllowMsg, InitMsg}; - -pub const DEFAULT_TIMEOUT: u64 = 3600; // 1 hour, -pub const CONTRACT_PORT: &str = "ibc:wasm1234567890abcdef"; -pub const REMOTE_PORT: &str = "transfer"; -pub const CONNECTION_ID: &str = "connection-2"; - -pub fn mock_channel(channel_id: &str) -> IbcChannel { - IbcChannel::new( - IbcEndpoint { - port_id: CONTRACT_PORT.into(), - channel_id: channel_id.into(), - }, - IbcEndpoint { - port_id: REMOTE_PORT.into(), - channel_id: format!("{}5", channel_id), - }, - ICS20_ORDERING, - ICS20_VERSION, - CONNECTION_ID, - ) -} - -pub fn mock_channel_info(channel_id: &str) -> ChannelInfo { - ChannelInfo { - id: channel_id.to_string(), - counterparty_endpoint: IbcEndpoint { - port_id: REMOTE_PORT.into(), - channel_id: format!("{}5", channel_id), - }, - connection_id: CONNECTION_ID.into(), - } -} - -// we simulate instantiate and ack here -pub fn add_channel(mut deps: DepsMut, channel_id: &str) { - let channel = mock_channel(channel_id); - let open_msg = IbcChannelOpenMsg::new_init(channel.clone()); - ibc_channel_open(deps.branch(), mock_env(), open_msg).unwrap(); - let connect_msg = IbcChannelConnectMsg::new_ack(channel, ICS20_VERSION); - ibc_channel_connect(deps.branch(), mock_env(), connect_msg).unwrap(); -} - -pub fn setup( - channels: &[&str], - allow: &[(&str, u64)], -) -> OwnedDeps { - let mut deps = mock_dependencies(); - - let allowlist = allow - .iter() - .map(|(contract, gas)| AllowMsg { - contract: contract.to_string(), - gas_limit: Some(*gas), - }) - .collect(); - - // instantiate an empty contract - let instantiate_msg = InitMsg { - default_gas_limit: None, - default_timeout: DEFAULT_TIMEOUT, - gov_contract: "gov".to_string(), - allowlist, - hook_addr: None, - }; - let info = mock_info(&String::from("anyone"), &[]); - let res = instantiate(deps.as_mut(), mock_env(), info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - for channel in channels { - add_channel(deps.as_mut(), channel); - } - deps -} - -// Instantiate using the original CW20-ICS20 contract version 0.13.4 -pub fn setup_standard_0134( - channels: &[&str], - allow: &[(&str, u64)], -) -> OwnedDeps { - let mut deps = mock_dependencies(); - - let allowlist = allow - .iter() - .map(|(contract, gas)| cw20_ics20_original::msg::AllowMsg { - contract: contract.to_string(), - gas_limit: Some(*gas), - }) - .collect(); - - // instantiate an empty contract - let instantiate_msg = cw20_ics20_original::msg::InitMsg { - default_gas_limit: None, - default_timeout: DEFAULT_TIMEOUT, - gov_contract: "gov".to_string(), - allowlist, - }; - - let info = mock_info(&String::from("anyone"), &[]); - let res = cw20_ics20_original::contract::instantiate( - deps.as_mut(), - mock_env(), - info, - instantiate_msg, - ) - .unwrap(); - assert_eq!(0, res.messages.len()); - - for channel in channels { - add_channel(deps.as_mut(), channel); - } - deps -} diff --git a/packages/astroport/src/cw20_ics20.rs b/packages/astroport/src/cw20_ics20.rs deleted file mode 100644 index 9409488a6..000000000 --- a/packages/astroport/src/cw20_ics20.rs +++ /dev/null @@ -1,16 +0,0 @@ -use cosmwasm_schema::cw_serde; - -/// This is the message we accept via Receive -#[cw_serde] -pub struct TransferMsg { - /// The local channel to send the packets on - pub channel: String, - /// The remote address to send to. - /// Don't use HumanAddress as this will likely have a different Bech32 prefix than we use - /// and cannot be validated locally - pub remote_address: String, - /// How long the packet lives in seconds. If not specified, use default_timeout - pub timeout: Option, - /// An optional memo to add to the IBC transfer - pub memo: Option, -} diff --git a/packages/astroport/src/lib.rs b/packages/astroport/src/lib.rs index a5fc4d054..be2313566 100644 --- a/packages/astroport/src/lib.rs +++ b/packages/astroport/src/lib.rs @@ -1,7 +1,6 @@ pub mod asset; pub mod common; pub mod cosmwasm_ext; -pub mod cw20_ics20; pub mod factory; pub mod fee_granter; pub mod generator; From 97c1cfaba87d8b9825cc0ea69bd8ff766f3d97e7 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 17 Jan 2024 12:25:31 +0400 Subject: [PATCH 34/84] refactoring --- Cargo.lock | 48 +++++++---------- .../periphery/tokenfactory_tracker/Cargo.toml | 6 +-- .../tokenfactory_tracker/src/contract.rs | 37 +++++++------ contracts/tokenomics/staking/Cargo.toml | 10 ++-- .../staking/examples/staking_schema.rs | 3 +- contracts/tokenomics/staking/src/contract.rs | 52 ++++++------------- packages/astroport/src/staking.rs | 4 -- 7 files changed, 61 insertions(+), 99 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f245fd2bb..c38a80444 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -107,7 +107,7 @@ dependencies = [ "cw-storage-plus 0.15.1", "cw2 0.15.1", "itertools 0.10.5", - "protobuf 2.28.0", + "protobuf", "thiserror", ] @@ -128,7 +128,7 @@ dependencies = [ "cw20 0.15.1", "itertools 0.10.5", "prost 0.11.9", - "protobuf 2.28.0", + "protobuf", "thiserror", ] @@ -174,7 +174,7 @@ dependencies = [ "cw721-base", "generator-controller", "generator-proxy-to-vkr", - "protobuf 2.28.0", + "protobuf", "thiserror", "valkyrie", "valkyrie-lp-staking", @@ -414,7 +414,7 @@ dependencies = [ "integer-sqrt", "proptest", "prost 0.11.9", - "protobuf 2.28.0", + "protobuf", "thiserror", ] @@ -603,7 +603,6 @@ dependencies = [ "derivative", "itertools 0.11.0", "osmosis-std", - "protobuf 3.2.0", "thiserror", ] @@ -848,7 +847,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73c9d2043a9e617b0d602fbc0a0ecd621568edbf3a9774890a6d562389bd8e1c" dependencies = [ "prost 0.11.9", - "prost-types", + "prost-types 0.11.9", "tendermint-proto", ] @@ -2013,15 +2012,15 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "osmosis-std" -version = "0.20.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d7aa053bc3fad557ac90a0377688b400c395e2537f0f1de3293a15cad2e970" +checksum = "8641c376f01f5af329dc2a34e4f5527eaeb0bde18cda8d86fed958d04c86159c" dependencies = [ "chrono", "cosmwasm-std", "osmosis-std-derive", - "prost 0.11.9", - "prost-types", + "prost 0.12.3", + "prost-types 0.12.3", "schemars", "serde", "serde-cw-value", @@ -2035,7 +2034,7 @@ checksum = "c5ebdfd1bc8ed04db596e110c6baa9b174b04f6ed1ec22c666ddc5cb3fa91bd7" dependencies = [ "itertools 0.10.5", "proc-macro2", - "prost-types", + "prost-types 0.11.9", "quote", "syn 1.0.109", ] @@ -2227,32 +2226,21 @@ dependencies = [ ] [[package]] -name = "protobuf" -version = "2.28.0" +name = "prost-types" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" +checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" dependencies = [ - "bytes", + "prost 0.12.3", ] [[package]] name = "protobuf" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55bad9126f378a853655831eb7363b7b01b81d19f8cb1218861086ca4a1a61e" -dependencies = [ - "once_cell", - "protobuf-support", - "thiserror", -] - -[[package]] -name = "protobuf-support" -version = "3.2.0" +version = "2.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d4d7b8601c814cfb36bcebb79f0e61e45e1e93640cf778837833bbed05c372" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" dependencies = [ - "thiserror", + "bytes", ] [[package]] @@ -2807,7 +2795,7 @@ dependencies = [ "num-derive", "num-traits", "prost 0.11.9", - "prost-types", + "prost-types 0.11.9", "serde", "serde_bytes", "subtle-encoding", diff --git a/contracts/periphery/tokenfactory_tracker/Cargo.toml b/contracts/periphery/tokenfactory_tracker/Cargo.toml index f8e66738c..103c705d6 100644 --- a/contracts/periphery/tokenfactory_tracker/Cargo.toml +++ b/contracts/periphery/tokenfactory_tracker/Cargo.toml @@ -11,8 +11,8 @@ crate-type = ["cdylib", "rlib"] [dependencies] cw2 = "1.1" -cosmwasm-std = "1.1" -cw-storage-plus = "1.0" -cosmwasm-schema = "1.1" +cosmwasm-std = "1.5" +cw-storage-plus = "1.2" +cosmwasm-schema = "1.5" thiserror = "1.0" astroport = { path = "../../../packages/astroport", version = "3" } diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index e32ee7daf..eda5e1487 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -114,12 +114,13 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result StdResult { set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - // TODO: Validate that deposit_token_denom exists on chain + // TODO: figure out how to set initial staking ratio + + // Validate that deposit_token_denom exists on chain + deps.querier.query_supply(&msg.deposit_token_denom)?; // Store config CONFIG.save( @@ -61,16 +65,13 @@ pub fn instantiate( // TODO: After creating the TokenFactory token, also set the tracking contract // we need a Neutron upgrade to enable that - let sub_msg = SubMsg { - id: INSTANTIATE_DENOM_REPLY_ID, - msg: MsgCreateDenom { + let sub_msg = SubMsg::reply_on_success( + MsgCreateDenom { sender: env.contract.address.to_string(), subdenom: TOKEN_SYMBOL.to_owned(), - } - .into(), - gas_limit: None, - reply_on: ReplyOn::Success, - }; + }, + INSTANTIATE_DENOM_REPLY_ID, + ); Ok(Response::new().add_submessage(sub_msg)) } @@ -119,13 +120,7 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result Result { match msg.id { INSTANTIATE_DENOM_REPLY_ID => { - let mut config = CONFIG.load(deps.storage)?; - - // TODO: Once Neutron implements the same flow as Osmosis, we'll - // be able to get the created denom from the reply data - // For now, we reconstruct the denom from the contract address - // TODO: Use new TokenFactory abstraction - let created_denom = format!("factory/{}/{}", env.contract.address, TOKEN_SYMBOL); + let MsgCreateDenomResponse { new_token_denom } = msg.result.try_into()?; // TODO: Decide correct metadata let denom_metadata_msg = MsgSetDenomMetadata { @@ -133,11 +128,11 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result Result StdResult { )?), } } - -/// ## Description -/// Used for migration of contract. Returns the default object of type [`Response`]. -/// ## Params -/// * **_deps** is the object of type [`DepsMut`]. -/// -/// * **_env** is the object of type [`Env`]. -/// -/// * **_msg** is the object of type [`MigrateMsg`]. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { - // No migration is possible to move from CW20 ASTRO and - // xASTRO to TokenFactory versions - Err(ContractError::MigrationError {}) -} diff --git a/packages/astroport/src/staking.rs b/packages/astroport/src/staking.rs index e458ba055..1fd498bb0 100644 --- a/packages/astroport/src/staking.rs +++ b/packages/astroport/src/staking.rs @@ -52,7 +52,3 @@ pub struct StakingResponse { /// The xASTRO denom pub xastro_amount: Uint128, } - -/// This structure describes a migration message. -#[cw_serde] -pub struct MigrateMsg {} From 5422429407fc88f97e75639224b51735f664ff39 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 17 Jan 2024 12:35:29 +0400 Subject: [PATCH 35/84] optimize tracker contract --- .../tokenfactory_tracker/src/contract.rs | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index eda5e1487..91382f00c 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -46,22 +46,28 @@ pub fn instantiate( pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result { match msg { // BlockBeforeSend is called before a send - if an error is returned the send - // is cancelled - SudoMsg::BlockBeforeSend { .. } => Ok(Response::default()), - // TrackBeforeSend is called before a send - if an error is returned it will - // be ignored and the send will continue - // Minting a token directly to an address is also tracked - SudoMsg::TrackBeforeSend { from, to, amount } => { + // is cancelled. This call is NOT gas metered. + // NOTE: Contract logic relies on the fact SudoMsg::BlockBeforeSend is always called before SudoMsg::TrackBeforeSend. + // Ref: https://github.com/osmosis-labs/cosmos-sdk/blob/55b53a127b6937d66a40084e9f7383a3762ea7f5/x/bank/keeper/send.go#L210-L223 + SudoMsg::BlockBeforeSend { amount, .. } => { let config = CONFIG.load(deps.storage)?; // Ensure the denom being sent is the tracked denom // If this isn't checked, another token could be tracked with the same // contract and that will skew the real numbers if amount.denom != config.tracked_denom { - return Err(ContractError::InvalidDenom { + Err(ContractError::InvalidDenom { expected_denom: config.tracked_denom, - }); + }) + } else { + Ok(Response::default()) } + } + // TrackBeforeSend is called before a send - if an error is returned it will + // be ignored and the send will continue + // Minting a token directly to an address is also tracked + SudoMsg::TrackBeforeSend { from, to, amount } => { + let config = CONFIG.load(deps.storage)?; // If the token is minted directly to an address, we don't need to subtract // as the sender is the module address @@ -309,7 +315,7 @@ mod tests { let err = sudo( deps.as_mut(), env.clone(), - SudoMsg::TrackBeforeSend { + SudoMsg::BlockBeforeSend { from: MODULE_ADDRESS.to_string(), to: "user1".to_string(), amount: Coin { From a62a8cc227426b866ed157980e4a96db8c0c04c1 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 17 Jan 2024 13:27:59 +0400 Subject: [PATCH 36/84] determine tokenfactory module address on init --- Cargo.lock | 1 + .../periphery/tokenfactory_tracker/Cargo.toml | 1 + .../tokenfactory_tracker/src/contract.rs | 100 +++++++++++++++--- .../tokenfactory_tracker/src/error.rs | 2 +- .../astroport/src/tokenfactory_tracker.rs | 2 - 5 files changed, 87 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c38a80444..4e9e84de6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -628,6 +628,7 @@ dependencies = [ "cosmwasm-std", "cw-storage-plus 1.2.0", "cw2 1.1.2", + "osmosis-std", "thiserror", ] diff --git a/contracts/periphery/tokenfactory_tracker/Cargo.toml b/contracts/periphery/tokenfactory_tracker/Cargo.toml index 103c705d6..0ae5a3c4c 100644 --- a/contracts/periphery/tokenfactory_tracker/Cargo.toml +++ b/contracts/periphery/tokenfactory_tracker/Cargo.toml @@ -16,3 +16,4 @@ cw-storage-plus = "1.2" cosmwasm-schema = "1.5" thiserror = "1.0" astroport = { path = "../../../packages/astroport", version = "3" } +osmosis-std = "0.22.0" diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index 91382f00c..26818e068 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -1,13 +1,15 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, StdResult}; +use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, StdError, StdResult}; use cw2::set_contract_version; +use osmosis_std::types::cosmos::auth::v1beta1::{AuthQuerier, ModuleAccount}; use astroport::tokenfactory_tracker::{InstantiateMsg, SudoMsg}; use crate::error::ContractError; use crate::state::{Config, BALANCES, CONFIG, TOTAL_SUPPLY_HISTORY}; +const TOKEN_FACTORY_MODULE_NAME: &str = "tokenfactory"; const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -20,15 +22,20 @@ pub fn instantiate( ) -> Result { set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - // TODO: There is a Stargate query that can be used to get the all the module - // addresses. Need to confirm that this will actually work on Neutron - // let accounts = AuthQuerier::new(&deps.querier).module_accounts()?; - // type URL is /cosmos.auth.v1beta1.ModuleAccount + // Determine tokenfactory module address + let ModuleAccount { base_account, .. } = AuthQuerier::new(&deps.querier) + .module_account_by_name(TOKEN_FACTORY_MODULE_NAME.to_string())? + .account + .expect("tokenfactory module account not found") + .try_into() + .map_err(|_| StdError::generic_err("Failed to decode tokenfactory module account"))?; + let tokenfactory_module_address = base_account + .expect("tokenfactory base account not found") + .address; let config = Config { tracked_denom: msg.tracked_denom.clone(), - // Temporary save the module address until we can fetch on init - tokenfactory_module_address: msg.tokenfactory_module_address, + tokenfactory_module_address, }; CONFIG.save(deps.storage, &config)?; @@ -120,9 +127,17 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result) -> QuerierResult { + match &request { + QueryRequest::Stargate { path, .. } + if path == "/cosmos.auth.v1beta1.Query/ModuleAccountByName" => + { + let module_account = ModuleAccount { + base_account: Some(BaseAccount { + address: MODULE_ADDRESS.to_string(), + pub_key: None, + account_number: 0, + sequence: 0, + }), + name: TOKEN_FACTORY_MODULE_NAME.to_string(), + permissions: vec![], + }; + let response = QueryModuleAccountByNameResponse { + account: Some(module_account.to_any()), + }; + + SystemResult::Ok(ContractResult::Ok(to_json_binary(&response).unwrap())) + } + _ => SystemResult::Err(SystemError::UnsupportedRequest { + kind: "Unsupported".to_string(), + }), + } + } + } + + impl Querier for CustomMockQuerier { + fn raw_query(&self, bin_request: &[u8]) -> QuerierResult { + let request: QueryRequest = match from_json(bin_request) { + Ok(v) => v, + Err(e) => { + return SystemResult::Err(SystemError::InvalidRequest { + error: format!("Parsing query request: {e}"), + request: bin_request.into(), + }) + } + }; + self.handle_query(&request) + } + } + + fn mock_custom_dependencies() -> OwnedDeps { + OwnedDeps { + storage: MockStorage::default(), + api: MockApi::default(), + querier: CustomMockQuerier, + custom_query_type: PhantomData, + } + } // Basic operations for testing calculations struct TestOperation { @@ -144,7 +214,7 @@ mod tests { #[test] fn track_token_balances() { - let mut deps = mock_dependencies(); + let mut deps = mock_custom_dependencies(); let mut env = mock_env(); let info = mock_info(OWNER, &[]); @@ -196,7 +266,6 @@ mod tests { info, InstantiateMsg { tracked_denom: DENOM.to_string(), - tokenfactory_module_address: MODULE_ADDRESS.to_string(), }, ) .unwrap(); @@ -295,7 +364,7 @@ mod tests { #[test] fn no_track_other_token() { - let mut deps = mock_dependencies(); + let mut deps = mock_custom_dependencies(); let env = mock_env(); let info = mock_info(OWNER, &[]); @@ -305,7 +374,6 @@ mod tests { info, InstantiateMsg { tracked_denom: DENOM.to_string(), - tokenfactory_module_address: MODULE_ADDRESS.to_string(), }, ) .unwrap(); diff --git a/contracts/periphery/tokenfactory_tracker/src/error.rs b/contracts/periphery/tokenfactory_tracker/src/error.rs index 8356b0550..f207b03f2 100644 --- a/contracts/periphery/tokenfactory_tracker/src/error.rs +++ b/contracts/periphery/tokenfactory_tracker/src/error.rs @@ -6,6 +6,6 @@ pub enum ContractError { #[error("{0}")] Std(#[from] StdError), - #[error("Invalid denom, expected {}", expected_denom)] + #[error("Invalid denom, expected {expected_denom}")] InvalidDenom { expected_denom: String }, } diff --git a/packages/astroport/src/tokenfactory_tracker.rs b/packages/astroport/src/tokenfactory_tracker.rs index c477d6e6e..644e27635 100644 --- a/packages/astroport/src/tokenfactory_tracker.rs +++ b/packages/astroport/src/tokenfactory_tracker.rs @@ -3,8 +3,6 @@ use cosmwasm_std::{Coin, CustomQuery, DepsMut, Env, Response, StdResult, Uint128 #[cw_serde] pub struct InstantiateMsg { - // The address of the token factory module - pub tokenfactory_module_address: String, // The denom of the token being tracked pub tracked_denom: String, } From 4dd0ea333ccb99f4daafac901c5b7f5285281955 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 17 Jan 2024 14:08:35 +0400 Subject: [PATCH 37/84] WIP: add tube-based tests --- Cargo.lock | 1545 ++++++++++++++++- .../periphery/tokenfactory_tracker/Cargo.toml | 4 + .../tokenfactory_tracker/src/contract.rs | 5 +- .../tokenfactory_tracker/src/state.rs | 4 +- .../astroport_tokenfactory_tracker.wasm | Bin 0 -> 478567 bytes 5 files changed, 1480 insertions(+), 78 deletions(-) create mode 100755 contracts/periphery/tokenfactory_tracker/tests/test_data/astroport_tokenfactory_tracker.wasm diff --git a/Cargo.lock b/Cargo.lock index 4e9e84de6..0b0577f52 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,21 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "ahash" version = "0.7.6" @@ -13,6 +28,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + [[package]] name = "anyhow" version = "1.0.79" @@ -137,7 +161,7 @@ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ "astroport 3.8.0", - "cosmos-sdk-proto", + "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", @@ -602,7 +626,7 @@ dependencies = [ "cw2 0.15.1", "derivative", "itertools 0.11.0", - "osmosis-std", + "osmosis-std 0.22.0", "thiserror", ] @@ -628,7 +652,9 @@ dependencies = [ "cosmwasm-std", "cw-storage-plus 1.2.0", "cw2 1.1.2", - "osmosis-std", + "osmosis-std 0.22.0", + "osmosis-test-tube", + "test-tube", "thiserror", ] @@ -690,12 +716,38 @@ dependencies = [ "snafu", ] +[[package]] +name = "async-trait" +version = "0.1.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "base16ct" version = "0.1.1" @@ -736,6 +788,45 @@ dependencies = [ "crunchy 0.1.6", ] +[[package]] +name = "bindgen" +version = "0.69.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c69fae65a523209d34240b60abe0c42d33d1045d445c0839d8a4894a736e2d" +dependencies = [ + "bitflags 2.4.2", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "log", + "peeking_take_while", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.48", + "which", +] + +[[package]] +name = "bip32" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e141fb0f8be1c7b45887af94c88b182472b57c96b56773250ae00cd6a14a164" +dependencies = [ + "bs58", + "hmac", + "k256 0.13.2", + "rand_core 0.6.4", + "ripemd", + "sha2 0.10.8", + "subtle", + "zeroize", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -759,9 +850,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "block-buffer" @@ -787,6 +878,21 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab9008b6bb9fc80b5277f2fe481c09e828743d9151203e804583eb4c9e15b31d" +[[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "sha2 0.10.8", +] + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + [[package]] name = "byteorder" version = "1.4.3" @@ -804,13 +910,22 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.81" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c6b2562119bf28c3439f7f02db99faf0aa1a8cdfe5772a2ee155d32227239f0" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "libc", ] +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -826,6 +941,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "clang-sys" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "cloudabi" version = "0.0.3" @@ -841,6 +967,22 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747" +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + [[package]] name = "cosmos-sdk-proto" version = "0.19.0" @@ -849,7 +991,39 @@ checksum = "73c9d2043a9e617b0d602fbc0a0ecd621568edbf3a9774890a6d562389bd8e1c" dependencies = [ "prost 0.11.9", "prost-types 0.11.9", - "tendermint-proto", + "tendermint-proto 0.32.2", +] + +[[package]] +name = "cosmos-sdk-proto" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32560304ab4c365791fd307282f76637213d8083c1a98490c35159cd67852237" +dependencies = [ + "prost 0.12.3", + "prost-types 0.12.3", + "tendermint-proto 0.34.0", +] + +[[package]] +name = "cosmrs" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47126f5364df9387b9d8559dcef62e99010e1d4098f39eb3f7ee4b5c254e40ea" +dependencies = [ + "bip32", + "cosmos-sdk-proto 0.20.0", + "ecdsa 0.16.9", + "eyre", + "k256 0.13.2", + "rand_core 0.6.4", + "serde", + "serde_json", + "signature 2.2.0", + "subtle-encoding", + "tendermint", + "tendermint-rpc", + "thiserror", ] [[package]] @@ -999,6 +1173,19 @@ dependencies = [ "zeroize", ] +[[package]] +name = "curve25519-dalek-ng" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.6.4", + "subtle-ng", + "zeroize", +] + [[package]] name = "cw-multi-test" version = "0.15.1" @@ -1449,6 +1636,29 @@ dependencies = [ "spki 0.7.3", ] +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8 0.10.2", + "signature 2.2.0", +] + +[[package]] +name = "ed25519-consensus" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8465edc8ee7436ffea81d21a019b16676ee3db267aa8d5a8d729581ecf998b" +dependencies = [ + "curve25519-dalek-ng", + "hex", + "rand_core 0.6.4", + "sha2 0.9.9", + "zeroize", +] + [[package]] name = "ed25519-zebra" version = "3.1.0" @@ -1456,7 +1666,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" dependencies = [ "curve25519-dalek", - "hashbrown", + "hashbrown 0.12.3", "hex", "rand_core 0.6.4", "serde", @@ -1510,24 +1720,28 @@ dependencies = [ ] [[package]] -name = "errno" -version = "0.3.2" +name = "encoding_rs" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", + "cfg-if", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -1566,6 +1780,16 @@ dependencies = [ "serde", ] +[[package]] +name = "eyre" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" +dependencies = [ + "indenter", + "once_cell", +] + [[package]] name = "fastrand" version = "2.0.0" @@ -1611,6 +1835,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c606d892c9de11507fa0dcffc116434f94e105d0bbdc4e405b61519464c49d7b" dependencies = [ + "eyre", "paste", ] @@ -1620,6 +1845,15 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + [[package]] name = "forward_ref" version = "1.0.0" @@ -1632,6 +1866,67 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", +] + [[package]] name = "generator-controller" version = "1.3.0" @@ -1681,10 +1976,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "group" version = "0.12.1" @@ -1707,6 +2016,25 @@ dependencies = [ "subtle", ] +[[package]] +name = "h2" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b553656127a00601c8ae5590fcfdc118e4083a7924b6cf4ffc1ea4b99dc429d7" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1716,6 +2044,12 @@ dependencies = [ "ahash", ] +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + [[package]] name = "heapsize" version = "0.4.2" @@ -1725,6 +2059,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "hermit-abi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" + [[package]] name = "hex" version = "0.4.3" @@ -1744,60 +2084,167 @@ dependencies = [ ] [[package]] -name = "impl-rlp" -version = "0.2.1" +name = "home" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "rlp", + "windows-sys 0.52.0", ] [[package]] -name = "impl-serde" -version = "0.2.3" +name = "http" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ - "serde", + "bytes", + "fnv", + "itoa", ] [[package]] -name = "indoc" -version = "1.0.9" +name = "http-body" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] [[package]] -name = "injective-cosmwasm" -version = "0.2.11" +name = "httparse" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4295a2d118cae0e21bba1c856464f6678b5db907cb085b3723d04efb65fa0d0d" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "ethereum-types", - "hex", - "injective-math", - "schemars", - "serde", - "serde_repr", - "subtle-encoding", - "tiny-keccak", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", ] [[package]] -name = "injective-math" -version = "0.1.18" +name = "hyper-rustls" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a4077c240f057406b6efa4bf94bb9e8f86c83687d917c562a02da15466d0a9" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ - "bigint", - "cosmwasm-std", - "ethereum-types", - "num", - "schemars", - "serde", - "subtle-encoding", + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-rlp" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8" +dependencies = [ + "serde", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", +] + +[[package]] +name = "indoc" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" + +[[package]] +name = "injective-cosmwasm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4295a2d118cae0e21bba1c856464f6678b5db907cb085b3723d04efb65fa0d0d" +dependencies = [ + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "ethereum-types", + "hex", + "injective-math", + "schemars", + "serde", + "serde_repr", + "subtle-encoding", + "tiny-keccak", +] + +[[package]] +name = "injective-math" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a4077c240f057406b6efa4bf94bb9e8f86c83687d917c562a02da15466d0a9" +dependencies = [ + "bigint", + "cosmwasm-std", + "ethereum-types", + "num", + "schemars", + "serde", + "subtle-encoding", ] [[package]] @@ -1809,6 +2256,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + [[package]] name = "itertools" version = "0.10.5" @@ -1842,6 +2295,15 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +[[package]] +name = "js-sys" +version = "0.3.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +dependencies = [ + "wasm-bindgen", +] + [[package]] name = "k256" version = "0.11.6" @@ -1874,11 +2336,27 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" -version = "0.2.147" +version = "0.2.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" + +[[package]] +name = "libloading" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] [[package]] name = "libm" @@ -1888,9 +2366,9 @@ checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -1902,6 +2380,18 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + [[package]] name = "memoffset" version = "0.8.0" @@ -1911,6 +2401,48 @@ dependencies = [ "autocfg", ] +[[package]] +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" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "num" version = "0.4.1" @@ -1999,6 +2531,25 @@ dependencies = [ "libm", ] +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.18.0" @@ -2011,6 +2562,28 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "osmosis-std" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e87adf61f03306474ce79ab322d52dfff6b0bcf3aed1e12d8864ac0400dec1bf" +dependencies = [ + "chrono", + "cosmwasm-std", + "osmosis-std-derive", + "prost 0.12.3", + "prost-types 0.12.3", + "schemars", + "serde", + "serde-cw-value", +] + [[package]] name = "osmosis-std" version = "0.22.0" @@ -2040,6 +2613,24 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "osmosis-test-tube" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3a528c942d25d3159634f77953ca0e16c5a450fc44578ad922320128e4025fd" +dependencies = [ + "base64", + "bindgen", + "cosmrs", + "cosmwasm-std", + "osmosis-std 0.21.0", + "prost 0.12.3", + "serde", + "serde_json", + "test-tube", + "thiserror", +] + [[package]] name = "parking_lot" version = "0.12.1" @@ -2060,7 +2651,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.48.1", ] [[package]] @@ -2069,6 +2660,77 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "peg" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07c0b841ea54f523f7aa556956fbd293bcbe06f2e67d2eb732b7278aaf1d166a" +dependencies = [ + "peg-macros", + "peg-runtime", +] + +[[package]] +name = "peg-macros" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aa52829b8decbef693af90202711348ab001456803ba2a98eb4ec8fb70844c" +dependencies = [ + "peg-runtime", + "proc-macro2", + "quote", +] + +[[package]] +name = "peg-runtime" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c719dcf55f09a3a7e764c6649ab594c18a177e3599c467983cdf644bfc0a4088" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "pkcs8" version = "0.9.0" @@ -2095,6 +2757,16 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "prettyplease" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +dependencies = [ + "proc-macro2", + "syn 2.0.48", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2136,7 +2808,7 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.3.3", + "bitflags 2.4.2", "lazy_static", "num-traits", "rand 0.8.5", @@ -2401,12 +3073,75 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + [[package]] name = "regex-syntax" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +[[package]] +name = "reqwest" +version = "0.11.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-native-certs", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "system-configuration", + "tokio", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + [[package]] name = "rfc6979" version = "0.3.1" @@ -2428,6 +3163,29 @@ dependencies = [ "subtle", ] +[[package]] +name = "ring" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +dependencies = [ + "cc", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.48.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "rlp" version = "0.4.6" @@ -2438,22 +3196,77 @@ dependencies = [ ] [[package]] -name = "rustc-hex" -version = "2.1.0" +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hex" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustix" -version = "0.38.6" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee020b1716f0a80e2ace9b03441a749e402e86712f15f16fe8a8f75afac732f" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", ] [[package]] @@ -2474,6 +3287,24 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "schemars" version = "0.8.16" @@ -2504,6 +3335,16 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "sec1" version = "0.3.0" @@ -2532,6 +3373,29 @@ dependencies = [ "zeroize", ] +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "semver" version = "1.0.21" @@ -2618,6 +3482,18 @@ dependencies = [ "syn 2.0.48", ] +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + [[package]] name = "sha2" version = "0.9.9" @@ -2642,6 +3518,12 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "shlex" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" + [[package]] name = "signature" version = "1.6.4" @@ -2670,6 +3552,15 @@ dependencies = [ "pyo3", ] +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + [[package]] name = "smallvec" version = "1.11.0" @@ -2697,6 +3588,22 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "spki" version = "0.6.0" @@ -2744,6 +3651,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "subtle-ng" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" + [[package]] name = "syn" version = "1.0.109" @@ -2766,6 +3679,27 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "target-lexicon" version = "0.12.11" @@ -2782,7 +3716,52 @@ dependencies = [ "fastrand", "redox_syscall", "rustix", - "windows-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "tendermint" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc2294fa667c8b548ee27a9ba59115472d0a09c2ba255771092a7f1dcf03a789" +dependencies = [ + "bytes", + "digest 0.10.7", + "ed25519", + "ed25519-consensus", + "flex-error", + "futures", + "k256 0.13.2", + "num-traits", + "once_cell", + "prost 0.12.3", + "prost-types 0.12.3", + "ripemd", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "sha2 0.10.8", + "signature 2.2.0", + "subtle", + "subtle-encoding", + "tendermint-proto 0.34.0", + "time", + "zeroize", +] + +[[package]] +name = "tendermint-config" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a25dbe8b953e80f3d61789fbdb83bf9ad6c0ef16df5ca6546f49912542cc137" +dependencies = [ + "flex-error", + "serde", + "serde_json", + "tendermint", + "toml", + "url", ] [[package]] @@ -2803,6 +3782,56 @@ dependencies = [ "time", ] +[[package]] +name = "tendermint-proto" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc728a4f9e891d71adf66af6ecaece146f9c7a11312288a3107b3e1d6979aaf" +dependencies = [ + "bytes", + "flex-error", + "num-derive", + "num-traits", + "prost 0.12.3", + "prost-types 0.12.3", + "serde", + "serde_bytes", + "subtle-encoding", + "time", +] + +[[package]] +name = "tendermint-rpc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbf0a4753b46a190f367337e0163d0b552a2674a6bac54e74f9f2cdcde2969b" +dependencies = [ + "async-trait", + "bytes", + "flex-error", + "futures", + "getrandom", + "peg", + "pin-project", + "reqwest", + "semver", + "serde", + "serde_bytes", + "serde_json", + "subtle", + "subtle-encoding", + "tendermint", + "tendermint-config", + "tendermint-proto 0.34.0", + "thiserror", + "time", + "tokio", + "tracing", + "url", + "uuid", + "walkdir", +] + [[package]] name = "test-case" version = "3.2.1" @@ -2838,6 +3867,22 @@ dependencies = [ "test-case-core", ] +[[package]] +name = "test-tube" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17f30e7fea966bde5f9933a4cb2db79dd272115ea19d1656da2aac7ce0700fa" +dependencies = [ + "base64", + "cosmrs", + "cosmwasm-std", + "osmosis-std 0.21.0", + "prost 0.12.3", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "thiserror" version = "1.0.56" @@ -2865,6 +3910,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" dependencies = [ "deranged", + "serde", "time-core", "time-macros", ] @@ -2893,6 +3939,113 @@ dependencies = [ "crunchy 0.2.2", ] +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + [[package]] name = "typenum" version = "1.16.0" @@ -2929,18 +4082,56 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "unicode-bidi" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" + [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + [[package]] name = "unindent" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" + [[package]] name = "valkyrie" version = "1.0.8-beta.1" @@ -3030,12 +4221,119 @@ dependencies = [ "libc", ] +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasm-bindgen" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.48", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" + +[[package]] +name = "web-sys" +version = "0.3.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + [[package]] name = "winapi" version = "0.3.9" @@ -3052,6 +4350,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -3064,7 +4371,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.1", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] @@ -3073,13 +4389,28 @@ version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -3088,44 +4419,110 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "zeroize" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] diff --git a/contracts/periphery/tokenfactory_tracker/Cargo.toml b/contracts/periphery/tokenfactory_tracker/Cargo.toml index 0ae5a3c4c..e7a815e8e 100644 --- a/contracts/periphery/tokenfactory_tracker/Cargo.toml +++ b/contracts/periphery/tokenfactory_tracker/Cargo.toml @@ -17,3 +17,7 @@ cosmwasm-schema = "1.5" thiserror = "1.0" astroport = { path = "../../../packages/astroport", version = "3" } osmosis-std = "0.22.0" + +[dev-dependencies] +osmosis-test-tube = "21.0.0" +test-tube = "0.3.0" diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index 26818e068..b6072c500 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -1,6 +1,6 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, StdError, StdResult}; +use cosmwasm_std::{Addr, DepsMut, Env, MessageInfo, Response, StdError, StdResult}; use cw2::set_contract_version; use osmosis_std::types::cosmos::auth::v1beta1::{AuthQuerier, ModuleAccount}; @@ -22,6 +22,7 @@ pub fn instantiate( ) -> Result { set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + // TODO: requires a chain to whitelist Stargate query /cosmos.auth.v1beta1.Query/ModuleAccountByName // Determine tokenfactory module address let ModuleAccount { base_account, .. } = AuthQuerier::new(&deps.querier) .module_account_by_name(TOKEN_FACTORY_MODULE_NAME.to_string())? @@ -35,7 +36,7 @@ pub fn instantiate( let config = Config { tracked_denom: msg.tracked_denom.clone(), - tokenfactory_module_address, + tokenfactory_module_address: Addr::unchecked(&tokenfactory_module_address), // We fetched the address from the chain, so we know it's valid }; CONFIG.save(deps.storage, &config)?; diff --git a/contracts/periphery/tokenfactory_tracker/src/state.rs b/contracts/periphery/tokenfactory_tracker/src/state.rs index 954a16c1a..ac91b5621 100644 --- a/contracts/periphery/tokenfactory_tracker/src/state.rs +++ b/contracts/periphery/tokenfactory_tracker/src/state.rs @@ -1,11 +1,11 @@ use cosmwasm_schema::cw_serde; -use cosmwasm_std::Uint128; +use cosmwasm_std::{Addr, Uint128}; use cw_storage_plus::{Item, Map, SnapshotMap, Strategy}; #[cw_serde] pub struct Config { pub tracked_denom: String, - pub tokenfactory_module_address: String, + pub tokenfactory_module_address: Addr, } pub const CONFIG: Item = Item::new("config"); diff --git a/contracts/periphery/tokenfactory_tracker/tests/test_data/astroport_tokenfactory_tracker.wasm b/contracts/periphery/tokenfactory_tracker/tests/test_data/astroport_tokenfactory_tracker.wasm new file mode 100755 index 0000000000000000000000000000000000000000..abfac53e3b8f6c606e4518e58543e0e0271ec68b GIT binary patch literal 478567 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 {1 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

E{Nx$t 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ã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 z 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 Date: Thu, 18 Jan 2024 14:21:47 +0400 Subject: [PATCH 38/84] rework tf tracker and add tube-based tests --- Cargo.lock | 2 +- .../periphery/tokenfactory_tracker/Cargo.toml | 2 +- .../periphery/tokenfactory_tracker/README.md | 10 +- .../tokenfactory_tracker/src/contract.rs | 242 +++++------- .../tokenfactory_tracker/src/query.rs | 27 +- .../tokenfactory_tracker/src/state.rs | 23 +- .../astroport_tokenfactory_tracker.wasm | Bin 478567 -> 201983 bytes .../tests/tube-based-e2e.rs | 355 ++++++++++++++++++ .../astroport/src/tokenfactory_tracker.rs | 240 +----------- 9 files changed, 477 insertions(+), 424 deletions(-) create mode 100644 contracts/periphery/tokenfactory_tracker/tests/tube-based-e2e.rs diff --git a/Cargo.lock b/Cargo.lock index 0b0577f52..f25054262 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -652,7 +652,7 @@ dependencies = [ "cosmwasm-std", "cw-storage-plus 1.2.0", "cw2 1.1.2", - "osmosis-std 0.22.0", + "osmosis-std 0.21.0", "osmosis-test-tube", "test-tube", "thiserror", diff --git a/contracts/periphery/tokenfactory_tracker/Cargo.toml b/contracts/periphery/tokenfactory_tracker/Cargo.toml index e7a815e8e..79a0dd2db 100644 --- a/contracts/periphery/tokenfactory_tracker/Cargo.toml +++ b/contracts/periphery/tokenfactory_tracker/Cargo.toml @@ -16,8 +16,8 @@ cw-storage-plus = "1.2" cosmwasm-schema = "1.5" thiserror = "1.0" astroport = { path = "../../../packages/astroport", version = "3" } -osmosis-std = "0.22.0" [dev-dependencies] +osmosis-std = "0.21" osmosis-test-tube = "21.0.0" test-tube = "0.3.0" diff --git a/contracts/periphery/tokenfactory_tracker/README.md b/contracts/periphery/tokenfactory_tracker/README.md index 8c982e450..6b793492d 100644 --- a/contracts/periphery/tokenfactory_tracker/README.md +++ b/contracts/periphery/tokenfactory_tracker/README.md @@ -47,7 +47,7 @@ If timestamp is not set, it will return the value at the current timestamp. { "balance_at": { "address": "wasm1...addr", - "timestamp": "1698745413" + "timestamp": 1698745413 } } ``` @@ -60,11 +60,7 @@ If timestamp is not set, it will return the value at the current timestamp. ```json { "total_supply_at": { - "timestamp": "1698745413" + "timestamp": 1698745413 } } -``` - -## MigrateMsg - -This contract has no migrations \ No newline at end of file +``` \ No newline at end of file diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index b6072c500..b75ebeaa4 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -1,15 +1,13 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{Addr, DepsMut, Env, MessageInfo, Response, StdError, StdResult}; +use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, StdError, Storage, Uint128}; use cw2::set_contract_version; -use osmosis_std::types::cosmos::auth::v1beta1::{AuthQuerier, ModuleAccount}; use astroport::tokenfactory_tracker::{InstantiateMsg, SudoMsg}; use crate::error::ContractError; use crate::state::{Config, BALANCES, CONFIG, TOTAL_SUPPLY_HISTORY}; -const TOKEN_FACTORY_MODULE_NAME: &str = "tokenfactory"; const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -22,123 +20,117 @@ pub fn instantiate( ) -> Result { set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - // TODO: requires a chain to whitelist Stargate query /cosmos.auth.v1beta1.Query/ModuleAccountByName - // Determine tokenfactory module address - let ModuleAccount { base_account, .. } = AuthQuerier::new(&deps.querier) - .module_account_by_name(TOKEN_FACTORY_MODULE_NAME.to_string())? - .account - .expect("tokenfactory module account not found") - .try_into() - .map_err(|_| StdError::generic_err("Failed to decode tokenfactory module account"))?; - let tokenfactory_module_address = base_account - .expect("tokenfactory base account not found") - .address; + deps.api.addr_validate(&msg.tokenfactory_module_address)?; let config = Config { - tracked_denom: msg.tracked_denom.clone(), - tokenfactory_module_address: Addr::unchecked(&tokenfactory_module_address), // We fetched the address from the chain, so we know it's valid + d: msg.tracked_denom.clone(), + m: msg.tokenfactory_module_address, }; CONFIG.save(deps.storage, &config)?; Ok(Response::default() .add_attribute("action", "instantiate") .add_attribute("contract", CONTRACT_NAME) - .add_attribute("tracked_denom", config.tracked_denom) - .add_attribute( - "tokenfactory_module_address", - config.tokenfactory_module_address, - )) + .add_attribute("tracked_denom", config.d) + .add_attribute("tokenfactory_module_address", config.m)) } #[cfg_attr(not(feature = "library"), entry_point)] pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result { match msg { - // BlockBeforeSend is called before a send - if an error is returned the send - // is cancelled. This call is NOT gas metered. - // NOTE: Contract logic relies on the fact SudoMsg::BlockBeforeSend is always called before SudoMsg::TrackBeforeSend. - // Ref: https://github.com/osmosis-labs/cosmos-sdk/blob/55b53a127b6937d66a40084e9f7383a3762ea7f5/x/bank/keeper/send.go#L210-L223 - SudoMsg::BlockBeforeSend { amount, .. } => { + // BlockBeforeSend is called before a send - if an error is returned the send is cancelled. + // This call doesn't have gas limitations but the gas used due to calling this contract contributes to the total tx gas. + // Extended bank module calls BlockBeforeSend and TrackBeforeSend sequentially on mint, send and burn actions. + // Ref: https://github.com/neutron-org/cosmos-sdk/blob/28f3db48a7ae038e9ccdd2bae632cb21c1c9de86/x/bank/keeper/send.go#L207-L223 + SudoMsg::BlockBeforeSend { from, to, amount } => { let config = CONFIG.load(deps.storage)?; // Ensure the denom being sent is the tracked denom // If this isn't checked, another token could be tracked with the same // contract and that will skew the real numbers - if amount.denom != config.tracked_denom { + if amount.denom != config.d { Err(ContractError::InvalidDenom { - expected_denom: config.tracked_denom, + expected_denom: config.d, }) } else { - Ok(Response::default()) - } - } - // TrackBeforeSend is called before a send - if an error is returned it will - // be ignored and the send will continue - // Minting a token directly to an address is also tracked - SudoMsg::TrackBeforeSend { from, to, amount } => { - let config = CONFIG.load(deps.storage)?; - - // If the token is minted directly to an address, we don't need to subtract - // as the sender is the module address - if from != config.tokenfactory_module_address { - BALANCES.update( + // If this function throws error all send, mint and burn actions will be blocked. + // However, balances query will still work, hence governance will be able to recover the contract. + track_balances( deps.storage, - &from, env.block.time.seconds(), - |balance| -> StdResult<_> { - Ok(balance.unwrap_or_default().checked_sub(amount.amount)?) - }, - )?; - } else { - // Minted new tokens - TOTAL_SUPPLY_HISTORY.update( - deps.storage, - env.block.time.seconds(), - |balance| -> StdResult<_> { - Ok(balance.unwrap_or_default().checked_add(amount.amount)?) - }, - )?; + &config, + from, + to, + amount.amount, + ) } + } + // tokenfactory enforces hard gas limit 100k on TrackBeforeSend of which 60k is a flat contract initialization. + // Hence, we have only up to 40k gas to handle our logic. If TrackBeforeSend hits the limit it is silently ignored on chain level, + // making balance tracking broken with no way to recover. + // Balance tracking feature is crucial for Astroport and Neutron DAOs thus we deliberately abuse SudoMsg::BlockBeforeSend + // because it is not gas metered and we can do all the logic we need. + // Ref: https://github.com/neutron-org/neutron/blob/57a25eb719eb0db973543f9d54ace484ac098721/x/tokenfactory/keeper/before_send.go#L143-L150 + SudoMsg::TrackBeforeSend { .. } => Ok(Response::default()), + } +} - // When burning tokens, the receiver is the token factory module address - // Sending tokens to the module address isn't allowed by the chain - if to != config.tokenfactory_module_address { - BALANCES.update( - deps.storage, - &to, - env.block.time.seconds(), - |balance| -> StdResult<_> { - Ok(balance.unwrap_or_default().checked_add(amount.amount)?) - }, - )?; - } else { - // Burned tokens - TOTAL_SUPPLY_HISTORY.update( - deps.storage, - env.block.time.seconds(), - |balance| -> StdResult<_> { - Ok(balance.unwrap_or_default().checked_sub(amount.amount)?) - }, - )?; - } +/// Track balance and total supply changes. +/// Only tokenfactory module itself can change supply by minting and burning tokens. +/// Only denom admin can dispatch mint/burn messages to the module. +/// Sending tokens to the tokenfactory module address isn't allowed by the chain. +/// Thus, +/// - if from == module_address -> mint +/// - if to == module_address -> burn +/// - other scenarios are simple transfers between addresses +/// Possible errors: +/// - serialization/deserialization errors. Should never happen if both BALANCES and TOTAL_SUPPLY_HISTORY storage keys and data layout are not changed. +/// - attempt to subtract from zero balance or reduce empty total supply. Highly unlikely possible. Might happen due to errors in the tokenfactory module. +/// - attempt to add with overflow. First will happen on total supply increase. Possible if total supply is greater than 2^128 - 1. +pub fn track_balances( + storage: &mut dyn Storage, + block_ts: u64, + config: &Config, + from: String, + to: String, + amount: Uint128, +) -> Result { + // If the token is minted directly to an address, we don't need to subtract + // as the sender is the module address + if from.ne(&config.m) { + BALANCES.update::<_, StdError>(storage, &from, block_ts, |balance| { + Ok(balance.unwrap_or_default().checked_sub(amount)?) + })?; + } else { + // Minted new tokens + TOTAL_SUPPLY_HISTORY.update::<_, StdError>(storage, block_ts, |balance| { + Ok(balance.unwrap_or_default().checked_add(amount)?) + })?; + } - Ok(Response::default()) - } + // When burning tokens, the receiver is the token factory module address + // Sending tokens to the module address isn't allowed by the chain + if to.ne(&config.m) { + BALANCES.update::<_, StdError>(storage, &to, block_ts, |balance| { + Ok(balance.unwrap_or_default().checked_add(amount)?) + })?; + } else { + // Burned tokens + TOTAL_SUPPLY_HISTORY.update::<_, StdError>(storage, block_ts, |balance| { + Ok(balance.unwrap_or_default().checked_sub(amount)?) + })?; } + + Ok(Response::default()) } #[cfg(test)] mod tests { - use std::marker::PhantomData; - - use cosmwasm_std::testing::{MockApi, MockStorage}; + use cosmwasm_std::testing::mock_dependencies; use cosmwasm_std::{ from_json, testing::{mock_env, mock_info}, - to_json_binary, Coin, ContractResult, Empty, OwnedDeps, Querier, QuerierResult, - QueryRequest, SystemError, SystemResult, Uint128, Uint64, - }; - use osmosis_std::types::cosmos::auth::v1beta1::{ - BaseAccount, QueryModuleAccountByNameResponse, + to_json_binary, Coin, Uint128, }; use astroport::tokenfactory_tracker::QueryMsg; @@ -151,61 +143,6 @@ mod tests { const DENOM: &str = "factory/contract0/token"; const MODULE_ADDRESS: &str = "tokenfactory_module"; - struct CustomMockQuerier; - - impl CustomMockQuerier { - pub fn handle_query(&self, request: &QueryRequest) -> QuerierResult { - match &request { - QueryRequest::Stargate { path, .. } - if path == "/cosmos.auth.v1beta1.Query/ModuleAccountByName" => - { - let module_account = ModuleAccount { - base_account: Some(BaseAccount { - address: MODULE_ADDRESS.to_string(), - pub_key: None, - account_number: 0, - sequence: 0, - }), - name: TOKEN_FACTORY_MODULE_NAME.to_string(), - permissions: vec![], - }; - let response = QueryModuleAccountByNameResponse { - account: Some(module_account.to_any()), - }; - - SystemResult::Ok(ContractResult::Ok(to_json_binary(&response).unwrap())) - } - _ => SystemResult::Err(SystemError::UnsupportedRequest { - kind: "Unsupported".to_string(), - }), - } - } - } - - impl Querier for CustomMockQuerier { - fn raw_query(&self, bin_request: &[u8]) -> QuerierResult { - let request: QueryRequest = match from_json(bin_request) { - Ok(v) => v, - Err(e) => { - return SystemResult::Err(SystemError::InvalidRequest { - error: format!("Parsing query request: {e}"), - request: bin_request.into(), - }) - } - }; - self.handle_query(&request) - } - } - - fn mock_custom_dependencies() -> OwnedDeps { - OwnedDeps { - storage: MockStorage::default(), - api: MockApi::default(), - querier: CustomMockQuerier, - custom_query_type: PhantomData, - } - } - // Basic operations for testing calculations struct TestOperation { from: String, @@ -215,7 +152,7 @@ mod tests { #[test] fn track_token_balances() { - let mut deps = mock_custom_dependencies(); + let mut deps = mock_dependencies(); let mut env = mock_env(); let info = mock_info(OWNER, &[]); @@ -266,6 +203,7 @@ mod tests { env.clone(), info, InstantiateMsg { + tokenfactory_module_address: MODULE_ADDRESS.to_string(), tracked_denom: DENOM.to_string(), }, ) @@ -275,7 +213,7 @@ mod tests { sudo( deps.as_mut(), env.clone(), - SudoMsg::TrackBeforeSend { + SudoMsg::BlockBeforeSend { from, to, amount: Coin { @@ -294,7 +232,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user1".to_string(), - timestamp: Some(Uint64::from(env.block.time.seconds())), + timestamp: Some(env.block.time.seconds()), }, ) .unwrap(); @@ -305,7 +243,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user2".to_string(), - timestamp: Some(Uint64::from(env.block.time.seconds())), + timestamp: Some(env.block.time.seconds()), }, ) .unwrap(); @@ -316,7 +254,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user3".to_string(), - timestamp: Some(Uint64::from(env.block.time.seconds())), + timestamp: Some(env.block.time.seconds()), }, ) .unwrap(); @@ -348,11 +286,14 @@ mod tests { deps.as_ref(), env.clone(), QueryMsg::TotalSupplyAt { - timestamp: Some(Uint64::from(env.block.time.seconds())), + timestamp: Some(env.block.time.seconds()), }, ) .unwrap(); - assert_eq!(balance, to_json_binary(&expected_total_supply).unwrap()); + assert_eq!( + from_json::(&balance).unwrap(), + expected_total_supply + ); let balance = query( deps.as_ref(), @@ -365,7 +306,7 @@ mod tests { #[test] fn no_track_other_token() { - let mut deps = mock_custom_dependencies(); + let mut deps = mock_dependencies(); let env = mock_env(); let info = mock_info(OWNER, &[]); @@ -374,6 +315,7 @@ mod tests { env.clone(), info, InstantiateMsg { + tokenfactory_module_address: MODULE_ADDRESS.to_string(), tracked_denom: DENOM.to_string(), }, ) @@ -408,7 +350,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user1".to_string(), - timestamp: Some(Uint64::from(env.block.time.seconds())), + timestamp: Some(env.block.time.seconds()), }, ) .unwrap(); diff --git a/contracts/periphery/tokenfactory_tracker/src/query.rs b/contracts/periphery/tokenfactory_tracker/src/query.rs index 8fe5f5d6f..e82c56b3d 100644 --- a/contracts/periphery/tokenfactory_tracker/src/query.rs +++ b/contracts/periphery/tokenfactory_tracker/src/query.rs @@ -1,7 +1,6 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_json_binary, Binary, Deps, Env, Order, StdResult, Uint128, Uint64}; -use cw_storage_plus::Bound; +use cosmwasm_std::{to_json_binary, Binary, Deps, Env, StdResult, Uint128}; use astroport::tokenfactory_tracker::QueryMsg; @@ -13,32 +12,24 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::BalanceAt { address, timestamp } => to_json_binary(&balance_at( deps, address, - timestamp.unwrap_or_else(|| Uint64::from(env.block.time.seconds())), + timestamp.unwrap_or_else(|| env.block.time.seconds()), )?), QueryMsg::TotalSupplyAt { timestamp } => to_json_binary(&total_supply_at( deps, - timestamp.unwrap_or_else(|| Uint64::from(env.block.time.seconds())), + timestamp.unwrap_or_else(|| env.block.time.seconds()), )?), } } -fn balance_at(deps: Deps, address: String, timestamp: Uint64) -> StdResult { +fn balance_at(deps: Deps, address: String, timestamp: u64) -> StdResult { let balance = BALANCES - .may_load_at_height(deps.storage, &address, timestamp.u64())? + .may_load_at_height(deps.storage, &address, timestamp)? .unwrap_or_default(); Ok(balance) } -fn total_supply_at(deps: Deps, timestamp: Uint64) -> StdResult { - let end = Bound::inclusive(timestamp); - let last_value_up_to_timestamp = TOTAL_SUPPLY_HISTORY - .range(deps.storage, None, Some(end), Order::Descending) - .next(); - - if let Some(value) = last_value_up_to_timestamp { - let (_, v) = value?; - return Ok(v); - } - - Ok(Uint128::zero()) +fn total_supply_at(deps: Deps, timestamp: u64) -> StdResult { + TOTAL_SUPPLY_HISTORY + .may_load_at_height(deps.storage, timestamp) + .map(|res| res.unwrap_or_default()) } diff --git a/contracts/periphery/tokenfactory_tracker/src/state.rs b/contracts/periphery/tokenfactory_tracker/src/state.rs index ac91b5621..3d66b2935 100644 --- a/contracts/periphery/tokenfactory_tracker/src/state.rs +++ b/contracts/periphery/tokenfactory_tracker/src/state.rs @@ -1,22 +1,21 @@ use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Addr, Uint128}; -use cw_storage_plus::{Item, Map, SnapshotMap, Strategy}; +use cosmwasm_std::Uint128; +use cw_storage_plus::{Item, SnapshotItem, SnapshotMap, Strategy}; #[cw_serde] pub struct Config { - pub tracked_denom: String, - pub tokenfactory_module_address: Addr, + /// Tracked denom + pub d: String, + /// Token factory module address + pub m: String, } -pub const CONFIG: Item = Item::new("config"); +pub const CONFIG: Item = Item::new("c"); /// Contains snapshotted balances at every block. -pub const BALANCES: SnapshotMap<&String, Uint128> = SnapshotMap::new( - "balance", - "balance__checkpoints", - "balance__changelog", - Strategy::EveryBlock, -); +pub const BALANCES: SnapshotMap<&str, Uint128> = + SnapshotMap::new("b", "b_chpts", "b_chlg", Strategy::EveryBlock); /// Contains the history of the total supply of the tracked denom -pub const TOTAL_SUPPLY_HISTORY: Map = Map::new("total_supply_history"); +pub const TOTAL_SUPPLY_HISTORY: SnapshotItem = + SnapshotItem::new("t", "t_chpts", "t_chlg", Strategy::EveryBlock); diff --git a/contracts/periphery/tokenfactory_tracker/tests/test_data/astroport_tokenfactory_tracker.wasm b/contracts/periphery/tokenfactory_tracker/tests/test_data/astroport_tokenfactory_tracker.wasm index abfac53e3b8f6c606e4518e58543e0e0271ec68b..188cf06b897e1dc77980843d694a30c3e0b86689 100755 GIT binary patch delta 64096 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 {1 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

E{Nx$t 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ã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 z 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 { + wasm: Wasm<'a, OsmosisTestApp>, + bank: Bank<'a, OsmosisTestApp>, + tf: TokenFactory<'a, OsmosisTestApp>, + owner: SigningAccount, + tokenfactory_module_address: String, +} + +impl<'a> TestSuite<'a> { + fn new(app: &'a OsmosisTestApp) -> Self { + let wasm = Wasm::new(app); + let bank = Bank::new(app); + let tf = TokenFactory::new(app); + let signer = app + .init_account(&[coin(1_500_000e6 as u128, "uosmo")]) + .unwrap(); + + let ModuleAccount { base_account, .. } = app + .query::( + "/cosmos.auth.v1beta1.Query/ModuleAccountByName", + &QueryModuleAccountByNameRequest { + name: "tokenfactory".to_string(), + }, + ) + .unwrap() + .account + .unwrap() + .try_into() + .unwrap(); + + Self { + wasm, + bank, + tf, + owner: signer, + tokenfactory_module_address: base_account.unwrap().address, + } + } + + fn create_denom(&self, subdenom: &str) -> String { + let denom = self + .tf + .create_denom( + MsgCreateDenom { + sender: self.owner.address(), + subdenom: subdenom.to_string(), + }, + &self.owner, + ) + .unwrap() + .data + .new_token_denom; + + denom + } + + fn mint(&self, denom: &str, amount: impl Into, to: &str) { + let amount: Uint128 = amount.into(); + self.tf + .mint( + MsgMint { + sender: self.owner.address(), + amount: Some(Coin { + denom: denom.to_string(), + amount: amount.to_string(), + }), + mint_to_address: to.to_string(), + }, + &self.owner, + ) + .unwrap(); + } + + fn instantiate_tracker(&self, denom: &str) -> String { + let code_id = self + .wasm + .store_code(&std::fs::read(TRACKER_WASM).unwrap(), None, &self.owner) + .unwrap() + .data + .code_id; + + let init_msg = InstantiateMsg { + tokenfactory_module_address: self.tokenfactory_module_address.clone(), + tracked_denom: denom.to_string(), + }; + let tracker_addr = self + .wasm + .instantiate(code_id, &init_msg, None, Some("label"), &[], &self.owner) + .unwrap() + .data + .address; + + tracker_addr + } + + fn set_before_send_hook(&self, denom: &str, tracker_addr: &str, app: &OsmosisTestApp) { + let set_hook_msg = MsgSetBeforeSendHook { + sender: self.owner.address(), + denom: denom.to_string(), + cosmwasm_address: tracker_addr.to_string(), + }; + app.execute::<_, MsgSetBeforeSendHookResponse>( + set_hook_msg, + MsgSetBeforeSendHook::TYPE_URL, + &self.owner, + ) + .unwrap(); + } + + fn balance_at( + &self, + tracker_addr: &str, + user: &str, + timestamp: Option, + ) -> RunnerResult { + self.wasm.query( + &tracker_addr, + &QueryMsg::BalanceAt { + address: user.to_string(), + timestamp, + }, + ) + } + + fn supply_at(&self, tracker_addr: &str, timestamp: Option) -> RunnerResult { + self.wasm + .query(&tracker_addr, &QueryMsg::TotalSupplyAt { timestamp }) + } +} + +#[test] +fn ensure_tracking_on_mint() { + let app = OsmosisTestApp::new(); + let ts = TestSuite::new(&app); + + let denom = ts.create_denom("test"); + let tracker_addr = ts.instantiate_tracker(&denom); + ts.set_before_send_hook(&denom, &tracker_addr, &app); + + let user = app.init_account(&[]).unwrap(); + + let balance_before = ts.balance_at(&tracker_addr, &user.address(), None).unwrap(); + assert_eq!(balance_before.u128(), 0u128); + + // Total supply is also 0 + let supply_before = ts.supply_at(&tracker_addr, None).unwrap(); + assert_eq!(supply_before.u128(), 0u128); + + ts.mint(&denom, 1000u128, &user.address()); + + // Move time forward so SnapshotMap can be queried + app.increase_time(10); + + let bank_bal = ts + .bank + .query_balance(&QueryBalanceRequest { + address: user.address(), + denom: denom.clone(), + }) + .unwrap() + .balance + .unwrap() + .amount; + assert_eq!(bank_bal, 1000u128.to_string()); + + let balance_after = ts.balance_at(&tracker_addr, &user.address(), None).unwrap(); + assert_eq!(balance_after.u128(), 1000u128); + let supply_after = ts.supply_at(&tracker_addr, None).unwrap(); + assert_eq!(supply_after.u128(), 1000u128); +} + +#[test] +fn ensure_tracking_on_send() { + let app = OsmosisTestApp::new(); + let ts = TestSuite::new(&app); + let denom = ts.create_denom("test"); + let tracker_addr = ts.instantiate_tracker(&denom); + ts.set_before_send_hook(&denom, &tracker_addr, &app); + + // Mint tokens to owner + ts.mint(&denom, 1000u128, &ts.owner.address()); + + let user = app.init_account(&[]).unwrap(); + + let balance_before = ts.balance_at(&tracker_addr, &user.address(), None).unwrap(); + assert_eq!(balance_before.u128(), 0u128); + + // Send owner -> user + ts.bank + .send( + MsgSend { + from_address: ts.owner.address(), + to_address: user.address(), + amount: vec![coin(1000u128, &denom).into()], + }, + &ts.owner, + ) + .unwrap(); + + app.increase_time(10); + + let bank_bal = ts + .bank + .query_balance(&QueryBalanceRequest { + address: user.address(), + denom: denom.clone(), + }) + .unwrap() + .balance + .unwrap() + .amount; + assert_eq!(bank_bal, 1000u128.to_string()); + + let balance_after = ts.balance_at(&tracker_addr, &user.address(), None).unwrap(); + assert_eq!(balance_after.u128(), 1000u128); + let supply_after = ts.supply_at(&tracker_addr, None).unwrap(); + assert_eq!(supply_after.u128(), 1000u128); +} + +#[test] +fn ensure_tracking_on_burn() { + let app = OsmosisTestApp::new(); + let ts = TestSuite::new(&app); + let denom = ts.create_denom("test"); + let tracker_addr = ts.instantiate_tracker(&denom); + ts.set_before_send_hook(&denom, &tracker_addr, &app); + + // Mint tokens to owner + ts.mint(&denom, 1000u128, &ts.owner.address()); + + app.increase_time(10); + + let balance_before = ts + .balance_at(&tracker_addr, &ts.owner.address(), None) + .unwrap(); + assert_eq!(balance_before.u128(), 1000u128); + + // Burn from owner + ts.tf + .burn( + MsgBurn { + sender: ts.owner.address(), + amount: Some(coin(1000u128, &denom).into()), + burn_from_address: ts.owner.address(), + }, + &ts.owner, + ) + .unwrap(); + + app.increase_time(10); + + let balance_after = ts + .balance_at(&tracker_addr, &ts.owner.address(), None) + .unwrap(); + assert_eq!(balance_after.u128(), 0u128); + let supply_after = ts.supply_at(&tracker_addr, None).unwrap(); + assert_eq!(supply_after.u128(), 0u128); +} + +#[test] +fn ensure_sending_to_module_prohibited() { + let app = OsmosisTestApp::new(); + let ts = TestSuite::new(&app); + let denom = ts.create_denom("test"); + let tracker_addr = ts.instantiate_tracker(&denom); + ts.set_before_send_hook(&denom, &tracker_addr, &app); + + // Mint tokens to owner + ts.mint(&denom, 1000u128, &ts.owner.address()); + + // Send owner -> tokenfactory module address + let err = ts + .bank + .send( + MsgSend { + from_address: ts.owner.address(), + to_address: ts.tokenfactory_module_address.clone(), + amount: vec![coin(1000u128, &denom).into()], + }, + &ts.owner, + ) + .unwrap_err(); + + assert!( + err.to_string().contains(&format!( + "{} is not allowed to receive funds: unauthorized", + ts.tokenfactory_module_address + )), + "Unexpected error message: {err}", + ) +} + +#[test] +fn test_historical_queries() { + let app = OsmosisTestApp::new(); + let ts = TestSuite::new(&app); + + let denom = ts.create_denom("test"); + let tracker_addr = ts.instantiate_tracker(&denom); + ts.set_before_send_hook(&denom, &tracker_addr, &app); + + let user = app.init_account(&[]).unwrap(); + + let balance_before = ts.balance_at(&tracker_addr, &user.address(), None).unwrap(); + assert_eq!(balance_before.u128(), 0u128); + // Total supply is also 0 + let supply_before = ts.supply_at(&tracker_addr, None).unwrap(); + assert_eq!(supply_before.u128(), 0u128); + + let mut history: HashMap = HashMap::new(); + let mut acc = 0u128; + for i in 0..20 { + ts.mint(&denom, 1000u128, &user.address()); + + acc += 1000u128; + + let block_ts = app.get_block_timestamp().seconds(); + // Balance change takes place in the next block. Add 1 to ensure we'll query the next block + history.insert(block_ts + 1, acc.into()); + + app.increase_time(10 * i); + } + + // Shift time by 1 day + app.increase_time(86400); + + for (block_ts, amount) in history { + let balance = ts + .balance_at(&tracker_addr, &user.address(), Some(block_ts)) + .unwrap(); + assert_eq!(balance, amount); + + let total_supply = ts.supply_at(&tracker_addr, Some(block_ts)).unwrap(); + assert_eq!(total_supply, amount); + } +} diff --git a/packages/astroport/src/tokenfactory_tracker.rs b/packages/astroport/src/tokenfactory_tracker.rs index 644e27635..94c7ff2b2 100644 --- a/packages/astroport/src/tokenfactory_tracker.rs +++ b/packages/astroport/src/tokenfactory_tracker.rs @@ -1,8 +1,10 @@ use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{Coin, CustomQuery, DepsMut, Env, Response, StdResult, Uint128, Uint64}; +use cosmwasm_std::{Coin, Uint128}; #[cw_serde] pub struct InstantiateMsg { + // The address of the token factory module + pub tokenfactory_module_address: String, // The denom of the token being tracked pub tracked_denom: String, } @@ -37,240 +39,8 @@ pub enum QueryMsg { #[returns(Uint128)] BalanceAt { address: String, - timestamp: Option, + timestamp: Option, }, #[returns(Uint128)] - TotalSupplyAt { timestamp: Option }, + TotalSupplyAt { timestamp: Option }, } - -// Sudo endpoint called by chain before sending tokens -// Errors returned by this endpoint will prevent the transaction from being sent -pub fn block_before_send( - _deps: DepsMut, - _env: Env, - // The address being sent from - _from: String, - // The address being sent to - _to: String, - // The amount and denom being sent - _amount: Coin, -) -> StdResult> -where - C: CustomQuery, -{ - Ok(Response::new()) -} - -// Sudo endpoint called by chain before sending tokens -// Errors returned by this endpoint will NOT prevent the transaction from being sent -pub fn track_before_send( - _deps: DepsMut, - _env: Env, - // The address being sent from - _from: String, - // The address being sent to - _to: String, - // The amount and denom being sent - _amount: Coin, -) -> StdResult> -where - C: CustomQuery, -{ - // let config = CONFIG.load(deps.storage)?; - - // // Ensure the denom being sent is the tracked denom - // // If this isn't checked, another token could be tracked with the same - // // contract and that will skew the real numbers - // if amount.denom != config.tracked_denom { - // return Err(ContractError::InvalidDenom { - // expected_denom: config.tracked_denom, - // }); - // } - - // // If the token is minted directly to an address, we don't need to subtract - // // as the sender is the module address - // if from != config.tokenfactory_module_address { - // BALANCES.update( - // deps.storage, - // &from, - // env.block.time.seconds(), - // |balance| -> StdResult<_> { - // Ok(balance.unwrap_or_default().checked_sub(amount.amount)?) - // }, - // )?; - // } else { - // // Minted new tokens - // TOTAL_SUPPLY_HISTORY.update( - // deps.storage, - // env.block.time.seconds(), - // |balance| -> StdResult<_> { - // Ok(balance.unwrap_or_default().checked_add(amount.amount)?) - // }, - // )?; - // } - - // // When burning tokens, the receiver is the token factory module address - // // Sending tokens to the module address isn't allowed by the chain - // if to != config.tokenfactory_module_address { - // BALANCES.update( - // deps.storage, - // &to, - // env.block.time.seconds(), - // |balance| -> StdResult<_> { - // Ok(balance.unwrap_or_default().checked_add(amount.amount)?) - // }, - // )?; - // } else { - // // Burned tokens - // TOTAL_SUPPLY_HISTORY.update( - // deps.storage, - // env.block.time.seconds(), - // |balance| -> StdResult<_> { - // Ok(balance.unwrap_or_default().checked_sub(amount.amount)?) - // }, - // )?; - // } - - Ok(Response::new()) -} - -// use cosmwasm_schema::cw_serde; -// use cosmwasm_std::{ -// attr, Addr, Api, CustomQuery, DepsMut, Env, MessageInfo, Response, StdError, StdResult, -// }; -// use cw_storage_plus::Item; - -// const MAX_PROPOSAL_TTL: u64 = 1209600; - -// /// This structure describes the parameters used for creating a request for a change of contract ownership. -// #[cw_serde] -// pub struct OwnershipProposal { -// /// The newly proposed contract owner -// pub owner: Addr, -// /// Time until the proposal to change ownership expires -// pub ttl: u64, -// } - -// /// Creates a new request to change contract ownership. -// /// -// /// `new_owner` is the newly proposed owner. -// /// -// /// `expires_in` is the time during which the ownership change proposal is still valid. -// /// -// /// `owner` is the current owner. -// /// -// /// ## Executor -// /// Only the current contract owner can execute this. -// pub fn propose_new_owner( -// deps: DepsMut, -// info: MessageInfo, -// env: Env, -// new_owner: String, -// expires_in: u64, -// owner: Addr, -// proposal: Item, -// ) -> StdResult> -// where -// C: CustomQuery, -// { -// // Permission check -// if info.sender != owner { -// return Err(StdError::generic_err("Unauthorized")); -// } - -// let new_owner = deps.api.addr_validate(new_owner.as_str())?; - -// // Check that the new owner is not the same as the current one -// if new_owner == owner { -// return Err(StdError::generic_err("New owner cannot be same")); -// } - -// if MAX_PROPOSAL_TTL < expires_in { -// return Err(StdError::generic_err(format!( -// "Parameter expires_in cannot be higher than {MAX_PROPOSAL_TTL}" -// ))); -// } - -// proposal.save( -// deps.storage, -// &OwnershipProposal { -// owner: new_owner.clone(), -// ttl: env.block.time.seconds() + expires_in, -// }, -// )?; - -// Ok(Response::new().add_attributes(vec![ -// attr("action", "propose_new_owner"), -// attr("new_owner", new_owner), -// ])) -// } - -// /// Removes a request to change contract ownership. -// /// `owner` is the current contract owner. -// /// -// /// ## Executor -// /// Only the current owner can execute this. -// pub fn drop_ownership_proposal( -// deps: DepsMut, -// info: MessageInfo, -// owner: Addr, -// proposal: Item, -// ) -> StdResult> -// where -// C: CustomQuery, -// { -// // Permission check -// if info.sender != owner { -// return Err(StdError::generic_err("Unauthorized")); -// } - -// proposal.remove(deps.storage); - -// Ok(Response::new().add_attributes(vec![attr("action", "drop_ownership_proposal")])) -// } - -// /// Claims ownership over the contract. -// /// -// /// `cb` is a callback function to process ownership transition. -// /// -// /// ## Executor -// /// Only the newly proposed owner can execute this. -// pub fn claim_ownership( -// deps: DepsMut, -// info: MessageInfo, -// env: Env, -// proposal: Item, -// cb: fn(DepsMut, Addr) -> StdResult<()>, -// ) -> StdResult> -// where -// C: CustomQuery, -// { -// let p = proposal -// .load(deps.storage) -// .map_err(|_| StdError::generic_err("Ownership proposal not found"))?; - -// // Check the sender -// if info.sender != p.owner { -// return Err(StdError::generic_err("Unauthorized")); -// } - -// if env.block.time.seconds() > p.ttl { -// return Err(StdError::generic_err("Ownership proposal expired")); -// } - -// proposal.remove(deps.storage); - -// // Run callback -// cb(deps, p.owner.clone())?; - -// Ok(Response::new().add_attributes(vec![ -// attr("action", "claim_ownership"), -// attr("new_owner", p.owner), -// ])) -// } - -// /// Bulk validation and conversion between [`String`] -> [`Addr`] for an array of addresses. -// /// If any address is invalid, the function returns [`StdError`]. -// pub fn validate_addresses(api: &dyn Api, admins: &[String]) -> StdResult> { -// admins.iter().map(|addr| api.addr_validate(addr)).collect() -// } From 0d21dda9ccb9adb47f66817feb28cef1f6531192 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 18 Jan 2024 19:24:35 +0400 Subject: [PATCH 39/84] refactor staking contract; add test suite --- Cargo.lock | 36 +- contracts/tokenomics/staking/Cargo.toml | 26 +- contracts/tokenomics/staking/src/contract.rs | 234 +++++----- contracts/tokenomics/staking/src/error.rs | 36 +- contracts/tokenomics/staking/src/state.rs | 17 +- .../tokenomics/staking/tests/common/helper.rs | 403 +++--------------- .../staking/tests/common/neutron_ext.rs | 151 ++++--- ...{integration.rs => staking_integration.rs} | 237 ++-------- packages/astroport/src/staking.rs | 38 +- 9 files changed, 389 insertions(+), 789 deletions(-) rename contracts/tokenomics/staking/tests/{integration.rs => staking_integration.rs} (80%) diff --git a/Cargo.lock b/Cargo.lock index f25054262..8af1f067e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -616,17 +616,15 @@ version = "2.0.0" dependencies = [ "anyhow", "astroport 3.8.0", - "astroport-token", - "astroport-xastro-token", + "astroport-tokenfactory-tracker", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_cozy_fork)", - "cw-storage-plus 0.15.1", + "cw-multi-test 0.20.0", + "cw-storage-plus 1.2.0", "cw-utils 1.0.3", - "cw2 0.15.1", - "derivative", - "itertools 0.11.0", - "osmosis-std 0.22.0", + "cw2 1.1.2", + "itertools 0.12.0", + "osmosis-std", "thiserror", ] @@ -652,7 +650,7 @@ dependencies = [ "cosmwasm-std", "cw-storage-plus 1.2.0", "cw2 1.1.2", - "osmosis-std 0.21.0", + "osmosis-std", "osmosis-test-tube", "test-tube", "thiserror", @@ -2584,22 +2582,6 @@ dependencies = [ "serde-cw-value", ] -[[package]] -name = "osmosis-std" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8641c376f01f5af329dc2a34e4f5527eaeb0bde18cda8d86fed958d04c86159c" -dependencies = [ - "chrono", - "cosmwasm-std", - "osmosis-std-derive", - "prost 0.12.3", - "prost-types 0.12.3", - "schemars", - "serde", - "serde-cw-value", -] - [[package]] name = "osmosis-std-derive" version = "0.20.1" @@ -2623,7 +2605,7 @@ dependencies = [ "bindgen", "cosmrs", "cosmwasm-std", - "osmosis-std 0.21.0", + "osmosis-std", "prost 0.12.3", "serde", "serde_json", @@ -3876,7 +3858,7 @@ dependencies = [ "base64", "cosmrs", "cosmwasm-std", - "osmosis-std 0.21.0", + "osmosis-std", "prost 0.12.3", "serde", "serde_json", diff --git a/contracts/tokenomics/staking/Cargo.toml b/contracts/tokenomics/staking/Cargo.toml index 6340efb72..fda132fb9 100644 --- a/contracts/tokenomics/staking/Cargo.toml +++ b/contracts/tokenomics/staking/Cargo.toml @@ -3,11 +3,12 @@ name = "astroport-staking" version = "2.0.0" authors = ["Astroport"] edition = "2021" +license = "GPL-3" exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", ] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -21,21 +22,16 @@ backtraces = ["cosmwasm-std/backtraces"] [dependencies] cosmwasm-std = { version = "1.5", features = ["cosmwasm_1_1"] } -cw-storage-plus = "0.15" +cw-storage-plus = "1.2" thiserror = "1" -cw2 = "0.15" +cw2 = "1.1" astroport = { path = "../../../packages/astroport", version = "3" } -cosmwasm-schema = { version = "1.1" } cw-utils = "1" -osmosis-std = "0.22" +osmosis-std = "0.21" [dev-dependencies] -astroport-token = { path = "../../token" } -astroport-xastro-token = { path = "../../tokenomics/xastro_token" } anyhow = "1" -derivative = "2" -itertools = "0.11" -# cw-multi-test = "0.15" -cw-multi-test = { git = "https://github.com/astroport-fi/cw-multi-test", branch = "astroport_cozy_fork", features = [ - "stargate", -] } +itertools = "0.12" +cosmwasm-schema = "1.5" +cw-multi-test = { version = "0.20", features = ["cosmwasm_1_1"] } +astroport-tokenfactory-tracker = { path = "../../periphery/tokenfactory_tracker" } diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index 9d3b1f005..493b4b326 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -1,26 +1,24 @@ use cosmwasm_std::{ attr, coin, entry_point, to_json_binary, BankMsg, Binary, CosmosMsg, Deps, DepsMut, Env, - MessageInfo, Reply, ReplyOn, Response, StdResult, SubMsg, Uint128, + MessageInfo, Reply, Response, StdError, StdResult, SubMsg, Uint128, WasmMsg, }; use cw2::set_contract_version; -use cw_utils::must_pay; +use cw_utils::{must_pay, parse_reply_instantiate_data, MsgInstantiateContractResponse}; use osmosis_std::types::cosmos::bank::v1beta1::{DenomUnit, Metadata}; use osmosis_std::types::osmosis::tokenfactory::v1beta1::{ MsgBurn, MsgCreateDenom, MsgCreateDenomResponse, MsgMint, MsgSetBeforeSendHook, MsgSetDenomMetadata, }; -use astroport::querier::query_balance; use astroport::staking::{ - ConfigResponse, ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg, StakingResponse, + Config, ExecuteMsg, InstantiateMsg, QueryMsg, StakingResponse, TrackerData, }; -use astroport::tokenfactory_tracker::{track_before_send, SudoMsg}; use crate::error::ContractError; -use crate::state::{Config, CONFIG}; +use crate::state::{CONFIG, TRACKER_DATA}; /// Contract name that is used for migration. -const CONTRACT_NAME: &str = "astroport-staking"; +const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); /// Contract version that is used for migration. const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -30,7 +28,22 @@ const TOKEN_NAME: &str = "Staked Astroport Token"; const TOKEN_SYMBOL: &str = "xASTRO"; /// A `reply` call code ID used for sub-messages. -const INSTANTIATE_DENOM_REPLY_ID: u64 = 1; +enum ReplyIds { + InstantiateDenom = 1, + InstantiateTrackingContract = 2, +} + +impl TryFrom for ReplyIds { + type Error = ContractError; + + fn try_from(value: u64) -> Result { + match value { + 1 => Ok(ReplyIds::InstantiateDenom), + 2 => Ok(ReplyIds::InstantiateTrackingContract), + _ => Err(ContractError::FailedToParseReply {}), + } + } +} /// Minimum initial xastro share pub(crate) const MINIMUM_STAKE_AMOUNT: Uint128 = Uint128::new(1_000); @@ -50,30 +63,38 @@ pub fn instantiate( // Validate that deposit_token_denom exists on chain deps.querier.query_supply(&msg.deposit_token_denom)?; - // Store config + // Validate addresses + deps.api.addr_validate(&msg.token_factory_addr)?; + deps.api.addr_validate(&msg.tracking_admin)?; + CONFIG.save( deps.storage, &Config { astro_denom: msg.deposit_token_denom, xastro_denom: "".to_string(), - tracking_code_id: msg.tracking_code_id, - tracking_contract_address: "".to_string(), }, )?; - // Create the xASTRO TokenFactory token - // TODO: After creating the TokenFactory token, also set the tracking contract - // we need a Neutron upgrade to enable that + // Store tracker data + TRACKER_DATA.save( + deps.storage, + &TrackerData { + code_id: msg.tracking_code_id, + admin: msg.tracking_admin, + token_factory_addr: msg.token_factory_addr, + tracker_addr: "".to_string(), + }, + )?; - let sub_msg = SubMsg::reply_on_success( + let create_denom_msg = SubMsg::reply_on_success( MsgCreateDenom { sender: env.contract.address.to_string(), subdenom: TOKEN_SYMBOL.to_owned(), }, - INSTANTIATE_DENOM_REPLY_ID, + ReplyIds::InstantiateDenom as u64, ); - Ok(Response::new().add_submessage(sub_msg)) + Ok(Response::new().add_submessage(create_denom_msg)) } /// Exposes execute functions available in the contract. @@ -94,32 +115,11 @@ pub fn execute( } } -/// Exposes execute functions called by the chain's TokenFactory module -/// -/// ## Variants -/// * **SudoMsg::BlockBeforeSend** Called before sending a token, error fails the transaction -/// * **SudoMsg::TrackBeforeSend** Called before sending a token, error is ignored -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result { - match msg { - // For xASTRO we don't implement any blocking, but is still required - // to be implemented - SudoMsg::BlockBeforeSend { .. } => Ok(Response::default()), - // TrackBeforeSend is called before a send - if an error is returned it will - // be ignored and the send will continue - // Minting a token directly to an address is also tracked - SudoMsg::TrackBeforeSend { from, to, amount } => { - //let config = CONFIG.load(deps.storage)?; - // Get the module address - track_before_send(deps, env, from, to, amount).map_err(Into::into) - } - } -} /// The entry point to the contract for processing replies from submessages. #[cfg_attr(not(feature = "library"), entry_point)] pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result { - match msg.id { - INSTANTIATE_DENOM_REPLY_ID => { + match ReplyIds::try_from(msg.id)? { + ReplyIds::InstantiateDenom => { let MsgCreateDenomResponse { new_token_denom } = msg.result.try_into()?; // TODO: Decide correct metadata @@ -143,28 +143,59 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result(deps.storage, |mut config| { + config.xastro_denom = new_token_denom.clone(); + Ok(config) + })?; + + let tracker_data = TRACKER_DATA.load(deps.storage)?; + + let init_tracking_contract = SubMsg::reply_on_success( + WasmMsg::Instantiate { + admin: Some(tracker_data.admin), + code_id: tracker_data.code_id, + msg: to_json_binary(&astroport::tokenfactory_tracker::InstantiateMsg { + tokenfactory_module_address: tracker_data.token_factory_addr, + tracked_denom: new_token_denom.clone(), + })?, + funds: vec![], + label: format!("{TOKEN_SYMBOL} balances tracker"), + }, + ReplyIds::InstantiateTrackingContract as u64, + ); - config.xastro_denom = new_token_denom; + Ok(Response::new() + .add_submessages([SubMsg::new(denom_metadata_msg), init_tracking_contract]) + .add_attribute("xastro_denom", new_token_denom)) + } + ReplyIds::InstantiateTrackingContract => { + let MsgInstantiateContractResponse { + contract_address, .. + } = parse_reply_instantiate_data(msg)?; + + let config = CONFIG.load(deps.storage)?; + + TRACKER_DATA.update::<_, StdError>(deps.storage, |mut tracker_data| { + tracker_data.tracker_addr = contract_address.clone(); + Ok(tracker_data) + })?; // Enable balance tracking for xASTRO let set_hook_msg = MsgSetBeforeSendHook { sender: env.contract.address.to_string(), - denom: config.xastro_denom.clone(), - cosmwasm_address: env.contract.address.to_string(), + denom: config.xastro_denom, + cosmwasm_address: contract_address.clone(), }; - CONFIG.save(deps.storage, &config)?; - Ok(Response::new() .add_message(set_hook_msg) - .add_message(denom_metadata_msg) - .add_attribute("xastro_denom", config.xastro_denom)) + .add_attribute("tracker_contract", contract_address)) } - _ => Err(ContractError::FailedToParseReply {}), } } @@ -172,34 +203,22 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result Result { let config = CONFIG.load(deps.storage)?; - // Ensure that the correct token is sent. This will fail if - // zero tokens are sent. - let mut amount = must_pay(&info, &config.astro_denom)?; - - // Receiver of the xASTRO tokens - let recipient = info.sender; + // Ensure that the correct token is sent. Sending zero tokens is prohibited on chain level + let amount = must_pay(&info, &config.astro_denom)?; // Get the current deposits and shares held in the contract - let total_deposit = query_balance( - &deps.querier, - env.contract.address.clone(), - config.astro_denom.clone(), - )?; - let total_shares = deps + let total_deposit = deps .querier - .query_supply(config.xastro_denom.clone())? + .query_balance(&env.contract.address, &config.astro_denom)? .amount; + let total_shares = deps.querier.query_supply(&config.xastro_denom)?.amount; let mut messages: Vec = vec![]; - let mint_amount: Uint128 = if total_shares.is_zero() || total_deposit.is_zero() { - amount = amount - .checked_sub(MINIMUM_STAKE_AMOUNT) - .map_err(|_| ContractError::MinimumStakeAmountError {})?; - + let mint_amount = if total_shares.is_zero() || total_deposit.is_zero() { // There needs to be a minimum amount initially staked, thus the result - // cannot be zero if the amount if not enough - if amount.is_zero() { + // cannot be zero if the amount is not enough + if amount.saturating_sub(MINIMUM_STAKE_AMOUNT).is_zero() { return Err(ContractError::MinimumStakeAmountError {}); } @@ -207,23 +226,15 @@ fn execute_enter(deps: DepsMut, env: Env, info: MessageInfo) -> Result Result Result Result Result { let config = CONFIG.load(deps.storage)?; - // Ensure that the correct token is sent. This will fail if - // zero tokens are sent. + // Ensure that the correct token is sent. Sending zero tokens is prohibited on chain level let amount = must_pay(&info, &config.xastro_denom)?; - // Receiver of the xASTRO tokens - let recipient = info.sender; - // Get the current deposits and shares held in the contract - let total_deposit = query_balance( - &deps.querier, - env.contract.address.clone(), - config.astro_denom.clone(), - )?; - let total_shares = deps + let total_deposit = deps .querier - .query_supply(config.xastro_denom.clone())? + .query_balance(&env.contract.address, &config.astro_denom)? .amount; + let total_shares = deps.querier.query_supply(&config.xastro_denom)?.amount; // Calculate the amount of ASTRO to return based on the ratios of // deposit and shares - let return_amount = amount - .checked_mul(total_deposit)? - .checked_div(total_shares)?; + let return_amount = amount.multiply_ratio(total_deposit, total_shares); // Burn the received xASTRO tokens let burn_msg = MsgBurn { @@ -304,7 +305,7 @@ fn execute_leave(deps: DepsMut, env: Env, info: MessageInfo) -> Result Result Result StdResult { - let config = CONFIG.load(deps.storage)?; match msg { - QueryMsg::Config {} => Ok(to_json_binary(&ConfigResponse { - deposit_denom: config.astro_denom, - share_denom: config.xastro_denom, - share_tracking_address: config.tracking_contract_address, - })?), + QueryMsg::Config {} => to_json_binary(&CONFIG.load(deps.storage)?), QueryMsg::TotalShares {} => { - // to_json_binary(&query_supply(&deps.querier, &config.xastro_token_addr)?) - todo!("TotalShares query not implemented") + let config = CONFIG.load(deps.storage)?; + + let total_supply = deps.querier.query_supply(&config.xastro_denom)?.amount; + to_json_binary(&total_supply) + } + QueryMsg::TotalDeposit {} => { + let config = CONFIG.load(deps.storage)?; + + let total_deposit = deps + .querier + .query_balance(&env.contract.address, &config.astro_denom)? + .amount; + to_json_binary(&total_deposit) + } + QueryMsg::TrackerConfig {} => { + let tracker_data = TRACKER_DATA.load(deps.storage)?; + to_json_binary(&tracker_data) } - QueryMsg::TotalDeposit {} => to_json_binary(&query_balance( - &deps.querier, - env.contract.address, - config.astro_denom, - )?), } } diff --git a/contracts/tokenomics/staking/src/error.rs b/contracts/tokenomics/staking/src/error.rs index b41506b59..94c99acb4 100644 --- a/contracts/tokenomics/staking/src/error.rs +++ b/contracts/tokenomics/staking/src/error.rs @@ -1,21 +1,25 @@ -use crate::contract::MINIMUM_STAKE_AMOUNT; -use cosmwasm_std::{DivideByZeroError, OverflowError, StdError}; -use cw_utils::PaymentError; +use cosmwasm_std::StdError; +use cw_utils::{ParseReplyError, PaymentError}; use thiserror::Error; +use crate::contract::MINIMUM_STAKE_AMOUNT; + /// This enum describes staking contract errors #[derive(Error, Debug, PartialEq)] pub enum ContractError { #[error("{0}")] Std(#[from] StdError), + #[error("{0}")] + PaymentError(#[from] PaymentError), + + #[error("{0}")] + ParseReplyError(#[from] ParseReplyError), + #[error("Unauthorized")] Unauthorized {}, - #[error("An error occurred during migration")] - MigrationError {}, - - #[error("Initial stake amount must be more than {}", MINIMUM_STAKE_AMOUNT)] + #[error("Initial stake amount must be more than {MINIMUM_STAKE_AMOUNT}")] MinimumStakeAmountError {}, #[error("Insufficient amount of Stake")] @@ -23,22 +27,4 @@ pub enum ContractError { #[error("Failed to parse or process reply message")] FailedToParseReply {}, - - #[error("Failed to create new TokenFactory denom")] - FailedToCreateDenom {}, - - #[error("{0}")] - PaymentError(#[from] PaymentError), -} - -impl From for ContractError { - fn from(o: OverflowError) -> Self { - StdError::from(o).into() - } -} - -impl From for ContractError { - fn from(err: DivideByZeroError) -> Self { - StdError::from(err).into() - } } diff --git a/contracts/tokenomics/staking/src/state.rs b/contracts/tokenomics/staking/src/state.rs index 8a6a3f1c9..cc8931c70 100644 --- a/contracts/tokenomics/staking/src/state.rs +++ b/contracts/tokenomics/staking/src/state.rs @@ -1,18 +1,9 @@ -use cosmwasm_schema::cw_serde; use cw_storage_plus::Item; -/// This structure stores the main parameters for the staking contract. -#[cw_serde] -pub struct Config { - /// The ASTRO token denom - pub astro_denom: String, - /// The xASTRO token denom - pub xastro_denom: String, - // TODO: Do we want this? - pub tracking_code_id: u64, - // TODO: Make addr? - pub tracking_contract_address: String, -} +use astroport::staking::{Config, TrackerData}; /// Stores the contract config at the given key pub const CONFIG: Item = Item::new("config"); + +/// Stores the tracker contract instantiate data at the given key +pub const TRACKER_DATA: Item = Item::new("tracker_data"); diff --git a/contracts/tokenomics/staking/tests/common/helper.rs b/contracts/tokenomics/staking/tests/common/helper.rs index 8434a4b1e..cc83c36c6 100644 --- a/contracts/tokenomics/staking/tests/common/helper.rs +++ b/contracts/tokenomics/staking/tests/common/helper.rs @@ -1,61 +1,42 @@ #![allow(dead_code)] -use std::collections::HashMap; -use std::error::Error; -use std::fmt::Display; -use std::str::FromStr; - use anyhow::Result as AnyResult; -use astroport::asset::{native_asset_info, token_asset_info, Asset, AssetInfo, PairInfo}; -use astroport::factory::{PairConfig, PairType}; -use astroport::observation::OracleObservation; -use astroport::pair::{ - ConfigResponse, CumulativePricesResponse, Cw20HookMsg, ReverseSimulationResponse, - SimulationResponse, -}; -use astroport::pair_concentrated::{ - ConcentratedPoolParams, ConcentratedPoolUpdateParams, QueryMsg, -}; -use astroport::token; -use astroport::token::Cw20Coin; -use cosmwasm_schema::cw_serde; use cosmwasm_std::testing::MockApi; use cosmwasm_std::{ - coin, coins, from_slice, to_json_binary, Addr, Coin, Decimal, Decimal256, Empty, GovMsg, - IbcMsg, IbcQuery, MemoryStorage, StdError, StdResult, Storage, Uint128, + coins, Addr, Binary, Deps, DepsMut, Empty, Env, GovMsg, IbcMsg, IbcQuery, MemoryStorage, + MessageInfo, Response, StdResult, }; use cw_multi_test::{ - AddressGenerator, App, AppResponse, BankKeeper, BasicAppBuilder, Contract, ContractWrapper, - DistributionKeeper, Executor, FailingModule, StakeKeeper, WasmKeeper, + App, BankKeeper, BasicAppBuilder, Contract, ContractWrapper, DistributionKeeper, Executor, + FailingModule, StakeKeeper, WasmKeeper, }; -use cw_storage_plus::Item; -use derivative::Derivative; -use itertools::Itertools; - -use crate::common::neutron_ext::NeutronStargate; -const NATIVE_TOKEN_PRECISION: u8 = 6; +use astroport::staking::{InstantiateMsg, QueryMsg, TrackerData}; -const FACTORY_ADDRESS: &str = "osmo1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrqvlx82r"; +use crate::common::neutron_ext::{NeutronStargate, TOKEN_FACTORY_MODULE}; -const INIT_BALANCE: u128 = 1_000_000_000000; - -#[derive(Clone, Debug, PartialEq, Eq, Hash)] -pub enum TestCoin { - Native(String), +fn staking_contract() -> Box> { + Box::new( + ContractWrapper::new_with_empty( + astroport_staking::contract::execute, + astroport_staking::contract::instantiate, + astroport_staking::contract::query, + ) + .with_reply_empty(astroport_staking::contract::reply), + ) } -impl TestCoin { - pub fn denom(&self) -> Option { - match self { - TestCoin::Native(denom) => Some(denom.clone()), - _ => None, - } - } - - pub fn native(denom: &str) -> Self { - Self::Native(denom.to_string()) - } +fn tracker_contract() -> Box> { + Box::new( + ContractWrapper::new_with_empty( + |_: DepsMut, _: Env, _: MessageInfo, _: Empty| -> StdResult { + unimplemented!() + }, + astroport_tokenfactory_tracker::contract::instantiate, + |_: Deps, _: Env, _: Empty| -> StdResult { unimplemented!() }, + ) + .with_sudo_empty(astroport_tokenfactory_tracker::contract::sudo), + ) } pub type NeutronApp = App< @@ -71,315 +52,67 @@ pub type NeutronApp = App< NeutronStargate, >; -pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { - let mut test_coins: Vec = test_coins - .iter() - .filter_map(|test_coin| match test_coin { - TestCoin::Native(name) => { - let init_balance = INIT_BALANCE * 10u128.pow(NATIVE_TOKEN_PRECISION as u32); - Some(coin(init_balance, name)) - } - _ => None, - }) - .collect(); - test_coins.push(coin(INIT_BALANCE, "random-coin")); - test_coins.push(coin(INIT_BALANCE, "untrn")); - - test_coins -} - -#[derive(Default)] -struct HackyAddressGenerator<'a> { - _phantom: std::marker::PhantomData<&'a ()>, -} - -impl<'a> HackyAddressGenerator<'a> { - pub const CONTRACTS_COUNT: Item<'a, u64> = Item::new("wasm_contracts_count"); - pub const FACTORY_MARKER: Item<'a, ()> = Item::new("factory_marker"); -} - -impl<'a> AddressGenerator for HackyAddressGenerator<'a> { - fn next_address(&self, storage: &mut dyn Storage) -> Addr { - if Self::FACTORY_MARKER.may_load(storage).unwrap().is_some() { - Self::FACTORY_MARKER.remove(storage); - - Addr::unchecked(FACTORY_ADDRESS) - } else { - let count = if let Some(count) = Self::CONTRACTS_COUNT.may_load(storage).unwrap() { - Self::CONTRACTS_COUNT.save(storage, &(count + 1)).unwrap(); - count + 1 - } else { - Self::CONTRACTS_COUNT.save(storage, &1u64).unwrap(); - 1 - }; - - Addr::unchecked(format!("contract{count}")) - } - } -} - -#[derive(Derivative)] -#[derivative(Debug)] pub struct Helper { - #[derivative(Debug = "ignore")] pub app: NeutronApp, pub owner: Addr, - pub assets: HashMap, - // pub factory: Addr, - // pub pair_addr: Addr, - // pub lp_token: String, - // pub fake_maker: Addr, + pub staking: Addr, + pub tracker_addr: String, } +pub const ASTRO_DENOM: &str = "factory/assembly/ASTRO"; + impl Helper { - pub fn new( - owner: &Addr, - test_coins: Vec, - params: ConcentratedPoolParams, - ) -> AnyResult { + pub fn new(owner: &Addr) -> AnyResult { let mut app = BasicAppBuilder::new() - .with_stargate(NeutronStargate::default()) - .with_wasm::, WasmKeeper>( - WasmKeeper::new_with_custom_address_generator(HackyAddressGenerator::default()), - ) + .with_stargate(NeutronStargate::new()) .build(|router, _, storage| { router .bank - .init_balance(storage, owner, init_native_coins(&test_coins)) + .init_balance(storage, owner, coins(u128::MAX, ASTRO_DENOM)) .unwrap() }); - // let token_code_id = app.store_code(token_contract()); - - let asset_infos_vec = test_coins - .iter() - .cloned() - .map(|coin| { - let asset_info = match &coin { - TestCoin::Native(denom) => native_asset_info(denom.clone()), - }; - (coin, asset_info) - }) - .collect::>(); - - // let pair_code_id = app.store_code(pair_contract()); - // let factory_code_id = app.store_code(factory_contract()); - // let pair_type = PairType::Custom("concentrated".to_string()); - - // let fake_maker = Addr::unchecked("fake_maker"); - - // let coin_registry_id = app.store_code(coin_registry_contract()); - - // let coin_registry_address = app - // .instantiate_contract( - // coin_registry_id, - // owner.clone(), - // &astroport::native_coin_registry::InstantiateMsg { - // owner: owner.to_string(), - // }, - // &[], - // "Coin registry", - // None, - // ) - // .unwrap(); - - // app.execute_contract( - // owner.clone(), - // coin_registry_address.clone(), - // &astroport::native_coin_registry::ExecuteMsg::Add { - // native_coins: vec![ - // ("uosmo".to_owned(), 6), - // ("uusd".to_owned(), 6), - // ("rc".to_owned(), 6), - // ("foo".to_owned(), 5), - // ], - // }, - // &[], - // ) - // .unwrap(); - // let init_msg = astroport::factory::InstantiateMsg { - // fee_address: Some(fake_maker.to_string()), - // pair_configs: vec![PairConfig { - // code_id: pair_code_id, - // maker_fee_bps: 5000, - // total_fee_bps: 0u16, // Concentrated pair does not use this field, - // pair_type: pair_type.clone(), - // is_disabled: false, - // is_generator_disabled: false, - // }], - // token_code_id, - // generator_address: None, - // owner: owner.to_string(), - // whitelist_code_id: 234u64, - // coin_registry_address: coin_registry_address.to_string(), - // }; - - // Set marker in storage that the next contract is factory. We need this to have exact FACTORY_ADDRESS constant - // which is hardcoded in the PCL code. - app.init_modules(|_, _, storage| HackyAddressGenerator::FACTORY_MARKER.save(storage, &())) + let staking_code_id = app.store_code(staking_contract()); + let tracker_code_id = app.store_code(tracker_contract()); + + let msg = InstantiateMsg { + deposit_token_denom: ASTRO_DENOM.to_string(), + tracking_admin: owner.to_string(), + tracking_code_id: tracker_code_id, + token_factory_addr: TOKEN_FACTORY_MODULE.to_string(), + }; + let staking = app + .instantiate_contract( + staking_code_id, + owner.clone(), + &msg, + &[], + String::from("Astroport Staking"), + None, + ) .unwrap(); - // let factory = app.instantiate_contract( - // factory_code_id, - // owner.clone(), - // &init_msg, - // &[], - // "Factory", - // None, - // )?; - // let asset_infos = asset_infos_vec - // .clone() - // .into_iter() - // .map(|(_, asset_info)| asset_info) - // .collect_vec(); - // let init_pair_msg = astroport::factory::ExecuteMsg::CreatePair { - // pair_type, - // asset_infos: asset_infos.clone(), - // init_params: Some(to_binary(¶ms).unwrap()), - // }; - - // app.execute_contract( - // owner.clone(), - // factory.clone(), - // &init_pair_msg, - // &osmo_create_pair_fee(), - // )?; - - // let resp: PairInfo = app.wrap().query_wasm_smart( - // &factory, - // &astroport::factory::QueryMsg::Pair { asset_infos }, - // )?; + let TrackerData { tracker_addr, .. } = app + .wrap() + .query_wasm_smart(&staking, &QueryMsg::TrackerConfig {}) + .unwrap(); Ok(Self { app, owner: owner.clone(), - assets: asset_infos_vec.into_iter().collect(), - // factory, - // pair_addr: resp.contract_addr, - // lp_token: resp.liquidity_token.to_string(), - // fake_maker, + staking, + tracker_addr, }) } - pub fn native_balance(&self, denom: &str, user: &Addr) -> u128 { + pub fn give_astro(&mut self, amount: u128, recipient: &Addr) { self.app - .wrap() - .query_balance(user, denom) - .unwrap() - .amount - .u128() - } - - pub fn token_balance(&self, token_addr: &Addr, user: &Addr) -> u128 { - let resp: token::BalanceResponse = self - .app - .wrap() - .query_wasm_smart( - token_addr, - &token::QueryMsg::Balance { - address: user.to_string(), - }, + .send_tokens( + self.owner.clone(), + recipient.clone(), + &coins(amount, ASTRO_DENOM), ) .unwrap(); - - resp.balance.u128() - } - - pub fn coin_balance(&self, coin: &TestCoin, user: &Addr) -> u128 { - match &self.assets[coin] { - AssetInfo::Token { contract_addr } => self.token_balance(contract_addr, user), - AssetInfo::NativeToken { denom } => self.native_balance(denom, user), - } - } - - pub fn give_me_money(&mut self, assets: &[Asset], recipient: &Addr) { - let funds = - assets.mock_coins_sent(&mut self.app, &self.owner, recipient, SendType::Transfer); - - if !funds.is_empty() { - self.app - .send_tokens(self.owner.clone(), recipient.clone(), &funds) - .unwrap(); - } - } -} - -#[derive(Clone, Copy)] -pub enum SendType { - Allowance, - Transfer, - None, -} - -pub trait AssetExt { - fn mock_coin_sent( - &self, - app: &mut NeutronApp, - user: &Addr, - spender: &Addr, - typ: SendType, - ) -> Vec; -} - -impl AssetExt for Asset { - fn mock_coin_sent( - &self, - app: &mut NeutronApp, - user: &Addr, - spender: &Addr, - typ: SendType, - ) -> Vec { - let mut funds = vec![]; - match &self.info { - AssetInfo::Token { contract_addr } if !self.amount.is_zero() => { - let msg = match typ { - SendType::Allowance => token::ExecuteMsg::IncreaseAllowance { - spender: spender.to_string(), - amount: self.amount, - expires: None, - }, - SendType::Transfer => token::ExecuteMsg::Transfer { - recipient: spender.to_string(), - amount: self.amount, - }, - _ => unimplemented!(), - }; - app.execute_contract(user.clone(), contract_addr.clone(), &msg, &[]) - .unwrap(); - } - AssetInfo::NativeToken { denom } if !self.amount.is_zero() => { - funds = vec![coin(self.amount.u128(), denom)]; - } - _ => {} - } - - funds - } -} - -pub trait AssetsExt { - fn mock_coins_sent( - &self, - app: &mut NeutronApp, - user: &Addr, - spender: &Addr, - typ: SendType, - ) -> Vec; -} - -impl AssetsExt for &[Asset] { - fn mock_coins_sent( - &self, - app: &mut NeutronApp, - user: &Addr, - spender: &Addr, - typ: SendType, - ) -> Vec { - let mut funds = vec![]; - for asset in self.iter() { - funds.extend(asset.mock_coin_sent(app, user, spender, typ)); - } - funds } } @@ -395,15 +128,3 @@ impl AppExtension for NeutronApp { }); } } - -pub fn f64_to_dec(val: f64) -> T -where - T: FromStr, - T::Err: Error, -{ - T::from_str(&val.to_string()).unwrap() -} - -pub fn dec_to_f64(val: impl Display) -> f64 { - f64::from_str(&val.to_string()).unwrap() -} diff --git a/contracts/tokenomics/staking/tests/common/neutron_ext.rs b/contracts/tokenomics/staking/tests/common/neutron_ext.rs index 93d9cc75f..3f6bd7ca5 100644 --- a/contracts/tokenomics/staking/tests/common/neutron_ext.rs +++ b/contracts/tokenomics/staking/tests/common/neutron_ext.rs @@ -6,26 +6,33 @@ use anyhow::Result as AnyResult; use cosmwasm_schema::schemars::JsonSchema; use cosmwasm_schema::serde::de::DeserializeOwned; use cosmwasm_std::{ - coins, Addr, Api, Binary, BlockInfo, CustomQuery, Empty, Querier, Storage, SubMsgResponse, + coin, to_json_binary, Addr, Api, BankMsg, Binary, BlockInfo, CustomQuery, Querier, Storage, + SubMsgResponse, }; -use cw_multi_test::{ - AppResponse, BankSudo, CosmosRouter, Module, Stargate, StargateMsg, StargateQuery, -}; - +use cw_multi_test::{AppResponse, BankSudo, CosmosRouter, Stargate, WasmSudo}; use osmosis_std::types::osmosis::tokenfactory::v1beta1::{ - MsgBurn, MsgCreateDenom, MsgCreateDenomResponse, MsgMint, + MsgBurn, MsgCreateDenom, MsgCreateDenomResponse, MsgMint, MsgSetBeforeSendHook, + MsgSetDenomMetadata, }; -#[derive(Default)] +use astroport::tokenfactory_tracker::SudoMsg; + +pub const TOKEN_FACTORY_MODULE: &str = "wasm1tokenfactory"; + pub struct NeutronStargate { - pub cw_pools: RefCell>, + // key: token denom, value: hook contract address + pub before_send_hooks: RefCell>, } -impl Module for NeutronStargate { - type ExecT = StargateMsg; - type QueryT = StargateQuery; - type SudoT = Empty; +impl NeutronStargate { + pub fn new() -> Self { + Self { + before_send_hooks: Default::default(), + } + } +} +impl Stargate for NeutronStargate { fn execute( &self, api: &dyn Api, @@ -33,15 +40,16 @@ impl Module for NeutronStargate { router: &dyn CosmosRouter, block: &BlockInfo, sender: Addr, - msg: Self::ExecT, + type_url: String, + value: Binary, ) -> AnyResult where ExecC: Debug + Clone + PartialEq + JsonSchema + DeserializeOwned + 'static, QueryC: CustomQuery + DeserializeOwned + 'static, { - match msg.type_url.as_str() { + match type_url.as_str() { MsgCreateDenom::TYPE_URL => { - let tf_msg: MsgCreateDenom = msg.value.try_into()?; + let tf_msg: MsgCreateDenom = value.try_into()?; let submsg_response = SubMsgResponse { events: vec![], data: Some( @@ -57,48 +65,80 @@ impl Module for NeutronStargate { Ok(submsg_response.into()) } MsgMint::TYPE_URL => { - let tf_msg: MsgMint = msg.value.try_into()?; + let tf_msg: MsgMint = value.try_into()?; let mint_coins = tf_msg .amount .expect("Empty amount in tokenfactory MsgMint!"); + let cw_coin = coin(mint_coins.amount.parse()?, mint_coins.denom); let bank_sudo = BankSudo::Mint { - to_address: tf_msg.mint_to_address, - amount: coins(mint_coins.amount.parse()?, mint_coins.denom), + to_address: tf_msg.mint_to_address.clone(), + amount: vec![cw_coin.clone()], }; - router.sudo(api, storage, block, bank_sudo.into()) + let mint_resp = router.sudo(api, storage, block, bank_sudo.into())?; + + if let Some(hook_contract) = self.before_send_hooks.borrow().get(&cw_coin.denom) { + // Call tracker contract to update the balance + let wasm_sudo = WasmSudo { + contract_addr: Addr::unchecked(hook_contract), + msg: to_json_binary(&SudoMsg::BlockBeforeSend { + from: TOKEN_FACTORY_MODULE.to_string(), + to: tf_msg.mint_to_address, + amount: cw_coin, + })?, + }; + router.sudo(api, storage, block, wasm_sudo.into()) + } else { + Ok(mint_resp) + } } MsgBurn::TYPE_URL => { - let tf_msg: MsgBurn = msg.value.try_into()?; + let tf_msg: MsgBurn = value.try_into()?; let burn_coins = tf_msg .amount .expect("Empty amount in tokenfactory MsgBurn!"); - let bank_sudo = BankSudo::Burn { - from_address: tf_msg.sender, - amount: coins(burn_coins.amount.parse()?, burn_coins.denom), + let cw_coin = coin(burn_coins.amount.parse()?, burn_coins.denom); + let burn_msg = BankMsg::Burn { + amount: vec![cw_coin.clone()], }; - router.sudo(api, storage, block, bank_sudo.into()) + let burn_resp = router.execute( + api, + storage, + block, + Addr::unchecked(TOKEN_FACTORY_MODULE), + burn_msg.into(), + )?; + + if let Some(hook_contract) = self.before_send_hooks.borrow().get(&cw_coin.denom) { + // Call tracker contract to update the balance + let wasm_sudo = WasmSudo { + contract_addr: Addr::unchecked(hook_contract), + msg: to_json_binary(&SudoMsg::BlockBeforeSend { + from: "".to_string(), // on real chain this is likely set to denom admin but tracker doesn't care + to: TOKEN_FACTORY_MODULE.to_string(), + amount: cw_coin, + })?, + }; + router.sudo(api, storage, block, wasm_sudo.into()) + } else { + Ok(burn_resp) + } } - _ => { - return Err(anyhow::anyhow!( - "Unexpected exec msg {msg:?} from {sender:?}", - )) + MsgSetDenomMetadata::TYPE_URL => { + // TODO: Implement this if needed + Ok(AppResponse::default()) } - } - } + MsgSetBeforeSendHook::TYPE_URL => { + let tf_msg: MsgSetBeforeSendHook = value.try_into()?; + self.before_send_hooks + .borrow_mut() + .insert(tf_msg.denom, tf_msg.cosmwasm_address); - fn sudo( - &self, - _api: &dyn Api, - _storage: &mut dyn Storage, - _router: &dyn CosmosRouter, - _block: &BlockInfo, - _msg: Self::SudoT, - ) -> AnyResult - where - ExecC: Debug + Clone + PartialEq + JsonSchema + DeserializeOwned + 'static, - QueryC: CustomQuery + DeserializeOwned + 'static, - { - unimplemented!("sudo for Neutron Stargate mock module is not implemented") + Ok(AppResponse::default()) + } + _ => Err(anyhow::anyhow!( + "Unexpected exec msg {type_url} from {sender:?}", + )), + } } fn query( @@ -107,16 +147,21 @@ impl Module for NeutronStargate { _storage: &dyn Storage, _querier: &dyn Querier, _block: &BlockInfo, - request: Self::QueryT, + _path: String, + _data: Binary, ) -> AnyResult { - match request.path.as_str() { - _ => { - return Err(anyhow::anyhow!( - "Unexpected stargate query request {request:?}", - )) - } - } + unimplemented!("Stargate queries are not implemented") + // match path.as_str() { + // "/osmosis.poolmanager.v1beta1.Query/Params" => { + // Ok(to_json_binary(&poolmanager::v1beta1::ParamsResponse { + // params: Some(poolmanager::v1beta1::Params { + // pool_creation_fee: vec![coin(1000_000000, "uosmo").into()], + // taker_fee_params: None, + // authorized_quote_denoms: vec![], + // }), + // })?) + // } + // _ => Err(anyhow::anyhow!("Unexpected stargate query request {path}")), + // } } } - -impl Stargate for NeutronStargate {} diff --git a/contracts/tokenomics/staking/tests/integration.rs b/contracts/tokenomics/staking/tests/staking_integration.rs similarity index 80% rename from contracts/tokenomics/staking/tests/integration.rs rename to contracts/tokenomics/staking/tests/staking_integration.rs index 88676bba9..bacd2abfd 100644 --- a/contracts/tokenomics/staking/tests/integration.rs +++ b/contracts/tokenomics/staking/tests/staking_integration.rs @@ -1,232 +1,87 @@ #![cfg(not(tarpaulin_include))] -use astroport::staking::{ConfigResponse, InstantiateMsg, QueryMsg}; -use common::neutron_ext::NeutronStargate; -use cosmwasm_schema::{schemars::JsonSchema, serde::de::DeserializeOwned}; -use cosmwasm_std::{ - attr, testing::MockApi, to_json_binary, Addr, Api, CustomQuery, Empty, GovMsg, IbcMsg, - IbcQuery, MemoryStorage, Querier, QueryRequest, Storage, Uint128, WasmQuery, -}; -use std::fmt::Debug; -// use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; -use cw_multi_test::{ - custom_app, App, AppBuilder, BankKeeper, BasicApp, BasicAppBuilder, Contract, ContractWrapper, - DistributionKeeper, Executor, FailingModule, Router, StakeKeeper, StargateMsg, StargateQuery, - WasmKeeper, -}; - -use common::helper::{dec_to_f64, f64_to_dec, init_native_coins, AppExtension, Helper, TestCoin}; +use cosmwasm_std::Addr; + +use astroport::staking::{Config, QueryMsg, TrackerData}; + +use crate::common::helper::{Helper, ASTRO_DENOM}; +use crate::common::neutron_ext::TOKEN_FACTORY_MODULE; mod common; -const OWNER: &str = "owner"; const ALICE: &str = "alice"; const BOB: &str = "bob"; const CAROL: &str = "carol"; const ATTACKER: &str = "attacker"; const VICTIM: &str = "victim"; -const ASTRO_DENOM: &str = "factory/assembly/ASTRO"; - -#[allow(clippy::type_complexity)] -fn mock_app() -> App< - BankKeeper, - MockApi, - MemoryStorage, - FailingModule, - WasmKeeper, - StakeKeeper, - DistributionKeeper, - FailingModule, - FailingModule, - NeutronStargate, -> { - let owner = Addr::unchecked(OWNER); - - let test_coins = vec![TestCoin::native("untrn"), TestCoin::native(ASTRO_DENOM)]; - - BasicAppBuilder::new() - .with_stargate(NeutronStargate::default()) - .with_wasm::, WasmKeeper>( - WasmKeeper::new(), - ) - .build(|router, _, storage| { - router - .bank - .init_balance(storage, &owner, init_native_coins(&test_coins)) - .unwrap() - }) -} - #[test] fn test_instantiate_tokenfactory() { - let owner = Addr::unchecked(OWNER); + let owner = Addr::unchecked("owner"); - let mut app = mock_app(); + let helper = Helper::new(&owner).unwrap(); - let staking_contract = Box::new( - ContractWrapper::new_with_empty( - astroport_staking::contract::execute, - astroport_staking::contract::instantiate, - astroport_staking::contract::query, - ) - .with_reply_empty(astroport_staking::contract::reply), - ); - - let staking_code_id = app.store_code(staking_contract); - - let msg = InstantiateMsg { - owner: owner.to_string(), - deposit_token_denom: ASTRO_DENOM.to_string(), - tracking_code_id: 0, // TODO: store tracker code id - }; - let staking_instance = app - .instantiate_contract( - staking_code_id, - owner, - &msg, - &[], - String::from("Astroport Staking"), - None, - ) + let response: Config = helper + .app + .wrap() + .query_wasm_smart(&helper.staking, &QueryMsg::Config {}) .unwrap(); + assert_eq!( + response, + Config { + astro_denom: ASTRO_DENOM.to_string(), + xastro_denom: format!("factory/{}/xASTRO", &helper.staking) + } + ); - let response: ConfigResponse = app + let response: TrackerData = helper + .app .wrap() - .query_wasm_smart(staking_instance.clone(), &QueryMsg::Config {}) + .query_wasm_smart(&helper.staking, &QueryMsg::TrackerConfig {}) .unwrap(); - - assert_eq!(response.deposit_denom, ASTRO_DENOM.to_string()); - // xASTRO created should be factory/contract_address/xASTRO assert_eq!( - response.share_denom, - format!("factory/{}/xASTRO", staking_instance) + response, + TrackerData { + code_id: 2, + admin: owner.to_string(), + token_factory_addr: TOKEN_FACTORY_MODULE.to_string(), + tracker_addr: "contract1".to_string(), + } ); } - -// fn instantiate_contracts(router: &mut App, owner: Addr) -> (Addr, Addr, Addr) { -// let astro_token_contract = Box::new(ContractWrapper::new_with_empty( -// astroport_token::contract::execute, -// astroport_token::contract::instantiate, -// astroport_token::contract::query, -// )); - -// let astro_token_code_id = router.store_code(astro_token_contract); - -// let x_astro_token_contract = Box::new(ContractWrapper::new_with_empty( -// astroport_xastro_token::contract::execute, -// astroport_xastro_token::contract::instantiate, -// astroport_xastro_token::contract::query, -// )); - -// let x_astro_token_code_id = router.store_code(x_astro_token_contract); - -// let msg = InstantiateMsg { -// name: String::from("Astro token"), -// symbol: String::from("ASTRO"), -// decimals: 6, -// initial_balances: vec![], -// mint: Some(MinterResponse { -// minter: owner.to_string(), -// cap: None, -// }), -// marketing: None, -// }; - -// let astro_token_instance = router -// .instantiate_contract( -// astro_token_code_id, -// owner.clone(), -// &msg, -// &[], -// String::from("ASTRO"), -// None, -// ) -// .unwrap(); - -// let staking_contract = Box::new( -// ContractWrapper::new_with_empty( -// astroport_staking::contract::execute, -// astroport_staking::contract::instantiate, -// astroport_staking::contract::query, -// ) -// .with_reply_empty(astroport_staking::contract::reply), -// ); - -// let staking_code_id = router.store_code(staking_contract); - -// let msg = xInstatiateMsg { -// owner: owner.to_string(), -// token_code_id: x_astro_token_code_id, -// deposit_token_addr: astro_token_instance.to_string(), -// marketing: None, -// }; -// let staking_instance = router -// .instantiate_contract( -// staking_code_id, -// owner, -// &msg, -// &[], -// String::from("xASTRO"), -// None, -// ) -// .unwrap(); - -// let msg = QueryMsg::Config {}; -// let res = router -// .wrap() -// .query::(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: staking_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })) -// .unwrap(); - -// // In multitest, contract names are named in the order in which contracts are created. -// assert_eq!("contract0", astro_token_instance); -// assert_eq!("contract1", staking_instance); -// assert_eq!("contract2", res.share_token_addr); - -// let x_astro_token_instance = res.share_token_addr; - -// ( -// astro_token_instance, -// staking_instance, -// x_astro_token_instance, -// ) -// } - +// // #[test] // fn check_deflate_liquidity() { // let mut router = mock_app(); - +// // let owner = Addr::unchecked("owner"); - +// // let (astro_token_instance, staking_instance, _) = // instantiate_contracts(&mut router, owner.clone()); - +// // mint_some_astro( // &mut router, // owner.clone(), // astro_token_instance.clone(), // ATTACKER, // ); - +// // mint_some_astro( // &mut router, // owner.clone(), // astro_token_instance.clone(), // VICTIM, // ); - +// // let attacker_address = Addr::unchecked(ATTACKER); // let victim_address = Addr::unchecked(VICTIM); - +// // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), // msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(1000u128), // }; - +// // let err = router // .execute_contract( // attacker_address.clone(), @@ -239,13 +94,13 @@ fn test_instantiate_tokenfactory() { // err.root_cause().to_string(), // "Initial stake amount must be more than 1000" // ); - +// // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), // msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(1001u128), // }; - +// // router // .execute_contract( // attacker_address.clone(), @@ -254,12 +109,12 @@ fn test_instantiate_tokenfactory() { // &[], // ) // .unwrap(); - +// // let msg = Cw20ExecuteMsg::Transfer { // recipient: staking_instance.to_string(), // amount: Uint128::from(5000u128), // }; - +// // router // .execute_contract( // attacker_address.clone(), @@ -268,13 +123,13 @@ fn test_instantiate_tokenfactory() { // &[], // ) // .unwrap(); - +// // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), // msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(2u128), // }; - +// // let err = router // .execute_contract( // victim_address.clone(), @@ -283,15 +138,15 @@ fn test_instantiate_tokenfactory() { // &[], // ) // .unwrap_err(); - +// // assert_eq!(err.root_cause().to_string(), "Insufficient amount of Stake"); - +// // let msg = Cw20ExecuteMsg::Send { // contract: staking_instance.to_string(), // msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), // amount: Uint128::from(10u128), // }; - +// // router // .execute_contract( // victim_address.clone(), diff --git a/packages/astroport/src/staking.rs b/packages/astroport/src/staking.rs index 1fd498bb0..daeef12df 100644 --- a/packages/astroport/src/staking.rs +++ b/packages/astroport/src/staking.rs @@ -4,12 +4,14 @@ use cosmwasm_std::Uint128; /// This structure describes the parameters used for creating a contract. #[cw_serde] pub struct InstantiateMsg { - /// The contract owner address - pub owner: String, /// The ASTRO token contract address pub deposit_token_denom: String, + /// Tracking contract admin + pub tracking_admin: String, // The Code ID of contract used to track the TokenFactory token balances pub tracking_code_id: u64, + /// Token factory module address. Contract creator must ensure that the address is exact token factory module address. + pub token_factory_addr: String, } /// This structure describes the execute messages available in the contract. @@ -25,23 +27,37 @@ pub enum ExecuteMsg { #[cw_serde] #[derive(QueryResponses)] pub enum QueryMsg { - /// Config returns the contract configuration specified in a custom [`ConfigResponse`] structure - #[returns(ConfigResponse)] + /// Config returns the contract configuration specified in a custom [`Config`] structure + #[returns(Config)] Config {}, #[returns(Uint128)] TotalShares {}, #[returns(Uint128)] TotalDeposit {}, + #[returns(TrackerData)] + TrackerConfig {}, } +/// This structure stores the main parameters for the staking contract. #[cw_serde] -pub struct ConfigResponse { - /// The ASTRO denom - pub deposit_denom: String, - /// The xASTRO denom - pub share_denom: String, - // TODO: Comments - pub share_tracking_address: String, +pub struct Config { + /// The ASTRO token denom + pub astro_denom: String, + /// The xASTRO token denom + pub xastro_denom: String, +} + +/// This structure stores the tracking contract data. +#[cw_serde] +pub struct TrackerData { + /// Tracking contract code id + pub code_id: u64, + /// Tracking contract admin + pub admin: String, + /// Token factory module address + pub token_factory_addr: String, + /// Tracker contract address + pub tracker_addr: String, } // The structure returned as part of set_data when staking or unstaking From 32d25bc77ff100b867f5bead3cac31be37222e1f Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Sat, 20 Jan 2024 12:09:37 +0400 Subject: [PATCH 40/84] adjust old tests; use customized cw-multitest with bank hooks --- Cargo.lock | 23 +- contracts/tokenomics/staking/Cargo.toml | 4 +- contracts/tokenomics/staking/src/contract.rs | 46 +- contracts/tokenomics/staking/src/error.rs | 3 - .../tokenomics/staking/tests/common/helper.rs | 63 +- .../tokenomics/staking/tests/common/mod.rs | 2 +- .../common/{neutron_ext.rs => stargate.rs} | 61 +- .../staking/tests/staking_integration.rs | 998 ++++-------------- 8 files changed, 343 insertions(+), 857 deletions(-) rename contracts/tokenomics/staking/tests/common/{neutron_ext.rs => stargate.rs} (66%) diff --git a/Cargo.lock b/Cargo.lock index 8af1f067e..cb2ca84a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -546,7 +546,7 @@ dependencies = [ "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.20.0", + "cw-multi-test 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw2 1.1.2", @@ -619,7 +619,7 @@ dependencies = [ "astroport-tokenfactory-tracker", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.20.0", + "cw-multi-test 0.20.0 (git+https://github.com/astroport-fi/cw-multi-test?branch=feat/bank_with_send_hooks)", "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw2 1.1.2", @@ -1259,6 +1259,25 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cw-multi-test" +version = "0.20.0" +source = "git+https://github.com/astroport-fi/cw-multi-test?branch=feat/bank_with_send_hooks#ba6b39dceeea81f274662fe3378de84ae7c720d0" +dependencies = [ + "anyhow", + "bech32", + "cosmwasm-std", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "derivative", + "itertools 0.12.0", + "prost 0.12.3", + "schemars", + "serde", + "sha2 0.10.8", + "thiserror", +] + [[package]] name = "cw-storage-plus" version = "0.11.1" diff --git a/contracts/tokenomics/staking/Cargo.toml b/contracts/tokenomics/staking/Cargo.toml index fda132fb9..cee22993f 100644 --- a/contracts/tokenomics/staking/Cargo.toml +++ b/contracts/tokenomics/staking/Cargo.toml @@ -33,5 +33,7 @@ osmosis-std = "0.21" anyhow = "1" itertools = "0.12" cosmwasm-schema = "1.5" -cw-multi-test = { version = "0.20", features = ["cosmwasm_1_1"] } +#cw-multi-test = { version = "0.20", features = ["cosmwasm_1_1"] } +cw-multi-test = { git = "https://github.com/astroport-fi/cw-multi-test", branch = "feat/bank_with_send_hooks", features = ["cosmwasm_1_1"] } + astroport-tokenfactory-tracker = { path = "../../periphery/tokenfactory_tracker" } diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index 493b4b326..e9aab12c1 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -23,7 +23,6 @@ const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); /// xASTRO information -/// TODO: Once Neutron allows setting metadata, add this as decimals const TOKEN_NAME: &str = "Staked Astroport Token"; const TOKEN_SYMBOL: &str = "xASTRO"; @@ -122,7 +121,6 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result { let MsgCreateDenomResponse { new_token_denom } = msg.result.try_into()?; - // TODO: Decide correct metadata let denom_metadata_msg = MsgSetDenomMetadata { sender: env.contract.address.to_string(), metadata: Some(Metadata { @@ -133,7 +131,7 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result Result Result(deps.storage, |mut tracker_data| { tracker_data.tracker_addr = contract_address.clone(); Ok(tracker_data) })?; + let config = CONFIG.load(deps.storage)?; + // Enable balance tracking for xASTRO let set_hook_msg = MsgSetBeforeSendHook { sender: env.contract.address.to_string(), @@ -203,14 +201,16 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result Result { let config = CONFIG.load(deps.storage)?; - // Ensure that the correct token is sent. Sending zero tokens is prohibited on chain level + // Ensure that the correct denom is sent. Sending zero tokens is prohibited on chain level let amount = must_pay(&info, &config.astro_denom)?; - // Get the current deposits and shares held in the contract + // Get the current deposits and shares held in the contract. + // Amount sent along with the message already included. Subtract it from the total deposit let total_deposit = deps .querier .query_balance(&env.contract.address, &config.astro_denom)? - .amount; + .amount + - amount; let total_shares = deps.querier.query_supply(&config.xastro_denom)?.amount; let mut messages: Vec = vec![]; @@ -237,6 +237,10 @@ fn execute_enter(deps: DepsMut, env: Env, info: MessageInfo) -> Result Result Result Result { let config = CONFIG.load(deps.storage)?; - // Ensure that the correct token is sent. Sending zero tokens is prohibited on chain level + // Ensure that the correct denom is sent. Sending zero tokens is prohibited on chain level let amount = must_pay(&info, &config.xastro_denom)?; // Get the current deposits and shares held in the contract @@ -321,7 +325,7 @@ fn execute_leave(deps: DepsMut, env: Env, info: MessageInfo) -> Result Result StdResult { match msg { @@ -358,9 +361,6 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { .amount; to_json_binary(&total_deposit) } - QueryMsg::TrackerConfig {} => { - let tracker_data = TRACKER_DATA.load(deps.storage)?; - to_json_binary(&tracker_data) - } + QueryMsg::TrackerConfig {} => to_json_binary(&TRACKER_DATA.load(deps.storage)?), } } diff --git a/contracts/tokenomics/staking/src/error.rs b/contracts/tokenomics/staking/src/error.rs index 94c99acb4..1195c1ef9 100644 --- a/contracts/tokenomics/staking/src/error.rs +++ b/contracts/tokenomics/staking/src/error.rs @@ -16,9 +16,6 @@ pub enum ContractError { #[error("{0}")] ParseReplyError(#[from] ParseReplyError), - #[error("Unauthorized")] - Unauthorized {}, - #[error("Initial stake amount must be more than {MINIMUM_STAKE_AMOUNT}")] MinimumStakeAmountError {}, diff --git a/contracts/tokenomics/staking/tests/common/helper.rs b/contracts/tokenomics/staking/tests/common/helper.rs index cc83c36c6..54c479f8e 100644 --- a/contracts/tokenomics/staking/tests/common/helper.rs +++ b/contracts/tokenomics/staking/tests/common/helper.rs @@ -3,17 +3,17 @@ use anyhow::Result as AnyResult; use cosmwasm_std::testing::MockApi; use cosmwasm_std::{ - coins, Addr, Binary, Deps, DepsMut, Empty, Env, GovMsg, IbcMsg, IbcQuery, MemoryStorage, - MessageInfo, Response, StdResult, + coins, Addr, Binary, Coin, Deps, DepsMut, Empty, Env, GovMsg, IbcMsg, IbcQuery, MemoryStorage, + MessageInfo, Response, StdResult, Uint128, }; use cw_multi_test::{ - App, BankKeeper, BasicAppBuilder, Contract, ContractWrapper, DistributionKeeper, Executor, - FailingModule, StakeKeeper, WasmKeeper, + App, AppResponse, BankKeeper, BasicAppBuilder, Contract, ContractWrapper, DistributionKeeper, + Executor, FailingModule, StakeKeeper, WasmKeeper, }; -use astroport::staking::{InstantiateMsg, QueryMsg, TrackerData}; +use astroport::staking::{Config, ExecuteMsg, InstantiateMsg, QueryMsg, TrackerData}; -use crate::common::neutron_ext::{NeutronStargate, TOKEN_FACTORY_MODULE}; +use crate::common::stargate::{StargateKeeper, TOKEN_FACTORY_MODULE}; fn staking_contract() -> Box> { Box::new( @@ -49,7 +49,7 @@ pub type NeutronApp = App< DistributionKeeper, FailingModule, FailingModule, - NeutronStargate, + StargateKeeper, >; pub struct Helper { @@ -57,6 +57,7 @@ pub struct Helper { pub owner: Addr, pub staking: Addr, pub tracker_addr: String, + pub xastro_denom: String, } pub const ASTRO_DENOM: &str = "factory/assembly/ASTRO"; @@ -64,7 +65,7 @@ pub const ASTRO_DENOM: &str = "factory/assembly/ASTRO"; impl Helper { pub fn new(owner: &Addr) -> AnyResult { let mut app = BasicAppBuilder::new() - .with_stargate(NeutronStargate::new()) + .with_stargate(StargateKeeper::new()) .build(|router, _, storage| { router .bank @@ -96,12 +97,17 @@ impl Helper { .wrap() .query_wasm_smart(&staking, &QueryMsg::TrackerConfig {}) .unwrap(); + let Config { xastro_denom, .. } = app + .wrap() + .query_wasm_smart(&staking, &QueryMsg::Config {}) + .unwrap(); Ok(Self { app, owner: owner.clone(), staking, tracker_addr, + xastro_denom, }) } @@ -114,6 +120,47 @@ impl Helper { ) .unwrap(); } + + pub fn stake(&mut self, sender: &Addr, amount: u128) -> AnyResult { + self.app.execute_contract( + sender.clone(), + self.staking.clone(), + &ExecuteMsg::Enter {}, + &coins(amount, ASTRO_DENOM), + ) + } + + pub fn unstake(&mut self, sender: &Addr, amount: u128) -> AnyResult { + self.app.execute_contract( + sender.clone(), + self.staking.clone(), + &ExecuteMsg::Leave {}, + &coins(amount, &self.xastro_denom), + ) + } + + pub fn query_balance(&mut self, sender: &Addr, denom: &str) -> StdResult { + self.app + .wrap() + .query_balance(sender, denom) + .map(|c| c.amount) + } + + pub fn mint_coin(&mut self, to: &Addr, coin: Coin) { + // .init_balance() erases previous balance thus I use such hack and create intermediate "denom admin" + let denom_admin = Addr::unchecked(format!("{}_admin", &coin.denom)); + self.app + .init_modules(|router, _, storage| { + router + .bank + .init_balance(storage, &denom_admin, vec![coin.clone()]) + }) + .unwrap(); + + self.app + .send_tokens(denom_admin, to.clone(), &[coin]) + .unwrap(); + } } pub trait AppExtension { diff --git a/contracts/tokenomics/staking/tests/common/mod.rs b/contracts/tokenomics/staking/tests/common/mod.rs index 8d3bd57f1..cb854e7ad 100644 --- a/contracts/tokenomics/staking/tests/common/mod.rs +++ b/contracts/tokenomics/staking/tests/common/mod.rs @@ -1,2 +1,2 @@ pub mod helper; -pub mod neutron_ext; +pub mod stargate; diff --git a/contracts/tokenomics/staking/tests/common/neutron_ext.rs b/contracts/tokenomics/staking/tests/common/stargate.rs similarity index 66% rename from contracts/tokenomics/staking/tests/common/neutron_ext.rs rename to contracts/tokenomics/staking/tests/common/stargate.rs index 3f6bd7ca5..2a61650db 100644 --- a/contracts/tokenomics/staking/tests/common/neutron_ext.rs +++ b/contracts/tokenomics/staking/tests/common/stargate.rs @@ -6,25 +6,22 @@ use anyhow::Result as AnyResult; use cosmwasm_schema::schemars::JsonSchema; use cosmwasm_schema::serde::de::DeserializeOwned; use cosmwasm_std::{ - coin, to_json_binary, Addr, Api, BankMsg, Binary, BlockInfo, CustomQuery, Querier, Storage, - SubMsgResponse, + coin, Addr, Api, BankMsg, Binary, BlockInfo, CustomQuery, Querier, Storage, SubMsgResponse, }; -use cw_multi_test::{AppResponse, BankSudo, CosmosRouter, Stargate, WasmSudo}; +use cw_multi_test::{AppResponse, BankSudo, CosmosRouter, Stargate}; use osmosis_std::types::osmosis::tokenfactory::v1beta1::{ MsgBurn, MsgCreateDenom, MsgCreateDenomResponse, MsgMint, MsgSetBeforeSendHook, MsgSetDenomMetadata, }; -use astroport::tokenfactory_tracker::SudoMsg; - pub const TOKEN_FACTORY_MODULE: &str = "wasm1tokenfactory"; -pub struct NeutronStargate { +pub struct StargateKeeper { // key: token denom, value: hook contract address pub before_send_hooks: RefCell>, } -impl NeutronStargate { +impl StargateKeeper { pub fn new() -> Self { Self { before_send_hooks: Default::default(), @@ -32,7 +29,7 @@ impl NeutronStargate { } } -impl Stargate for NeutronStargate { +impl Stargate for StargateKeeper { fn execute( &self, api: &dyn Api, @@ -74,22 +71,8 @@ impl Stargate for NeutronStargate { to_address: tf_msg.mint_to_address.clone(), amount: vec![cw_coin.clone()], }; - let mint_resp = router.sudo(api, storage, block, bank_sudo.into())?; - if let Some(hook_contract) = self.before_send_hooks.borrow().get(&cw_coin.denom) { - // Call tracker contract to update the balance - let wasm_sudo = WasmSudo { - contract_addr: Addr::unchecked(hook_contract), - msg: to_json_binary(&SudoMsg::BlockBeforeSend { - from: TOKEN_FACTORY_MODULE.to_string(), - to: tf_msg.mint_to_address, - amount: cw_coin, - })?, - }; - router.sudo(api, storage, block, wasm_sudo.into()) - } else { - Ok(mint_resp) - } + router.sudo(api, storage, block, bank_sudo.into()) } MsgBurn::TYPE_URL => { let tf_msg: MsgBurn = value.try_into()?; @@ -100,28 +83,14 @@ impl Stargate for NeutronStargate { let burn_msg = BankMsg::Burn { amount: vec![cw_coin.clone()], }; - let burn_resp = router.execute( + + router.execute( api, storage, block, - Addr::unchecked(TOKEN_FACTORY_MODULE), + Addr::unchecked(&tf_msg.sender), burn_msg.into(), - )?; - - if let Some(hook_contract) = self.before_send_hooks.borrow().get(&cw_coin.denom) { - // Call tracker contract to update the balance - let wasm_sudo = WasmSudo { - contract_addr: Addr::unchecked(hook_contract), - msg: to_json_binary(&SudoMsg::BlockBeforeSend { - from: "".to_string(), // on real chain this is likely set to denom admin but tracker doesn't care - to: TOKEN_FACTORY_MODULE.to_string(), - amount: cw_coin, - })?, - }; - router.sudo(api, storage, block, wasm_sudo.into()) - } else { - Ok(burn_resp) - } + ) } MsgSetDenomMetadata::TYPE_URL => { // TODO: Implement this if needed @@ -129,11 +98,13 @@ impl Stargate for NeutronStargate { } MsgSetBeforeSendHook::TYPE_URL => { let tf_msg: MsgSetBeforeSendHook = value.try_into()?; - self.before_send_hooks - .borrow_mut() - .insert(tf_msg.denom, tf_msg.cosmwasm_address); - Ok(AppResponse::default()) + let bank_sudo = BankSudo::SetHook { + denom: tf_msg.denom, + contract_addr: tf_msg.cosmwasm_address, + }; + + router.sudo(api, storage, block, bank_sudo.into()) } _ => Err(anyhow::anyhow!( "Unexpected exec msg {type_url} from {sender:?}", diff --git a/contracts/tokenomics/staking/tests/staking_integration.rs b/contracts/tokenomics/staking/tests/staking_integration.rs index bacd2abfd..24c0a69a0 100644 --- a/contracts/tokenomics/staking/tests/staking_integration.rs +++ b/contracts/tokenomics/staking/tests/staking_integration.rs @@ -1,22 +1,19 @@ #![cfg(not(tarpaulin_include))] -use cosmwasm_std::Addr; +use cosmwasm_std::{coin, coins, Addr}; +use cw_multi_test::Executor; +use cw_utils::PaymentError; -use astroport::staking::{Config, QueryMsg, TrackerData}; +use astroport::staking::{Config, ExecuteMsg, QueryMsg, TrackerData}; +use astroport_staking::error::ContractError; use crate::common::helper::{Helper, ASTRO_DENOM}; -use crate::common::neutron_ext::TOKEN_FACTORY_MODULE; +use crate::common::stargate::TOKEN_FACTORY_MODULE; mod common; -const ALICE: &str = "alice"; -const BOB: &str = "bob"; -const CAROL: &str = "carol"; -const ATTACKER: &str = "attacker"; -const VICTIM: &str = "victim"; - #[test] -fn test_instantiate_tokenfactory() { +fn test_instantiate() { let owner = Addr::unchecked("owner"); let helper = Helper::new(&owner).unwrap(); @@ -49,767 +46,220 @@ fn test_instantiate_tokenfactory() { } ); } -// -// #[test] -// fn check_deflate_liquidity() { -// let mut router = mock_app(); -// -// let owner = Addr::unchecked("owner"); -// -// let (astro_token_instance, staking_instance, _) = -// instantiate_contracts(&mut router, owner.clone()); -// -// mint_some_astro( -// &mut router, -// owner.clone(), -// astro_token_instance.clone(), -// ATTACKER, -// ); -// -// mint_some_astro( -// &mut router, -// owner.clone(), -// astro_token_instance.clone(), -// VICTIM, -// ); -// -// let attacker_address = Addr::unchecked(ATTACKER); -// let victim_address = Addr::unchecked(VICTIM); -// -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(1000u128), -// }; -// -// let err = router -// .execute_contract( -// attacker_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap_err(); -// assert_eq!( -// err.root_cause().to_string(), -// "Initial stake amount must be more than 1000" -// ); -// -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(1001u128), -// }; -// -// router -// .execute_contract( -// attacker_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); -// -// let msg = Cw20ExecuteMsg::Transfer { -// recipient: staking_instance.to_string(), -// amount: Uint128::from(5000u128), -// }; -// -// router -// .execute_contract( -// attacker_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); -// -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(2u128), -// }; -// -// let err = router -// .execute_contract( -// victim_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap_err(); -// -// assert_eq!(err.root_cause().to_string(), "Insufficient amount of Stake"); -// -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(10u128), -// }; -// -// router -// .execute_contract( -// victim_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); -// } - -// fn mint_some_astro(router: &mut App, owner: Addr, astro_token_instance: Addr, to: &str) { -// let msg = cw20::Cw20ExecuteMsg::Mint { -// recipient: String::from(to), -// amount: Uint128::from(10000u128), -// }; -// let res = router -// .execute_contract(owner.clone(), astro_token_instance.clone(), &msg, &[]) -// .unwrap(); -// assert_eq!(res.events[1].attributes[1], attr("action", "mint")); -// assert_eq!(res.events[1].attributes[2], attr("to", String::from(to))); -// assert_eq!( -// res.events[1].attributes[3], -// attr("amount", Uint128::from(10000u128)) -// ); -// } - -// #[test] -// fn cw20receive_enter_and_leave() { -// let mut router = mock_app(); - -// let owner = Addr::unchecked("owner"); - -// let (astro_token_instance, staking_instance, x_astro_token_instance) = -// instantiate_contracts(&mut router, owner.clone()); - -// // Mint 10000 ASTRO for Alice -// mint_some_astro( -// &mut router, -// owner.clone(), -// astro_token_instance.clone(), -// ALICE, -// ); - -// let alice_address = Addr::unchecked(ALICE); - -// // Check if Alice's ASTRO balance is 100 -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(10000u128) -// } -// ); - -// // We can unstake ASTRO only by calling the xASTRO token. -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), -// amount: Uint128::from(10u128), -// }; - -// let resp = router -// .execute_contract( -// alice_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap_err(); -// assert_eq!(resp.root_cause().to_string(), "Unauthorized"); - -// // Tru to stake Alice's 1100 ASTRO for 1100 xASTRO -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(1100u128), -// }; - -// router -// .execute_contract( -// alice_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); - -// // Check if Alice's xASTRO balance is 1100 -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(100u128) -// } -// ); - -// // Check if Alice's ASTRO balance is 8900 -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(8900u128) -// } -// ); - -// // Check if the staking contract's ASTRO balance is 1100 -// let msg = Cw20QueryMsg::Balance { -// address: staking_instance.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(1100u128) -// } -// ); - -// // We can stake tokens only by calling the ASTRO token. -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(10u128), -// }; - -// let resp = router -// .execute_contract( -// alice_address.clone(), -// x_astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap_err(); -// assert_eq!(resp.root_cause().to_string(), "Unauthorized"); - -// // Try to unstake Alice's 10 xASTRO for 10 ASTRO -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), -// amount: Uint128::from(10u128), -// }; - -// router -// .execute_contract( -// alice_address.clone(), -// x_astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); - -// // Check if Alice's xASTRO balance is 90 -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(90u128) -// } -// ); - -// // Check if Alice's ASTRO balance is 8910 -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(8910u128) -// } -// ); - -// // Check if the staking contract's ASTRO balance is 1090 -// let msg = Cw20QueryMsg::Balance { -// address: staking_instance.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(1090u128) -// } -// ); - -// // Check if the staking contract's xASTRO balance is 1000 -// let msg = Cw20QueryMsg::Balance { -// address: staking_instance.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(1000u128) -// } -// ); - -// let res: Uint128 = router -// .wrap() -// .query_wasm_smart(staking_instance.clone(), &QueryMsg::TotalDeposit {}) -// .unwrap(); -// assert_eq!(res.u128(), 1090); -// let res: Uint128 = router -// .wrap() -// .query_wasm_smart(staking_instance, &QueryMsg::TotalShares {}) -// .unwrap(); -// assert_eq!(res.u128(), 1090); -// } - -// #[test] -// fn should_not_allow_withdraw_more_than_what_you_have() { -// let mut router = mock_app(); - -// let owner = Addr::unchecked("owner"); - -// let (astro_token_instance, staking_instance, x_astro_token_instance) = -// instantiate_contracts(&mut router, owner.clone()); - -// // Mint 10000 ASTRO for Alice -// mint_some_astro( -// &mut router, -// owner.clone(), -// astro_token_instance.clone(), -// ALICE, -// ); -// let alice_address = Addr::unchecked(ALICE); - -// // enter Alice's 2000 ASTRO for 1000 xASTRO -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(2000u128), -// }; - -// router -// .execute_contract( -// alice_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); - -// // Check if Alice's xASTRO balance is 1000 -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(1000u128) -// } -// ); - -// // Try to burn Alice's 2000 xASTRO and unstake -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), -// amount: Uint128::from(2000u128), -// }; - -// let res = router -// .execute_contract( -// alice_address.clone(), -// x_astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap_err(); - -// assert_eq!( -// res.root_cause().to_string(), -// "Cannot Sub with 1000 and 2000" -// ); -// } - -// #[test] -// fn should_work_with_more_than_one_participant() { -// let mut router = mock_app(); - -// let owner = Addr::unchecked("owner"); - -// let (astro_token_instance, staking_instance, x_astro_token_instance) = -// instantiate_contracts(&mut router, owner.clone()); - -// // Mint 10000 ASTRO for Alice -// mint_some_astro( -// &mut router, -// owner.clone(), -// astro_token_instance.clone(), -// ALICE, -// ); -// let alice_address = Addr::unchecked(ALICE); - -// // Mint 10000 ASTRO for Bob -// mint_some_astro( -// &mut router, -// owner.clone(), -// astro_token_instance.clone(), -// BOB, -// ); -// let bob_address = Addr::unchecked(BOB); - -// // Mint 10000 ASTRO for Carol -// mint_some_astro( -// &mut router, -// owner.clone(), -// astro_token_instance.clone(), -// CAROL, -// ); -// let carol_address = Addr::unchecked(CAROL); - -// // Stake Alice's 2000 ASTRO for 1000 xASTRO (subtract min liquid amount) -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(2000u128), -// }; - -// router -// .execute_contract( -// alice_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); - -// // Stake Bob's 10 ASTRO for 10 xASTRO -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(10u128), -// }; - -// router -// .execute_contract(bob_address.clone(), astro_token_instance.clone(), &msg, &[]) -// .unwrap(); - -// // Check if Alice's xASTRO balance is 1000 -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(1000u128) -// } -// ); - -// // Check if Bob's xASTRO balance is 10 -// let msg = Cw20QueryMsg::Balance { -// address: bob_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(10u128) -// } -// ); - -// // Check if staking contract's ASTRO balance is 2010 -// let msg = Cw20QueryMsg::Balance { -// address: staking_instance.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(2010u128) -// } -// ); - -// // Staking contract gets 20 more ASTRO from external source -// let msg = Cw20ExecuteMsg::Transfer { -// recipient: staking_instance.to_string(), -// amount: Uint128::from(20u128), -// }; -// let res = router -// .execute_contract( -// carol_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); -// assert_eq!(res.events[1].attributes[1], attr("action", "transfer")); -// assert_eq!(res.events[1].attributes[2], attr("from", carol_address)); -// assert_eq!( -// res.events[1].attributes[3], -// attr("to", staking_instance.clone()) -// ); -// assert_eq!( -// res.events[1].attributes[4], -// attr("amount", Uint128::from(20u128)) -// ); - -// // Stake Alice's 10 ASTRO for 9 xASTRO: 10*2010/2030 = 9 -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(10u128), -// }; - -// router -// .execute_contract( -// alice_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); - -// // Check if Alice's xASTRO balance is 1009 -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(1009u128) -// } -// ); - -// // Check if Bob's xASTRO balance is 10 -// let msg = Cw20QueryMsg::Balance { -// address: bob_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(10u128) -// } -// ); - -// // Burn Bob's 5 xASTRO and unstake: gets 5*2040/2019 = 5 ASTRO -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Leave {}).unwrap(), -// amount: Uint128::from(5u128), -// }; - -// router -// .execute_contract( -// bob_address.clone(), -// x_astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); - -// // Check if Alice's xASTRO balance is 1009 -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(1009u128) -// } -// ); - -// // Check if Bob's xASTRO balance is 5 -// let msg = Cw20QueryMsg::Balance { -// address: bob_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(5u128) -// } -// ); - -// // Check if the staking contract's ASTRO balance is 52 (60 - 8 (Bob left 5 xASTRO)) -// let msg = Cw20QueryMsg::Balance { -// address: staking_instance.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(2035u128) -// } -// ); - -// // Check if Alice's ASTRO balance is 7990 (10000 minted - 2000 entered - 10 entered) -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(7990u128) -// } -// ); - -// // Check if Bob's ASTRO balance is 9995 (10000 minted - 10 entered + 5 by leaving) -// let msg = Cw20QueryMsg::Balance { -// address: bob_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(9995u128) -// } -// ); -// } - -// #[test] -// fn should_not_allow_directly_burn_from_xastro() { -// let mut router = mock_app(); - -// let owner = Addr::unchecked("owner"); - -// let (astro_token_instance, staking_instance, x_astro_token_instance) = -// instantiate_contracts(&mut router, owner.clone()); - -// // Mint 10000 ASTRO for Alice -// mint_some_astro( -// &mut router, -// owner.clone(), -// astro_token_instance.clone(), -// ALICE, -// ); -// let alice_address = Addr::unchecked(ALICE); - -// // enter Alice's 2000 ASTRO for 1000 xASTRO -// let msg = Cw20ExecuteMsg::Send { -// contract: staking_instance.to_string(), -// msg: to_json_binary(&Cw20HookMsg::Enter {}).unwrap(), -// amount: Uint128::from(2000u128), -// }; - -// router -// .execute_contract( -// alice_address.clone(), -// astro_token_instance.clone(), -// &msg, -// &[], -// ) -// .unwrap(); - -// // Check if Alice's xASTRO balance is 1000 -// let msg = Cw20QueryMsg::Balance { -// address: alice_address.to_string(), -// }; -// let res: Result = -// router.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { -// contract_addr: x_astro_token_instance.to_string(), -// msg: to_json_binary(&msg).unwrap(), -// })); -// assert_eq!( -// res.unwrap(), -// BalanceResponse { -// balance: Uint128::from(1000u128) -// } -// ); - -// // Try to burn directly -// let res = router -// .execute_contract( -// alice_address.clone(), -// x_astro_token_instance.clone(), -// &Cw20ExecuteMsg::Burn { -// amount: Uint128::from(20u128), -// }, -// &[], -// ) -// .unwrap_err(); -// assert_eq!(res.root_cause().to_string(), "Unauthorized"); -// } + +#[test] +fn check_deflate_liquidity() { + let owner = Addr::unchecked("owner"); + + let mut helper = Helper::new(&owner).unwrap(); + + let attacker = Addr::unchecked("attacker"); + let victim = Addr::unchecked("victim"); + + helper.give_astro(10000, &attacker); + helper.give_astro(10000, &victim); + + let err = helper.stake(&attacker, 1000).unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + ContractError::MinimumStakeAmountError {} + ); + + helper.stake(&attacker, 1001).unwrap(); + + helper + .app + .send_tokens( + attacker.clone(), + helper.staking.clone(), + &coins(5000, ASTRO_DENOM), + ) + .unwrap(); + + let err = helper.stake(&victim, 5).unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + ContractError::StakeAmountTooSmall {} + ); + + helper.stake(&victim, 7).unwrap(); +} + +#[test] +fn test_invalid_denom() { + let owner = Addr::unchecked("owner"); + + let mut helper = Helper::new(&owner).unwrap(); + + let bad_denom = "bad/denom"; + helper.mint_coin(&owner, coin(1000, bad_denom)); + + // Try to stake bad denom + let err = helper + .app + .execute_contract( + owner.clone(), + helper.staking.clone(), + &ExecuteMsg::Enter {}, + &coins(1000u128, bad_denom), + ) + .unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + ContractError::PaymentError(PaymentError::MissingDenom(ASTRO_DENOM.to_string())) + ); + + // Try to stake bad denom along with ASTRO + let err = helper + .app + .execute_contract( + owner.clone(), + helper.staking.clone(), + &ExecuteMsg::Enter {}, + &[coin(1000u128, bad_denom), coin(1000u128, ASTRO_DENOM)], + ) + .unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + ContractError::PaymentError(PaymentError::MultipleDenoms {}) + ); + + // Stake to pass xASTRO bank module balance check below + helper.stake(&owner, 10000).unwrap(); + + // Try to unstake bad denom + let err = helper + .app + .execute_contract( + owner.clone(), + helper.staking.clone(), + &ExecuteMsg::Leave {}, + &coins(1000u128, bad_denom), + ) + .unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + ContractError::PaymentError(PaymentError::MissingDenom(helper.xastro_denom.to_string())) + ); + + // Try to unstake bad denom along with xASTRO + let err = helper + .app + .execute_contract( + owner.clone(), + helper.staking.clone(), + &ExecuteMsg::Leave {}, + &[ + coin(1000u128, bad_denom), + coin(1000u128, helper.xastro_denom.clone()), + ], + ) + .unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + ContractError::PaymentError(PaymentError::MultipleDenoms {}) + ); +} + +#[test] +fn test_enter_and_leave() { + let owner = Addr::unchecked("owner"); + + let mut helper = Helper::new(&owner).unwrap(); + let xastro_denom = helper.xastro_denom.clone(); + let staking = helper.staking.clone(); + + let alice = Addr::unchecked("alice"); + + // Mint 10000 ASTRO for Alice + helper.give_astro(10000, &alice); + + // Stake Alice's 1100 ASTRO for 1100 xASTRO + helper.stake(&alice, 1100).unwrap(); + + // Check if Alice's xASTRO balance is 100 (1000 consumed by staking contract on initial provide) + let amount = helper.query_balance(&alice, &xastro_denom).unwrap(); + assert_eq!(amount.u128(), 100); + + // Check if the staking contract's ASTRO balance is 1100 + let amount = helper.query_balance(&staking, ASTRO_DENOM).unwrap(); + assert_eq!(amount.u128(), 1100u128); + + // Unstake Alice's 10 xASTRO for 10 ASTRO + helper.unstake(&alice, 10).unwrap(); + + // Check if Alice's xASTRO balance is 90 + let amount = helper.query_balance(&alice, &xastro_denom).unwrap(); + assert_eq!(amount.u128(), 90); + + // Check if Alice's ASTRO balance is 8910 + let amount = helper.query_balance(&alice, ASTRO_DENOM).unwrap(); + assert_eq!(amount.u128(), 8910); + + // Check if the staking contract's ASTRO balance is 1090 + let amount = helper.query_balance(&staking, ASTRO_DENOM).unwrap(); + assert_eq!(amount.u128(), 1090); + + // Check if the staking contract's xASTRO balance is 1000 (locked forever) + let amount = helper.query_balance(&staking, &xastro_denom).unwrap(); + assert_eq!(amount.u128(), 1000); +} + +#[test] +fn should_work_with_more_than_one_participant() { + let owner = Addr::unchecked("owner"); + + let mut helper = Helper::new(&owner).unwrap(); + let xastro_denom = helper.xastro_denom.clone(); + let staking = helper.staking.clone(); + + let alice = Addr::unchecked("alice"); + let bob = Addr::unchecked("bob"); + + // Mint 10000 ASTRO for Alice and Bob + helper.give_astro(10000, &alice); + helper.give_astro(10000, &bob); + + // Stake Alice's 2000 ASTRO for 1000 xASTRO (subtract min liquid amount) + helper.stake(&alice, 2000).unwrap(); + // Check Alice's xASTRO balance is 1000 + let amount = helper.query_balance(&alice, &xastro_denom).unwrap(); + assert_eq!(amount.u128(), 1000); + + // Stake Bob's 10 ASTRO for 10 xASTRO + helper.stake(&bob, 10).unwrap(); + // Check Bob's xASTRO balance is 10 + let amount = helper.query_balance(&bob, &xastro_denom).unwrap(); + assert_eq!(amount.u128(), 10); + + // Check staking contract's ASTRO balance is 2010 + let amount = helper.query_balance(&staking, ASTRO_DENOM).unwrap(); + assert_eq!(amount.u128(), 2010); + + // Staking contract gets 20 more ASTRO from external source + helper.give_astro(20, &staking); + + // Stake Alice's 10 ASTRO for 9 xASTRO: 10*2010/2030 = 9 + helper.stake(&alice, 10).unwrap(); + + // Check Alice's xASTRO balance is 1009 + let amount = helper.query_balance(&alice, &xastro_denom).unwrap(); + assert_eq!(amount.u128(), 1009); + + // Burn Bob's 5 xASTRO and unstake: gets 5*2040/2019 = 5 ASTRO + helper.unstake(&bob, 5).unwrap(); + // Check Bob's xASTRO balance is 5 + let amount = helper.query_balance(&bob, &xastro_denom).unwrap(); + assert_eq!(amount.u128(), 5); + // Check Bob's ASTRO balance is 9995 (10000 minted - 10 entered + 5 by leaving) + let amount = helper.query_balance(&bob, ASTRO_DENOM).unwrap(); + assert_eq!(amount.u128(), 9995); + + // Check the staking contract's ASTRO balance + let amount = helper.query_balance(&staking, ASTRO_DENOM).unwrap(); + assert_eq!(amount.u128(), 2035); + + // Check Alice's ASTRO balance is 7990 (10000 minted - 2000 entered - 10 entered) + let amount = helper.query_balance(&alice, ASTRO_DENOM).unwrap(); + assert_eq!(amount.u128(), 7990); +} From 9ef394afe943e3bc093693576e3c517d243bdae1 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Sat, 20 Jan 2024 12:20:51 +0400 Subject: [PATCH 41/84] refactor tests --- Cargo.lock | 2 +- contracts/tokenomics/staking/Cargo.toml | 1 + .../tokenomics/staking/tests/common/helper.rs | 20 +++++++------------ .../staking/tests/common/stargate.rs | 18 ++--------------- .../staking/tests/staking_integration.rs | 3 +-- 5 files changed, 12 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb2ca84a5..c46b4225d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1262,7 +1262,7 @@ dependencies = [ [[package]] name = "cw-multi-test" version = "0.20.0" -source = "git+https://github.com/astroport-fi/cw-multi-test?branch=feat/bank_with_send_hooks#ba6b39dceeea81f274662fe3378de84ae7c720d0" +source = "git+https://github.com/astroport-fi/cw-multi-test?branch=feat/bank_with_send_hooks#80ebf1aff909d5438fff093b6243c5d7cbf924b3" dependencies = [ "anyhow", "bech32", diff --git a/contracts/tokenomics/staking/Cargo.toml b/contracts/tokenomics/staking/Cargo.toml index cee22993f..224461713 100644 --- a/contracts/tokenomics/staking/Cargo.toml +++ b/contracts/tokenomics/staking/Cargo.toml @@ -34,6 +34,7 @@ anyhow = "1" itertools = "0.12" cosmwasm-schema = "1.5" #cw-multi-test = { version = "0.20", features = ["cosmwasm_1_1"] } +#cw-multi-test = { path = "../../../../cw-multi-test", features = ["cosmwasm_1_1"] } cw-multi-test = { git = "https://github.com/astroport-fi/cw-multi-test", branch = "feat/bank_with_send_hooks", features = ["cosmwasm_1_1"] } astroport-tokenfactory-tracker = { path = "../../periphery/tokenfactory_tracker" } diff --git a/contracts/tokenomics/staking/tests/common/helper.rs b/contracts/tokenomics/staking/tests/common/helper.rs index 54c479f8e..c2e6d3109 100644 --- a/contracts/tokenomics/staking/tests/common/helper.rs +++ b/contracts/tokenomics/staking/tests/common/helper.rs @@ -8,12 +8,12 @@ use cosmwasm_std::{ }; use cw_multi_test::{ App, AppResponse, BankKeeper, BasicAppBuilder, Contract, ContractWrapper, DistributionKeeper, - Executor, FailingModule, StakeKeeper, WasmKeeper, + Executor, FailingModule, StakeKeeper, WasmKeeper, TOKEN_FACTORY_MODULE, }; use astroport::staking::{Config, ExecuteMsg, InstantiateMsg, QueryMsg, TrackerData}; -use crate::common::stargate::{StargateKeeper, TOKEN_FACTORY_MODULE}; +use crate::common::stargate::StargateKeeper; fn staking_contract() -> Box> { Box::new( @@ -39,7 +39,7 @@ fn tracker_contract() -> Box> { ) } -pub type NeutronApp = App< +pub type CustomizedApp = App< BankKeeper, MockApi, MemoryStorage, @@ -53,7 +53,7 @@ pub type NeutronApp = App< >; pub struct Helper { - pub app: NeutronApp, + pub app: CustomizedApp, pub owner: Addr, pub staking: Addr, pub tracker_addr: String, @@ -65,7 +65,7 @@ pub const ASTRO_DENOM: &str = "factory/assembly/ASTRO"; impl Helper { pub fn new(owner: &Addr) -> AnyResult { let mut app = BasicAppBuilder::new() - .with_stargate(StargateKeeper::new()) + .with_stargate(StargateKeeper::default()) .build(|router, _, storage| { router .bank @@ -161,15 +161,9 @@ impl Helper { .send_tokens(denom_admin, to.clone(), &[coin]) .unwrap(); } -} - -pub trait AppExtension { - fn next_block(&mut self, time: u64); -} -impl AppExtension for NeutronApp { - fn next_block(&mut self, time: u64) { - self.update_block(|block| { + pub fn next_block(&mut self, time: u64) { + self.app.update_block(|block| { block.time = block.time.plus_seconds(time); block.height += 1 }); diff --git a/contracts/tokenomics/staking/tests/common/stargate.rs b/contracts/tokenomics/staking/tests/common/stargate.rs index 2a61650db..b8282c925 100644 --- a/contracts/tokenomics/staking/tests/common/stargate.rs +++ b/contracts/tokenomics/staking/tests/common/stargate.rs @@ -1,5 +1,3 @@ -use std::cell::RefCell; -use std::collections::HashMap; use std::fmt::Debug; use anyhow::Result as AnyResult; @@ -14,20 +12,8 @@ use osmosis_std::types::osmosis::tokenfactory::v1beta1::{ MsgSetDenomMetadata, }; -pub const TOKEN_FACTORY_MODULE: &str = "wasm1tokenfactory"; - -pub struct StargateKeeper { - // key: token denom, value: hook contract address - pub before_send_hooks: RefCell>, -} - -impl StargateKeeper { - pub fn new() -> Self { - Self { - before_send_hooks: Default::default(), - } - } -} +#[derive(Default)] +pub struct StargateKeeper {} impl Stargate for StargateKeeper { fn execute( diff --git a/contracts/tokenomics/staking/tests/staking_integration.rs b/contracts/tokenomics/staking/tests/staking_integration.rs index 24c0a69a0..68165ced8 100644 --- a/contracts/tokenomics/staking/tests/staking_integration.rs +++ b/contracts/tokenomics/staking/tests/staking_integration.rs @@ -1,14 +1,13 @@ #![cfg(not(tarpaulin_include))] use cosmwasm_std::{coin, coins, Addr}; -use cw_multi_test::Executor; +use cw_multi_test::{Executor, TOKEN_FACTORY_MODULE}; use cw_utils::PaymentError; use astroport::staking::{Config, ExecuteMsg, QueryMsg, TrackerData}; use astroport_staking::error::ContractError; use crate::common::helper::{Helper, ASTRO_DENOM}; -use crate::common::stargate::TOKEN_FACTORY_MODULE; mod common; From 6e7ed11fce1f47f2023ac052547802e82007faed Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Sat, 20 Jan 2024 12:44:43 +0400 Subject: [PATCH 42/84] add historical queries directly to staking contract --- contracts/tokenomics/staking/src/contract.rs | 36 ++++++++++++++++++++ packages/astroport/src/staking.rs | 13 +++++++ 2 files changed, 49 insertions(+) diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index e9aab12c1..6c461944f 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -342,6 +342,10 @@ fn execute_leave(deps: DepsMut, env: Env, info: MessageInfo) -> Result StdResult { match msg { @@ -362,5 +366,37 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { to_json_binary(&total_deposit) } QueryMsg::TrackerConfig {} => to_json_binary(&TRACKER_DATA.load(deps.storage)?), + QueryMsg::BalanceAt { address, timestamp } => { + let tracker_config = TRACKER_DATA.load(deps.storage)?; + + let amount = if timestamp.is_none() { + let config = CONFIG.load(deps.storage)?; + deps.querier + .query_balance(&address, &config.astro_denom)? + .amount + } else { + deps.querier.query_wasm_smart( + &tracker_config.tracker_addr, + &astroport::tokenfactory_tracker::QueryMsg::BalanceAt { address, timestamp }, + )? + }; + + to_json_binary(&amount) + } + QueryMsg::TotalSupplyAt { timestamp } => { + let tracker_config = TRACKER_DATA.load(deps.storage)?; + + let amount = if timestamp.is_none() { + let config = CONFIG.load(deps.storage)?; + deps.querier.query_supply(&config.xastro_denom)?.amount + } else { + deps.querier.query_wasm_smart( + &tracker_config.tracker_addr, + &astroport::tokenfactory_tracker::QueryMsg::TotalSupplyAt { timestamp }, + )? + }; + + to_json_binary(&amount) + } } } diff --git a/packages/astroport/src/staking.rs b/packages/astroport/src/staking.rs index daeef12df..1ed50298b 100644 --- a/packages/astroport/src/staking.rs +++ b/packages/astroport/src/staking.rs @@ -30,12 +30,25 @@ pub enum QueryMsg { /// Config returns the contract configuration specified in a custom [`Config`] structure #[returns(Config)] Config {}, + /// Returns xASTRO total supply. Duplicates TotalSupplyAt { timestamp: None } logic but kept for backward compatibility. #[returns(Uint128)] TotalShares {}, + /// Returns total ASTRO staked in the contract #[returns(Uint128)] TotalDeposit {}, #[returns(TrackerData)] TrackerConfig {}, + /// BalanceAt returns xASTRO balance of the given address at at the given timestamp. + /// Returns current balance if unset if timestamp unset. + #[returns(Uint128)] + BalanceAt { + address: String, + timestamp: Option, + }, + /// TotalSupplyAt returns xASTRO total token supply at the given timestamp. + /// Returns current total supply if timestamp unset. + #[returns(Uint128)] + TotalSupplyAt { timestamp: Option }, } /// This structure stores the main parameters for the staking contract. From 07dcef4dff1f930d394750c51f87e943a771b5bf Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Mon, 22 Jan 2024 18:46:52 +0400 Subject: [PATCH 43/84] test historical queries --- contracts/tokenomics/staking/Cargo.toml | 1 - contracts/tokenomics/staking/src/contract.rs | 8 +- .../tokenomics/staking/tests/common/helper.rs | 28 +++- .../staking/tests/staking_integration.rs | 148 +++++++++++++++++- 4 files changed, 174 insertions(+), 11 deletions(-) diff --git a/contracts/tokenomics/staking/Cargo.toml b/contracts/tokenomics/staking/Cargo.toml index 224461713..7e29ba0dc 100644 --- a/contracts/tokenomics/staking/Cargo.toml +++ b/contracts/tokenomics/staking/Cargo.toml @@ -36,5 +36,4 @@ cosmwasm-schema = "1.5" #cw-multi-test = { version = "0.20", features = ["cosmwasm_1_1"] } #cw-multi-test = { path = "../../../../cw-multi-test", features = ["cosmwasm_1_1"] } cw-multi-test = { git = "https://github.com/astroport-fi/cw-multi-test", branch = "feat/bank_with_send_hooks", features = ["cosmwasm_1_1"] } - astroport-tokenfactory-tracker = { path = "../../periphery/tokenfactory_tracker" } diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index 6c461944f..661260d87 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -367,14 +367,13 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { } QueryMsg::TrackerConfig {} => to_json_binary(&TRACKER_DATA.load(deps.storage)?), QueryMsg::BalanceAt { address, timestamp } => { - let tracker_config = TRACKER_DATA.load(deps.storage)?; - let amount = if timestamp.is_none() { let config = CONFIG.load(deps.storage)?; deps.querier - .query_balance(&address, &config.astro_denom)? + .query_balance(&address, &config.xastro_denom)? .amount } else { + let tracker_config = TRACKER_DATA.load(deps.storage)?; deps.querier.query_wasm_smart( &tracker_config.tracker_addr, &astroport::tokenfactory_tracker::QueryMsg::BalanceAt { address, timestamp }, @@ -384,12 +383,11 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { to_json_binary(&amount) } QueryMsg::TotalSupplyAt { timestamp } => { - let tracker_config = TRACKER_DATA.load(deps.storage)?; - let amount = if timestamp.is_none() { let config = CONFIG.load(deps.storage)?; deps.querier.query_supply(&config.xastro_denom)?.amount } else { + let tracker_config = TRACKER_DATA.load(deps.storage)?; deps.querier.query_wasm_smart( &tracker_config.tracker_addr, &astroport::tokenfactory_tracker::QueryMsg::TotalSupplyAt { timestamp }, diff --git a/contracts/tokenomics/staking/tests/common/helper.rs b/contracts/tokenomics/staking/tests/common/helper.rs index c2e6d3109..f0f03de22 100644 --- a/contracts/tokenomics/staking/tests/common/helper.rs +++ b/contracts/tokenomics/staking/tests/common/helper.rs @@ -3,8 +3,8 @@ use anyhow::Result as AnyResult; use cosmwasm_std::testing::MockApi; use cosmwasm_std::{ - coins, Addr, Binary, Coin, Deps, DepsMut, Empty, Env, GovMsg, IbcMsg, IbcQuery, MemoryStorage, - MessageInfo, Response, StdResult, Uint128, + coins, Addr, Coin, DepsMut, Empty, Env, GovMsg, IbcMsg, IbcQuery, MemoryStorage, MessageInfo, + Response, StdResult, Uint128, }; use cw_multi_test::{ App, AppResponse, BankKeeper, BasicAppBuilder, Contract, ContractWrapper, DistributionKeeper, @@ -33,7 +33,7 @@ fn tracker_contract() -> Box> { unimplemented!() }, astroport_tokenfactory_tracker::contract::instantiate, - |_: Deps, _: Env, _: Empty| -> StdResult { unimplemented!() }, + astroport_tokenfactory_tracker::query::query, ) .with_sudo_empty(astroport_tokenfactory_tracker::contract::sudo), ) @@ -139,13 +139,33 @@ impl Helper { ) } - pub fn query_balance(&mut self, sender: &Addr, denom: &str) -> StdResult { + pub fn query_balance(&self, sender: &Addr, denom: &str) -> StdResult { self.app .wrap() .query_balance(sender, denom) .map(|c| c.amount) } + pub fn query_xastro_balance_at( + &self, + sender: &Addr, + timestamp: Option, + ) -> StdResult { + self.app.wrap().query_wasm_smart( + &self.staking, + &QueryMsg::BalanceAt { + address: sender.to_string(), + timestamp, + }, + ) + } + + pub fn query_xastro_supply_at(&self, timestamp: Option) -> StdResult { + self.app + .wrap() + .query_wasm_smart(&self.staking, &QueryMsg::TotalSupplyAt { timestamp }) + } + pub fn mint_coin(&mut self, to: &Addr, coin: Coin) { // .init_balance() erases previous balance thus I use such hack and create intermediate "denom admin" let denom_admin = Addr::unchecked(format!("{}_admin", &coin.denom)); diff --git a/contracts/tokenomics/staking/tests/staking_integration.rs b/contracts/tokenomics/staking/tests/staking_integration.rs index 68165ced8..a8547288e 100644 --- a/contracts/tokenomics/staking/tests/staking_integration.rs +++ b/contracts/tokenomics/staking/tests/staking_integration.rs @@ -1,8 +1,10 @@ #![cfg(not(tarpaulin_include))] -use cosmwasm_std::{coin, coins, Addr}; +use cosmwasm_std::{coin, coins, Addr, BlockInfo, Timestamp, Uint128}; use cw_multi_test::{Executor, TOKEN_FACTORY_MODULE}; use cw_utils::PaymentError; +use itertools::Itertools; +use std::collections::HashMap; use astroport::staking::{Config, ExecuteMsg, QueryMsg, TrackerData}; use astroport_staking::error::ContractError; @@ -262,3 +264,147 @@ fn should_work_with_more_than_one_participant() { let amount = helper.query_balance(&alice, ASTRO_DENOM).unwrap(); assert_eq!(amount.u128(), 7990); } + +#[test] +fn test_historical_queries() { + let owner = Addr::unchecked("owner"); + + let mut helper = Helper::new(&owner).unwrap(); + helper.app.set_block(BlockInfo { + height: 1000, + time: Timestamp::from_seconds(1700000000), + chain_id: "".to_string(), + }); + + helper.stake(&owner, 1001).unwrap(); + + let xastro_denom = helper.xastro_denom.clone(); + + let user1 = Addr::unchecked("user1"); + let user2 = Addr::unchecked("user2"); + + // Stake and query at the same block + helper.give_astro(1_000_000000, &user1); + helper.stake(&user1, 1_000_000000).unwrap(); + + let amount = helper.query_xastro_balance_at(&user1, None).unwrap(); + assert_eq!(amount.u128(), 1_000_000000); + let total_supply = helper.query_xastro_supply_at(None).unwrap(); + assert_eq!(total_supply.u128(), 1_000_001001); + + // Stake for user2 too + helper.give_astro(1_000_000000, &user2); + helper.stake(&user2, 1_000_000000).unwrap(); + + struct Entry { + user1_bal: Uint128, + user2_bal: Uint128, + total_supply: Uint128, + } + let mut history: HashMap = Default::default(); + + for _ in 0..10 { + helper.next_block(100); + + helper + .app + .send_tokens( + user1.clone(), + user2.clone(), + &coins(1_000000, &xastro_denom), + ) + .unwrap(); + + // Stake to impact total supply + helper.give_astro(2_000000, &user1); + helper.stake(&user1, 2_000000).unwrap(); + + // Unstake to impact total supply + helper.unstake(&user2, 3_000000).unwrap(); + + history.insert( + helper.app.block_info().time.seconds() + 1, // balance change takes effect from the next block + Entry { + user1_bal: helper + .app + .wrap() + .query_balance(&user1, &xastro_denom) + .unwrap() + .amount, + user2_bal: helper + .app + .wrap() + .query_balance(&user2, &xastro_denom) + .unwrap() + .amount, + total_supply: helper + .app + .wrap() + .query_supply(&xastro_denom) + .unwrap() + .amount, + }, + ); + } + + for ( + timestamp, + Entry { + user1_bal, + user2_bal, + total_supply, + }, + ) in history.into_iter().sorted_by(|(t1, _), (t2, _)| t1.cmp(t2)) + { + let historical_user1_bal = helper + .query_xastro_balance_at(&user1, Some(timestamp)) + .unwrap(); + assert_eq!( + historical_user1_bal, user1_bal, + "Invalid balance for user1 at {timestamp}" + ); + + let historical_user2_bal = helper + .query_xastro_balance_at(&user2, Some(timestamp)) + .unwrap(); + assert_eq!( + historical_user2_bal, user2_bal, + "Invalid balance for user2 at {timestamp}" + ); + + let historical_total_supply = helper.query_xastro_supply_at(Some(timestamp)).unwrap(); + assert_eq!( + historical_total_supply, total_supply, + "Invalid total supply at {timestamp}" + ); + } + + // Check the rest of the queries + + let total_shares: Uint128 = helper + .app + .wrap() + .query_wasm_smart(&helper.staking, &QueryMsg::TotalShares {}) + .unwrap(); + let total_supply = helper + .app + .wrap() + .query_supply(&xastro_denom) + .unwrap() + .amount; + assert_eq!(total_shares, total_supply); + + let staking = helper.staking.clone(); + let total_deposit: Uint128 = helper + .app + .wrap() + .query_wasm_smart(&helper.staking, &QueryMsg::TotalDeposit {}) + .unwrap(); + let staking_astro_balance = helper + .app + .wrap() + .query_balance(&staking, ASTRO_DENOM) + .unwrap() + .amount; + assert_eq!(total_deposit, staking_astro_balance); +} From 87ec3cab060d3c170bb37f8bbd8f44e98c2564af Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Mon, 22 Jan 2024 18:57:46 +0400 Subject: [PATCH 44/84] track balances over nanoseconds --- .../tokenfactory_tracker/src/contract.rs | 25 ++++++++++--------- .../tokenfactory_tracker/src/query.rs | 4 +-- .../staking/tests/staking_integration.rs | 2 +- .../astroport/src/tokenfactory_tracker.rs | 2 ++ 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index b75ebeaa4..3986960ab 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -55,9 +55,10 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result Result Result(storage, &from, block_ts, |balance| { + BALANCES.update::<_, StdError>(storage, &from, block_nanos, |balance| { Ok(balance.unwrap_or_default().checked_sub(amount)?) })?; } else { // Minted new tokens - TOTAL_SUPPLY_HISTORY.update::<_, StdError>(storage, block_ts, |balance| { + TOTAL_SUPPLY_HISTORY.update::<_, StdError>(storage, block_nanos, |balance| { Ok(balance.unwrap_or_default().checked_add(amount)?) })?; } @@ -111,12 +112,12 @@ pub fn track_balances( // When burning tokens, the receiver is the token factory module address // Sending tokens to the module address isn't allowed by the chain if to.ne(&config.m) { - BALANCES.update::<_, StdError>(storage, &to, block_ts, |balance| { + BALANCES.update::<_, StdError>(storage, &to, block_nanos, |balance| { Ok(balance.unwrap_or_default().checked_add(amount)?) })?; } else { // Burned tokens - TOTAL_SUPPLY_HISTORY.update::<_, StdError>(storage, block_ts, |balance| { + TOTAL_SUPPLY_HISTORY.update::<_, StdError>(storage, block_nanos, |balance| { Ok(balance.unwrap_or_default().checked_sub(amount)?) })?; } @@ -232,7 +233,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user1".to_string(), - timestamp: Some(env.block.time.seconds()), + timestamp: Some(env.block.time.nanos()), }, ) .unwrap(); @@ -243,7 +244,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user2".to_string(), - timestamp: Some(env.block.time.seconds()), + timestamp: Some(env.block.time.nanos()), }, ) .unwrap(); @@ -254,7 +255,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user3".to_string(), - timestamp: Some(env.block.time.seconds()), + timestamp: Some(env.block.time.nanos()), }, ) .unwrap(); @@ -286,7 +287,7 @@ mod tests { deps.as_ref(), env.clone(), QueryMsg::TotalSupplyAt { - timestamp: Some(env.block.time.seconds()), + timestamp: Some(env.block.time.nanos()), }, ) .unwrap(); @@ -350,7 +351,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user1".to_string(), - timestamp: Some(env.block.time.seconds()), + timestamp: Some(env.block.time.nanos()), }, ) .unwrap(); diff --git a/contracts/periphery/tokenfactory_tracker/src/query.rs b/contracts/periphery/tokenfactory_tracker/src/query.rs index e82c56b3d..d2e5b7146 100644 --- a/contracts/periphery/tokenfactory_tracker/src/query.rs +++ b/contracts/periphery/tokenfactory_tracker/src/query.rs @@ -12,11 +12,11 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::BalanceAt { address, timestamp } => to_json_binary(&balance_at( deps, address, - timestamp.unwrap_or_else(|| env.block.time.seconds()), + timestamp.unwrap_or_else(|| env.block.time.nanos()), )?), QueryMsg::TotalSupplyAt { timestamp } => to_json_binary(&total_supply_at( deps, - timestamp.unwrap_or_else(|| env.block.time.seconds()), + timestamp.unwrap_or_else(|| env.block.time.nanos()), )?), } } diff --git a/contracts/tokenomics/staking/tests/staking_integration.rs b/contracts/tokenomics/staking/tests/staking_integration.rs index a8547288e..0660234ee 100644 --- a/contracts/tokenomics/staking/tests/staking_integration.rs +++ b/contracts/tokenomics/staking/tests/staking_integration.rs @@ -323,7 +323,7 @@ fn test_historical_queries() { helper.unstake(&user2, 3_000000).unwrap(); history.insert( - helper.app.block_info().time.seconds() + 1, // balance change takes effect from the next block + helper.app.block_info().time.nanos() + 1, // balance change takes effect from the next block Entry { user1_bal: helper .app diff --git a/packages/astroport/src/tokenfactory_tracker.rs b/packages/astroport/src/tokenfactory_tracker.rs index 94c7ff2b2..fef14e7b9 100644 --- a/packages/astroport/src/tokenfactory_tracker.rs +++ b/packages/astroport/src/tokenfactory_tracker.rs @@ -36,11 +36,13 @@ pub enum SudoMsg { #[cw_serde] #[derive(QueryResponses)] pub enum QueryMsg { + /// Return the balance of the given address at the given nanoseconds timestamp. #[returns(Uint128)] BalanceAt { address: String, timestamp: Option, }, + /// Return the total supply at the given nanoseconds timestamp. #[returns(Uint128)] TotalSupplyAt { timestamp: Option }, } From c38251a9539aab364a29d9e5899c98602be602b6 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Mon, 22 Jan 2024 19:23:11 +0400 Subject: [PATCH 45/84] test response data --- contracts/tokenomics/staking/src/contract.rs | 3 --- .../staking/tests/staking_integration.rs | 24 +++++++++++++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index 661260d87..be898aec3 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -57,8 +57,6 @@ pub fn instantiate( ) -> StdResult { set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - // TODO: figure out how to set initial staking ratio - // Validate that deposit_token_denom exists on chain deps.querier.query_supply(&msg.deposit_token_denom)?; @@ -315,7 +313,6 @@ fn execute_leave(deps: DepsMut, env: Env, info: MessageInfo) -> Result Date: Mon, 22 Jan 2024 19:44:53 +0400 Subject: [PATCH 46/84] remove all generator tests; mark contract as deprecated --- .github/workflows/code_coverage.yml | 2 + Cargo.lock | 239 - contracts/tokenomics/generator/Cargo.toml | 21 - contracts/tokenomics/generator/README.md | 2 + .../generator/neutron_bug_fix_log.md | 247 - .../tokenomics/generator/tests/integration.rs | 4554 ----------------- .../tests/test_utils/controller_helper.rs | 345 -- .../tests/test_utils/delegation_helper.rs | 174 - .../tests/test_utils/escrow_helper.rs | 347 -- .../generator/tests/test_utils/mod.rs | 36 - packages/astroport_mocks/src/lib.rs | 2 - packages/astroport_mocks/src/staking.rs | 189 - 12 files changed, 4 insertions(+), 6154 deletions(-) delete mode 100644 contracts/tokenomics/generator/neutron_bug_fix_log.md delete mode 100644 contracts/tokenomics/generator/tests/integration.rs delete mode 100644 contracts/tokenomics/generator/tests/test_utils/controller_helper.rs delete mode 100644 contracts/tokenomics/generator/tests/test_utils/delegation_helper.rs delete mode 100644 contracts/tokenomics/generator/tests/test_utils/escrow_helper.rs delete mode 100644 contracts/tokenomics/generator/tests/test_utils/mod.rs delete mode 100644 packages/astroport_mocks/src/staking.rs diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index e8fb78350..2f56ae592 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -54,6 +54,8 @@ jobs: uses: actions-rs/tarpaulin@v0.1 with: version: '0.22.0' + # exclude old generator contract from coverage; keeping it for reference + args: '--exclude-files contracts/tokenomics/generator/*' - name: Upload to codecov.io if: github.ref == 'refs/heads/main' diff --git a/Cargo.lock b/Cargo.lock index c46b4225d..c1223165b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -43,15 +43,6 @@ version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" -[[package]] -name = "ap-valkyrie" -version = "1.0.0" -source = "git+https://github.com/astroport-fi/astro-generator-proxy-contracts?branch=main#e573a8f8542b99015cac910f024a5f20fd793f3c" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", -] - [[package]] name = "astro-satellite-package" version = "0.1.0" @@ -175,19 +166,8 @@ dependencies = [ name = "astroport-generator" version = "2.3.2" dependencies = [ - "anyhow", "astroport 3.8.0", - "astroport-factory 1.7.0", "astroport-governance 1.4.0", - "astroport-mocks", - "astroport-native-coin-registry", - "astroport-nft", - "astroport-pair", - "astroport-pair-stable", - "astroport-staking", - "astroport-token", - "astroport-vesting", - "astroport-whitelist", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -195,16 +175,8 @@ dependencies = [ "cw1-whitelist", "cw2 0.15.1", "cw20 0.15.1", - "cw721-base", - "generator-controller", - "generator-proxy-to-vkr", "protobuf", "thiserror", - "valkyrie", - "valkyrie-lp-staking", - "valkyrie-vp", - "voting-escrow", - "voting-escrow-delegation", ] [[package]] @@ -387,19 +359,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-nft" -version = "1.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" -dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", - "cosmwasm-schema", - "cosmwasm-std", - "cw2 0.15.1", - "cw721", - "cw721-base", -] - [[package]] name = "astroport-oracle" version = "2.1.1" @@ -1278,17 +1237,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cw-storage-plus" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d7ee1963302b0ac2a9d42fe0faec826209c17452bfd36fbfd9d002a88929261" -dependencies = [ - "cosmwasm-std", - "schemars", - "serde", -] - [[package]] name = "cw-storage-plus" version = "0.15.1" @@ -1311,18 +1259,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cw-utils" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef842a1792e4285beff7b3b518705f760fa4111dc1e296e53f3e92d1ef7f6220" -dependencies = [ - "cosmwasm-std", - "schemars", - "serde", - "thiserror", -] - [[package]] name = "cw-utils" version = "0.15.1" @@ -1382,18 +1318,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cw2" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1d81d7c359d6c1fba3aa83dad7ec6f999e512571380ae62f81257c3db569743" -dependencies = [ - "cosmwasm-std", - "cw-storage-plus 0.11.1", - "schemars", - "serde", -] - [[package]] name = "cw2" version = "0.15.1" @@ -1422,18 +1346,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cw20" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9671d7edef5608acaf5b2f1e473ee3f501eced2cd4f7392e2106c8cf02ba0720" -dependencies = [ - "cosmwasm-std", - "cw-utils 0.11.1", - "schemars", - "serde", -] - [[package]] name = "cw20" version = "0.15.1" @@ -1460,22 +1372,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cw20-base" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f6fc8c4cd451b418fa4f1ac2ea70595811fa9d8b4033617fe47953d7a93ceb" -dependencies = [ - "cosmwasm-std", - "cw-storage-plus 0.11.1", - "cw-utils 0.11.1", - "cw2 0.11.1", - "cw20 0.11.1", - "schemars", - "serde", - "thiserror", -] - [[package]] name = "cw20-base" version = "0.15.1" @@ -1527,36 +1423,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cw721" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20dfe04f86e5327956b559ffcc86d9a43167391f37402afd8bf40b0be16bee4d" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-utils 0.15.1", - "schemars", - "serde", -] - -[[package]] -name = "cw721-base" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62c3ee3b669fc2a8094301a73fd7be97a7454d4df2650c33599f737e8f254d24" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw-utils 0.15.1", - "cw2 0.15.1", - "cw721", - "schemars", - "serde", - "thiserror", -] - [[package]] name = "der" version = "0.6.1" @@ -1944,37 +1810,6 @@ dependencies = [ "pin-utils", ] -[[package]] -name = "generator-controller" -version = "1.3.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" -dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", - "itertools 0.10.5", - "thiserror", -] - -[[package]] -name = "generator-proxy-to-vkr" -version = "0.0.0" -source = "git+https://github.com/astroport-fi/astro-generator-proxy-contracts?branch=main#e573a8f8542b99015cac910f024a5f20fd793f3c" -dependencies = [ - "ap-valkyrie", - "astroport 3.8.0", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", - "thiserror", - "valkyrie", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -4133,86 +3968,12 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -[[package]] -name = "valkyrie" -version = "1.0.8-beta.1" -source = "git+https://github.com/astroport-fi/valkyrieprotocol?rev=b5fcb666f17d7e291f40365756e50fc0d7b9bf54#b5fcb666f17d7e291f40365756e50fc0d7b9bf54" -dependencies = [ - "bigint", - "cosmwasm-std", - "cosmwasm-storage", - "cw-storage-plus 0.11.1", - "cw20 0.11.1", - "schemars", - "serde", - "thiserror", -] - -[[package]] -name = "valkyrie-lp-staking" -version = "1.0.8-beta.1" -source = "git+https://github.com/astroport-fi/valkyrieprotocol?rev=b5fcb666f17d7e291f40365756e50fc0d7b9bf54#b5fcb666f17d7e291f40365756e50fc0d7b9bf54" -dependencies = [ - "cosmwasm-std", - "cw-storage-plus 0.11.1", - "cw20 0.11.1", - "schemars", - "serde", - "valkyrie", -] - -[[package]] -name = "valkyrie-vp" -version = "1.0.8-beta.1" -source = "git+https://github.com/astroport-fi/valkyrieprotocol?rev=b5fcb666f17d7e291f40365756e50fc0d7b9bf54#b5fcb666f17d7e291f40365756e50fc0d7b9bf54" -dependencies = [ - "cosmwasm-std", - "cw-storage-plus 0.11.1", - "cw2 0.11.1", - "cw20 0.11.1", - "cw20-base 0.11.1", - "schemars", - "serde", - "thiserror", -] - [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "voting-escrow" -version = "1.3.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" -dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", - "cw20-base 0.15.1", - "thiserror", -] - -[[package]] -name = "voting-escrow-delegation" -version = "1.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" -dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw-utils 0.15.1", - "cw2 0.15.1", - "cw721", - "cw721-base", - "thiserror", -] - [[package]] name = "wait-timeout" version = "0.2.0" diff --git a/contracts/tokenomics/generator/Cargo.toml b/contracts/tokenomics/generator/Cargo.toml index 0abfb4057..defd0d878 100644 --- a/contracts/tokenomics/generator/Cargo.toml +++ b/contracts/tokenomics/generator/Cargo.toml @@ -31,24 +31,3 @@ cw20 = "0.15" astroport = { path = "../../../packages/astroport", version = "3" } cosmwasm-schema = "1.1" cw-utils = "1.0.1" - -[dev-dependencies] -generator-controller = { git = "https://github.com/astroport-fi/hidden_astroport_governance", branch = "main" } -astroport-mocks = { path = "../../../packages/astroport_mocks" } -astroport-token = { path = "../../token" } -astroport-vesting = { path = "../vesting" } -astroport-staking = { path = "../staking" } -astroport-factory = { path = "../../factory" } -astroport-pair = { path = "../../pair" } -astroport-pair-stable = { path = "../../pair_stable" } -astroport-whitelist = { path = "../../whitelist" } -anyhow = "1" -voting-escrow = { git = "https://github.com/astroport-fi/hidden_astroport_governance", branch = "main" } -voting-escrow-delegation = { git = "https://github.com/astroport-fi/hidden_astroport_governance", branch = "main" } -astroport-nft = { git = "https://github.com/astroport-fi/hidden_astroport_governance", branch = "main" } -cw721-base = { version = "0.15", features = ["library"] } -generator-proxy-to-vkr = { git = "https://github.com/astroport-fi/astro-generator-proxy-contracts", branch = "main" } -valkyrie = { git = "https://github.com/astroport-fi/valkyrieprotocol", rev = "b5fcb666f17d7e291f40365756e50fc0d7b9bf54" } -valkyrie-lp-staking = { git = "https://github.com/astroport-fi/valkyrieprotocol", rev = "b5fcb666f17d7e291f40365756e50fc0d7b9bf54" } -valkyrie-vp = { git = "https://github.com/astroport-fi/valkyrieprotocol", rev = "b5fcb666f17d7e291f40365756e50fc0d7b9bf54" } -astroport-native-coin-registry = { path = "../../periphery/native_coin_registry" } diff --git a/contracts/tokenomics/generator/README.md b/contracts/tokenomics/generator/README.md index b37e834b1..af76b8b24 100644 --- a/contracts/tokenomics/generator/README.md +++ b/contracts/tokenomics/generator/README.md @@ -1,3 +1,5 @@ +# !!! NOTE: Contract has been deprecated and replaced with [Astroport Incentives](../incentives/) !!! + # Astroport Generator The Generator contract allocates token rewards (ASTRO) for various LP tokens and distributes them pro-rata to LP stakers. The Generator supports proxy staking via 3rd party contracts that offer a second reward besides ASTRO token emissions. diff --git a/contracts/tokenomics/generator/neutron_bug_fix_log.md b/contracts/tokenomics/generator/neutron_bug_fix_log.md deleted file mode 100644 index cf708d542..000000000 --- a/contracts/tokenomics/generator/neutron_bug_fix_log.md +++ /dev/null @@ -1,247 +0,0 @@ -* Given: - - * chain_id: neutron-1 - - * the proposal's id that set up pools: 61 (https://app.astroport.fi/governance/proposal/61) - - * the pools receiving ASTRO and their alloc points: - - neutron1vw93hy8tm3xekpz9286428gesmmc8dqxmw8cujsh3fcu3rt0hvdqvlyrrl, 17739 - neutron1sx99fxy4lqx0nv3ys86tkdrch82qygxyec5c8dxsk9raz4at5zpq48m66c, 38986 - neutron1kmuv6zmpr2nd3fnqefcffgfmhm74c8vhyerklaphrawyp3398gws74huny, 1754 - neutron1jkcf80nd4pfc2krce3xk9m9y994pllq58avx89sfzqlalej4frus27ms3a, 41521 - - * the total alloc point: 100000 - - * the ASTRO amount distributed per block, set by the proposal: 1984587 - - * the satellite address: neutron1ffus553eet978k024lmssw0czsxwr97mggyv85lpcsdkft8v9ufsz3sa07 - - * the generator address: neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny - - * the vesting address: neutron178d2p84ldlzcl53clc25uy6mx3trazxdy08akhjp3qf5chlmccgq6hv2pl - - -* Querying the block height when the proposal was executed: - ``` - neutrond q wasm cs smart neutron1ffus553eet978k024lmssw0czsxwr97mggyv85lpcsdkft8v9ufsz3sa07 '{"proposal_state": {"id": 61}}' -o json | jq '.data' - - 1437191 - ``` - -* Checking the pools that had deposits and their last reward blocks before the proposal's execution: - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"pool_info": {"lp_token": "neutron1vw93hy8tm3xekpz9286428gesmmc8dqxmw8cujsh3fcu3rt0hvdqvlyrrl"}}' --height 1437190 -o json | jq - - - pool not found - ``` - - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"pool_info": {"lp_token": "neutron1sx99fxy4lqx0nv3ys86tkdrch82qygxyec5c8dxsk9raz4at5zpq48m66c"}}' --height 1437190 -o json | jq '.data.last_reward_block' - - 488583 - ``` - - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"pool_info": {"lp_token": "neutron1kmuv6zmpr2nd3fnqefcffgfmhm74c8vhyerklaphrawyp3398gws74huny"}}' --height 1437190 -o json | jq '.data.last_reward_block' - - pool not found - ``` - - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"pool_info": {"lp_token": "neutron1jkcf80nd4pfc2krce3xk9m9y994pllq58avx89sfzqlalej4frus27ms3a"}}' --height 1437190 -o json | jq '.data.last_reward_block' - - 488583 - ``` - -* Finding the users who had deposites on the pools before the proposal's execution: - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"pool_stakers": {"lp_token": "neutron1sx99fxy4lqx0nv3ys86tkdrch82qygxyec5c8dxsk9raz4at5zpq48m66c"}}' --height 1437190 -o json | jq '.data' - - [ - { - "account": "neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj", - "amount": "936146544918" - } - ] - ``` - - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"pool_stakers": {"lp_token": "neutron1jkcf80nd4pfc2krce3xk9m9y994pllq58avx89sfzqlalej4frus27ms3a"}}' --height 1437190 -o json | jq '.data' - [ - { - "account": "neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj", - "amount": "1501110150153" - } - ] - ``` - -* Checking the user's indexes now (block height 1568424 time 2023-07-18T14:59:48 at the moment of writing this): - ``` - key: echo "0009$(ascii_to_hex user_info)0042$(ascii_to_hex neutron1sx99fxy4lqx0nv3ys86tkdrch82qygxyec5c8dxsk9raz4at5zpq48m66c)$(ascii_to_hex neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj)" - - neutrond q wasm cs raw $generator 0009757365725F696E666F00426E657574726F6E3173783939667879346C7178306E763379733836746B647263683832717967787965633563386478736B3972617A346174357A707134386D3636636E657574726F6E31727968786535667A637A656C63666D72686D63773978326A737179363737667735396673637472303973726B32346C74393365737A776C76796A --height 1568424 -o json | jq -r '.data' | base64 --decode | jq -r '.reward_user_index' - - 0 - - key: echo "0009$(ascii_to_hex user_info)0042$(ascii_to_hex neutron1jkcf80nd4pfc2krce3xk9m9y994pllq58avx89sfzqlalej4frus27ms3a)$(ascii_to_hex neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj)" - - neutrond q wasm cs raw $generator 0009757365725F696E666F00426E657574726F6E316A6B636638306E6434706663326B72636533786B396D3979393934706C6C713538617678383973667A716C616C656A346672757332376D7333616E657574726F6E31727968786535667A637A656C63666D72686D63773978326A737179363737667735396673637472303973726B32346C74393365737A776C76796A --height 1568424 -o json | jq -r '.data' | base64 --decode | jq -r '.reward_user_index' - - 0 - ``` - - So, no rewards were withdrawn by the user at the moment - -* Checking whether the user will be able to withdraw rewards before the bug fix: - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"pending_token": {"lp_token": "neutron1sx99fxy4lqx0nv3ys86tkdrch82qygxyec5c8dxsk9raz4at5zpq48m66c", "user": "neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj"}}' --height 1568424 - - 835429168530 - ``` - - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"pending_token": {"lp_token": "neutron1jkcf80nd4pfc2krce3xk9m9y994pllq58avx89sfzqlalej4frus27ms3a", "user": "neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj"}}' --height 1568424 - - 889723596667 - ``` - - available rewards on the vesting contract for the generator: - ``` - neutrond q wasm cs raw neutron178d2p84ldlzcl53clc25uy6mx3trazxdy08akhjp3qf5chlmccgq6hv2pl 000C76657374696E675F696E666F6E657574726F6E316A7A3538796A6179387571387A6B667739356E677976336D32776673327A6A65663976647A373564397061343666647478633573787461666E79 -o json --height 1568424 | jq -r '.data' | base64 --decode | jq - { - "schedules": [ - { - "start_point": { - "time": 1689217200, - "amount": "0" - }, - "end_point": { - "time": 1704942000, - "amount": "10402412000000" - } - } - ], - "released_amount": "35347828690" - } - - (current_time - start_time) / (end_time - start_time) * end_amount - released_amount - (1689692388 - 1689217200) / (1704942000 - 1689217200) * 10402412000000 - 35347828690 = - - 279002837357 - ``` - - The minimal unlocked amounts that would allow to withdraw rewards are: - ``` - 835429168530 - 279002837357 = 556426331173 - ``` - or - ``` - 889723596667 - 279002837357 = 610720759310 - ``` - - unlocked amount per second by the vesting: - ``` - 10402412000000 / (1704942000 - 1689217200) = 661530 - ``` - - So, roughly calculating, the time that we have to fix the bug is the least of the following: - - ``` - insufficient_ASTRO / (vested amount per second * (total_alloc_point - alloc_point) / total_alloc_point) / minutes / hours / days - - 556426331173 / (661529 * (100000 - 38986) / 100000) / 60 / 60 / 24 = 15 days - - 610720759310 / (661529 * (100000 - 41521) / 100000) / 60 / 60 / 24 = 18 days - ``` - but the more other generator depositors claim their rewards the more time we have. The best case is that no misscomputed reward will be withdrawn until we fix the bug. - -* Querying virtual amounts that the user had on the moment of the proposal execution: - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"user_virtual_amount": {"lp_token": "neutron1sx99fxy4lqx0nv3ys86tkdrch82qygxyec5c8dxsk9raz4at5zpq48m66c", "user": "neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj"}}' --height 1437191 - - 374458617967 - - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"user_virtual_amount": {"lp_token": "neutron1jkcf80nd4pfc2krce3xk9m9y994pllq58avx89sfzqlalej4frus27ms3a", "user": "neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj"}}' --height 1437191 - - 600444060061 - ``` - -* The solution to fix misscomputed rewards is to increase the user reward indexes on contract migration as it follows below: - * query the current user reward indexes for those pools - * increase them by the following calculated indexes: - ``` - (setup_pools_block - the wrong last reward block) * tokens_per_block * alloc_point / total_alloc_point / user's virtual amount - - (1437191 - 488583) * 1984587 * 38986 / 100000 / 374458617967 = 1.96002573416386269210 - - (1437191 - 488583) * 1984587 * 41521 / 100000 / 600444060061 = 1.30182370931349860257 - ``` - -* Checking rewards if the fix would apply now: - * query last reward block and calculate the current pool's global index: - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"pool_info": {"lp_token": "neutron1sx99fxy4lqx0nv3ys86tkdrch82qygxyec5c8dxsk9raz4at5zpq48m66c"}}' --height 1568424 -o json | jq -r '.data.global_reward_index, .data.last_reward_block' - - 2.225500979661236903 - - 1565741 - - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"total_virtual_supply": {"generator": "neutron1sx99fxy4lqx0nv3ys86tkdrch82qygxyec5c8dxsk9raz4at5zpq48m66c"}}' --height 1568424 -o json | jq -r '.data' - - 375311882818 - - last_global_index + (current_block - last_reward_block) * astro_per_block * alloc_point / total_alloc_point / virtual_supply - - 2.225500979661236903 + (1568424 - 1565741) * 1984587 * 38986 / 100000 / 375311882818 = 2.23103202448996594742 - ``` - - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"pool_info": {"lp_token": "neutron1jkcf80nd4pfc2krce3xk9m9y994pllq58avx89sfzqlalej4frus27ms3a"}}' --height 1568424 -o json | jq -r '.data.global_reward_index, .data.last_reward_block' - - 1.481537641504742878 - - 1568250 - - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"total_virtual_supply": {"generator": "neutron1jkcf80nd4pfc2krce3xk9m9y994pllq58avx89sfzqlalej4frus27ms3a"}}' --height 1568424 -o json | jq -r '.data' - - 601532655696 - - last_global_index + (current_block - last_reward_block) * astro_per_block * alloc_point / total_alloc_point / virtual_supply - - 1.481537641504742878 + (1568424 - 1568250) * 1984587 * 41521 / 100000 / 601532655696 = 1.48177599854607936786 - ``` - - * query virtual amounts that the user has now: - ``` - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"user_virtual_amount": {"lp_token": "neutron1sx99fxy4lqx0nv3ys86tkdrch82qygxyec5c8dxsk9raz4at5zpq48m66c", "user": "neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj"}}' --height 1568424 - - 374458617967 - - neutrond q wasm cs smart neutron1jz58yjay8uq8zkfw95ngyv3m2wfs2zjef9vdz75d9pa46fdtxc5sxtafny '{"user_virtual_amount": {"lp_token": "neutron1jkcf80nd4pfc2krce3xk9m9y994pllq58avx89sfzqlalej4frus27ms3a", "user": "neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj"}}' --height 1568424 - - 600444060061 - ``` - - * calculate reward by indexes: - - (global_reward_index - user_reward_index) * deposit - - ``` - (2.23103202448996594742 - 1.96002573416386269210) * 374458617967 = 101480640935 - - (1.48177599854607936786 - 1.30182370931349860257) * 600444060061 = 108051283164 - ``` - - * calculate reward by blocks: - - (current_block - proposal_block) * astro_per_block * alloc_point / total_alloc_point - - ``` - (1568424 - 1437191) * 1984587 * 38986 / 100000 = 101536427187 - - (1568424 - 1437191) * 1984587 * 41521 / 100000 = 108138664989 - ``` - - * rewards by indexes is a bit less, because of rounding issues that occurs by not using those exact types that used in the contract diff --git a/contracts/tokenomics/generator/tests/integration.rs b/contracts/tokenomics/generator/tests/integration.rs deleted file mode 100644 index 7eb10c3ff..000000000 --- a/contracts/tokenomics/generator/tests/integration.rs +++ /dev/null @@ -1,4554 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -use std::{cell::RefCell, rc::Rc}; - -use astroport::asset::{ - native_asset_info, token_asset_info, Asset, AssetInfo, AssetInfoExt, PairInfo, -}; -use astroport::generator::{ExecuteMsg, QueryMsg, RewardInfoResponse, StakerResponse}; -use astroport_governance::utils::WEEK; - -use astroport::{ - factory::{ - ConfigResponse as FactoryConfigResponse, ExecuteMsg as FactoryExecuteMsg, - InstantiateMsg as FactoryInstantiateMsg, PairConfig, PairType, QueryMsg as FactoryQueryMsg, - }, - generator::{ - Config, Cw20HookMsg as GeneratorHookMsg, ExecuteMsg as GeneratorExecuteMsg, - InstantiateMsg as GeneratorInstantiateMsg, PendingTokenResponse, PoolInfoResponse, - QueryMsg as GeneratorQueryMsg, - }, - generator_proxy::{ExecuteMsg as ProxyExecuteMsg, InstantiateMsg as ProxyInstantiateMsg}, - token::InstantiateMsg as TokenInstantiateMsg, - vesting::{ - Cw20HookMsg as VestingHookMsg, InstantiateMsg as VestingInstantiateMsg, VestingAccount, - VestingSchedule, VestingSchedulePoint, - }, -}; - -use astroport::generator_proxy::ConfigResponse; -use astroport::pair::StablePoolParams; -use astroport_generator::error::ContractError; -use astroport_mocks::cw_multi_test::{next_block, App, ContractWrapper, Executor}; -use astroport_mocks::{astroport_address, MockGeneratorBuilder, MockToken, MockTokenBuilder}; -use cosmwasm_std::{from_json, to_json_binary, Addr, Binary, StdResult, Uint128, Uint64}; -use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; - -use crate::test_utils::controller_helper::ControllerHelper; -use crate::test_utils::{mock_app as mock_app_helper, mock_app, AppExtension}; - -#[cfg(test)] -mod test_utils; - -const OWNER: &str = "owner"; -const USER1: &str = "user1"; -const USER2: &str = "user2"; -const USER3: &str = "user3"; -const USER4: &str = "user4"; -const USER5: &str = "user5"; -const USER6: &str = "user6"; -const USER7: &str = "user7"; -const USER8: &str = "user8"; -const USER9: &str = "user9"; - -struct PoolWithProxy { - pool: (String, Uint128), - proxy: Option, -} - -#[test] -fn test_boost_checkpoints_with_delegation() { - let mut app = mock_app_helper(); - let owner = Addr::unchecked("owner"); - let helper_controller = ControllerHelper::init(&mut app, &owner); - - let user1 = Addr::unchecked(USER1); - let user2 = Addr::unchecked(USER2); - - let cny_eur_token_code_id = store_token_code(&mut app); - - let cny_token = instantiate_token(&mut app, cny_eur_token_code_id, "CNY", None); - let eur_token = instantiate_token(&mut app, cny_eur_token_code_id, "EUR", None); - - let (pair_cny_eur, lp_cny_eur) = create_pair( - &mut app, - &helper_controller.factory, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: cny_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - - register_lp_tokens_in_generator( - &mut app, - &helper_controller.generator, - vec![PoolWithProxy { - pool: (lp_cny_eur.to_string(), Uint128::from(100u32)), - proxy: None, - }], - ); - - // Mint tokens, so user can deposit - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user1, 10); - - // Create short lock user1 - helper_controller - .escrow_helper - .mint_xastro(&mut app, USER1, 200); - - helper_controller - .escrow_helper - .create_lock(&mut app, USER1, WEEK * 10, 100f32) - .unwrap(); - - deposit_lp_tokens_to_generator( - &mut app, - &helper_controller.generator, - USER1, - &[(&lp_cny_eur, 10)], - ); - - check_token_balance(&mut app, &lp_cny_eur, &helper_controller.generator, 10); - - // check if virtual amount equal to 10 - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user1, - 10, - ); - - // Mint tokens, so user2 can deposit - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user2, 10); - - // Create short lock user2 - helper_controller - .escrow_helper - .mint_xastro(&mut app, USER2, 100); - - helper_controller - .escrow_helper - .create_lock(&mut app, USER2, WEEK * 10, 100f32) - .unwrap(); - - deposit_lp_tokens_to_generator( - &mut app, - &helper_controller.generator, - USER2, - &[(&lp_cny_eur, 10)], - ); - - check_token_balance(&mut app, &lp_cny_eur, &helper_controller.generator, 20); - - // check if virtual amount equal to 10 - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user2, - 10, - ); - - let err = app - .execute_contract( - Addr::unchecked(USER1), - helper_controller.generator.clone(), - &ExecuteMsg::CheckpointUserBoost { - generators: vec![lp_cny_eur.to_string(); 26], - user: Some(USER1.to_string()), - }, - &[], - ) - .unwrap_err(); - assert_eq!( - "Maximum generator limit exceeded!", - err.root_cause().to_string() - ); - - app.execute_contract( - Addr::unchecked(USER1), - helper_controller.generator.clone(), - &ExecuteMsg::CheckpointUserBoost { - generators: vec![lp_cny_eur.to_string()], - user: Some(USER1.to_string()), - }, - &[], - ) - .unwrap(); - - // check user1's ASTRO balance - check_token_balance( - &mut app, - &helper_controller.escrow_helper.astro_token, - &user1, - 0, - ); - - // check user2's ASTRO balance - check_token_balance( - &mut app, - &helper_controller.escrow_helper.astro_token, - &user2, - 0, - ); - - // check user1's adjusted balance - let user1_ad_balance_before = helper_controller - .delegation_helper - .adjusted_balance(&mut app, user1.as_str(), None) - .unwrap(); - - // check user2's adjusted balance - let user2_ad_balance_before = helper_controller - .delegation_helper - .adjusted_balance(&mut app, user2.as_str(), None) - .unwrap(); - - // create delegation for user2 - helper_controller - .delegation_helper - .create_delegation( - &mut app, - user1.as_str(), - 5000, - WEEK * 2, - "token_1".to_string(), - user2.to_string(), - ) - .unwrap(); - - // check user1's adjusted balance - let user1_ad_balance_after = helper_controller - .delegation_helper - .adjusted_balance(&mut app, user1.as_str(), None) - .unwrap(); - - // check user1's delegated balance - let user1_delegated_balance = helper_controller - .delegation_helper - .delegated_balance(&mut app, user1.as_str(), None) - .unwrap(); - assert_eq!( - user1_ad_balance_after, - user1_ad_balance_before - user1_delegated_balance - ); - - // check user2's adjusted balance - let user2_ad_balance_after = helper_controller - .delegation_helper - .adjusted_balance(&mut app, user2.as_str(), None) - .unwrap(); - assert_eq!( - user2_ad_balance_after, - user2_ad_balance_before + user1_delegated_balance - ); - - app.next_block(WEEK); - - app.execute_contract( - Addr::unchecked(USER1), - helper_controller.generator.clone(), - &ExecuteMsg::Withdraw { - lp_token: lp_cny_eur.to_string(), - amount: Uint128::new(5), - }, - &[], - ) - .unwrap(); - - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user1, - 5, - ); - - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user2, - 10, - ); - - // recalculate virtual amount for user2 - app.execute_contract( - Addr::unchecked(USER2), - helper_controller.generator.clone(), - &ExecuteMsg::CheckpointUserBoost { - generators: vec![lp_cny_eur.to_string()], - user: Some(USER2.to_string()), - }, - &[], - ) - .unwrap(); - - // check virtual amount for user2 - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user2, - 9, - ); - - // check user1's ASTRO balance after withdraw - check_token_balance( - &mut app, - &helper_controller.escrow_helper.astro_token, - &user1, - 5_000_000, - ); - - check_pending_rewards( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - USER1, - (0, None), - ); - - check_pending_rewards( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - USER2, - (0, None), - ); - - app.next_block(WEEK); - - // try to extend delegation for user2 - let err = helper_controller - .delegation_helper - .extend_delegation( - &mut app, - user1.as_str(), - 5000, - WEEK * 20, - "token_1".to_string(), - ) - .unwrap_err(); - assert_eq!( - "The delegation period must be at least a week and not more than a user lock period.", - err.root_cause().to_string() - ); - - // check user1's adjusted balance - let user1_balance_before_extend = helper_controller - .delegation_helper - .adjusted_balance(&mut app, user1.as_str(), None) - .unwrap(); - - // check user2's adjusted balance - let user2_balance_before_extend = helper_controller - .delegation_helper - .adjusted_balance(&mut app, user2.as_str(), None) - .unwrap(); - - // extend delegation for user2 - helper_controller - .delegation_helper - .extend_delegation( - &mut app, - user1.as_str(), - 5000, - WEEK * 5, - "token_1".to_string(), - ) - .unwrap(); - - // check user1's adjusted balance - let user1_balance_after_extend = helper_controller - .delegation_helper - .adjusted_balance(&mut app, user1.as_str(), None) - .unwrap(); - - // check user1's delegated balance - let user1_delegated_balance = helper_controller - .delegation_helper - .delegated_balance(&mut app, user1.as_str(), None) - .unwrap(); - assert_eq!( - user1_balance_after_extend, - user1_balance_before_extend - user1_delegated_balance - ); - - // check user2's adjusted balance - let user2_balance_after_extend = helper_controller - .delegation_helper - .adjusted_balance(&mut app, user2.as_str(), None) - .unwrap(); - - assert_eq!( - user2_balance_after_extend, - user2_balance_before_extend + user1_delegated_balance - ); - - app.execute_contract( - Addr::unchecked(USER2), - helper_controller.generator.clone(), - &ExecuteMsg::Withdraw { - lp_token: lp_cny_eur.to_string(), - amount: Uint128::new(5), - }, - &[], - ) - .unwrap(); - - check_pending_rewards( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - USER2, - (0, None), - ); - - check_pending_rewards( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - USER1, - (3_571_428, None), - ); - - check_token_balance( - &mut app, - &helper_controller.escrow_helper.astro_token, - &user1, - 5_000_000, - ); - - // check user2's ASTRO balance after withdraw and checkpoint - check_token_balance( - &mut app, - &helper_controller.escrow_helper.astro_token, - &user2, - 11_428_571, - ); - - // check virtual amount for user2 after withdraw - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user2, - 5, - ); - - // check virtual amount for user1 - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user1, - 5, - ); -} - -#[test] -fn test_boost_checkpoints() { - let mut app = mock_app_helper(); - let owner = Addr::unchecked("owner"); - let helper_controller = ControllerHelper::init(&mut app, &owner); - - let user1 = Addr::unchecked(USER1); - let user2 = Addr::unchecked(USER2); - - let cny_eur_token_code_id = store_token_code(&mut app); - - let cny_token = instantiate_token(&mut app, cny_eur_token_code_id, "CNY", None); - let eur_token = instantiate_token(&mut app, cny_eur_token_code_id, "EUR", None); - - let (pair_cny_eur, lp_cny_eur) = create_pair( - &mut app, - &helper_controller.factory, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: cny_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - - register_lp_tokens_in_generator( - &mut app, - &helper_controller.generator, - vec![PoolWithProxy { - pool: (lp_cny_eur.to_string(), Uint128::from(100u32)), - proxy: None, - }], - ); - - // Mint tokens, so user can deposit - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user1, 10); - - // Create short lock user1 - helper_controller - .escrow_helper - .mint_xastro(&mut app, USER1, 200); - - helper_controller - .escrow_helper - .create_lock(&mut app, USER1, WEEK * 3, 100f32) - .unwrap(); - - deposit_lp_tokens_to_generator( - &mut app, - &helper_controller.generator, - USER1, - &[(&lp_cny_eur, 10)], - ); - - check_token_balance(&mut app, &lp_cny_eur, &helper_controller.generator, 10); - - // check if virtual amount equal to 10 - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user1, - 10, - ); - - // Mint tokens, so user2 can deposit - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user2, 10); - - // Create short lock user2 - helper_controller - .escrow_helper - .mint_xastro(&mut app, USER2, 100); - - helper_controller - .escrow_helper - .create_lock(&mut app, USER2, WEEK * 3, 100f32) - .unwrap(); - - deposit_lp_tokens_to_generator( - &mut app, - &helper_controller.generator, - USER2, - &[(&lp_cny_eur, 10)], - ); - - check_token_balance(&mut app, &lp_cny_eur, &helper_controller.generator, 20); - - // check if virtual amount equal to 10 - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user2, - 10, - ); - - let err = app - .execute_contract( - Addr::unchecked(USER1), - helper_controller.generator.clone(), - &ExecuteMsg::CheckpointUserBoost { - generators: vec![lp_cny_eur.to_string(); 26], - user: Some(USER1.to_string()), - }, - &[], - ) - .unwrap_err(); - assert_eq!( - "Maximum generator limit exceeded!", - err.root_cause().to_string() - ); - - app.execute_contract( - Addr::unchecked(USER1), - helper_controller.generator.clone(), - &ExecuteMsg::CheckpointUserBoost { - generators: vec![lp_cny_eur.to_string()], - user: Some(USER1.to_string()), - }, - &[], - ) - .unwrap(); - - // check user1's ASTRO balance - check_token_balance( - &mut app, - &helper_controller.escrow_helper.astro_token, - &user1, - 0, - ); - - // check user2's ASTRO balance - check_token_balance( - &mut app, - &helper_controller.escrow_helper.astro_token, - &user2, - 0, - ); - - app.next_block(WEEK); - - app.execute_contract( - Addr::unchecked(USER1), - helper_controller.generator.clone(), - &ExecuteMsg::Withdraw { - lp_token: lp_cny_eur.to_string(), - amount: Uint128::new(5), - }, - &[], - ) - .unwrap(); - - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user1, - 5, - ); - - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user2, - 10, - ); - - // recalculate virtual amount for user2 - app.execute_contract( - Addr::unchecked(USER2), - helper_controller.generator.clone(), - &ExecuteMsg::CheckpointUserBoost { - generators: vec![lp_cny_eur.to_string()], - user: Some(USER2.to_string()), - }, - &[], - ) - .unwrap(); - - // check virtual amount for user2 - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user2, - 8, - ); - - // check user1's ASTRO balance after withdraw - check_token_balance( - &mut app, - &helper_controller.escrow_helper.astro_token, - &user1, - 5_000_000, - ); - - check_pending_rewards( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - USER1, - (0, None), - ); - - check_pending_rewards( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - USER2, - (0, None), - ); - - app.next_block(WEEK); - - app.execute_contract( - Addr::unchecked(USER2), - helper_controller.generator.clone(), - &ExecuteMsg::Withdraw { - lp_token: lp_cny_eur.to_string(), - amount: Uint128::new(5), - }, - &[], - ) - .unwrap(); - - check_pending_rewards( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - USER2, - (0, None), - ); - - check_pending_rewards( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - USER1, - (3_846_153, None), - ); - - check_token_balance( - &mut app, - &helper_controller.escrow_helper.astro_token, - &user1, - 5_000_000, - ); - - // check user2's ASTRO balance after withdraw and checkpoint - check_token_balance( - &mut app, - &helper_controller.escrow_helper.astro_token, - &user2, - 11_153_846, - ); - - // check virtual amount for user2 after withdraw - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user2, - 5, - ); - - // check virtual amount for user1 - check_emission_balance( - &mut app, - &helper_controller.generator, - &lp_cny_eur, - &user1, - 5, - ); -} - -#[test] -fn proper_deposit_and_withdraw() { - let mut app = mock_app(); - - let user1 = Addr::unchecked(USER1); - - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let cny_eur_token_code_id = store_token_code(&mut app); - - let cny_token = instantiate_token(&mut app, cny_eur_token_code_id, "CNY", None); - let eur_token = instantiate_token(&mut app, cny_eur_token_code_id, "EUR", None); - let usd_token = instantiate_token(&mut app, cny_eur_token_code_id, "USD", None); - - let (pair_cny_eur, lp_cny_eur) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: cny_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - - let (pair_eur_usd, lp_eur_usd) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - AssetInfo::Token { - contract_addr: usd_token.clone(), - }, - ], - ); - - let generator_instance = - instantiate_generator(&mut app, &factory_instance, &astro_token_instance, None); - - register_lp_tokens_in_generator( - &mut app, - &generator_instance, - vec![ - PoolWithProxy { - pool: (lp_cny_eur.to_string(), Uint128::from(50u32)), - proxy: None, - }, - PoolWithProxy { - pool: (lp_eur_usd.to_string(), Uint128::from(50u32)), - proxy: None, - }, - ], - ); - - // Mint tokens, so user can deposit - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user1, 10); - mint_tokens(&mut app, pair_eur_usd.clone(), &lp_eur_usd, &user1, 10); - - deposit_lp_tokens_to_generator( - &mut app, - &generator_instance, - USER1, - &[(&lp_cny_eur, 10), (&lp_eur_usd, 10)], - ); - - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 10); - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 10); - - check_pending_rewards(&mut app, &generator_instance, &lp_cny_eur, USER1, (0, None)); - check_pending_rewards(&mut app, &generator_instance, &lp_eur_usd, USER1, (0, None)); - - app.update_block(|bi| next_block(bi)); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_cny_eur, - USER1, - (5000000, None), - ); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER1, - (5000000, None), - ); - - app.update_block(|bi| next_block(bi)); - - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_cny_eur.to_string(), - amount: Uint128::new(10), - }; - - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_eur_usd.to_string(), - amount: Uint128::zero(), - }; - - let err = app - .execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!(ContractError::ZeroWithdraw {}, err.downcast().unwrap()); - - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_eur_usd.to_string(), - amount: Uint128::new(10), - }; - - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 0); - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 0); - - check_pending_rewards(&mut app, &generator_instance, &lp_cny_eur, USER1, (0, None)); - - check_pending_rewards(&mut app, &generator_instance, &lp_eur_usd, USER1, (0, None)); - - app.update_block(|bi| next_block(bi)); - - check_pending_rewards(&mut app, &generator_instance, &lp_cny_eur, USER1, (0, None)); - - check_pending_rewards(&mut app, &generator_instance, &lp_eur_usd, USER1, (0, None)); -} - -#[test] -fn set_tokens_per_block() { - let mut app = mock_app(); - - let token_code_id = store_token_code(&mut app); - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let generator_instance = instantiate_generator( - &mut app, - &factory_instance, - &astro_token_instance, - Some(OWNER.to_string()), - ); - - let msg = QueryMsg::Config {}; - let res: Config = app - .wrap() - .query_wasm_smart(&generator_instance, &msg) - .unwrap(); - - assert_eq!(res.tokens_per_block, Uint128::new(10_000000)); - - // Set new amount of tokens distributed per block - let tokens_per_block = Uint128::new(100); - - let msg = GeneratorExecuteMsg::SetTokensPerBlock { - amount: tokens_per_block, - }; - app.execute_contract( - Addr::unchecked(OWNER), - generator_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - let msg = GeneratorQueryMsg::Config {}; - let res: Config = app - .wrap() - .query_wasm_smart(&generator_instance, &msg) - .unwrap(); - assert_eq!(res.tokens_per_block, tokens_per_block); -} - -#[test] -fn update_config() { - let mut app = mock_app(); - - let token_code_id = store_token_code(&mut app); - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let generator_instance = instantiate_generator( - &mut app, - &factory_instance, - &astro_token_instance, - Some(OWNER.to_string()), - ); - - let msg = QueryMsg::Config {}; - let res: Config = app - .wrap() - .query_wasm_smart(&generator_instance, &msg) - .unwrap(); - - assert_eq!(res.owner, OWNER); - assert_eq!(res.generator_controller, Some(Addr::unchecked(OWNER))); - assert_eq!(res.astro_token.to_string(), "contract0"); - assert_eq!(res.factory.to_string(), "contract2"); - assert_eq!(res.vesting_contract.to_string(), "contract3"); - - let new_vesting = Addr::unchecked("new_vesting"); - - let msg = ExecuteMsg::UpdateConfig { - vesting_contract: Some(new_vesting.to_string()), - generator_controller: None, - guardian: None, - voting_escrow_delegation: None, - voting_escrow: None, - checkpoint_generator_limit: None, - }; - - // Assert cannot update with improper owner - let e = app - .execute_contract( - Addr::unchecked("not_owner"), - generator_instance.clone(), - &msg, - &[], - ) - .unwrap_err(); - - assert_eq!(e.root_cause().to_string(), "Unauthorized"); - - app.execute_contract( - Addr::unchecked(OWNER), - generator_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - let msg = QueryMsg::Config {}; - let res: Config = app - .wrap() - .query_wasm_smart(&generator_instance, &msg) - .unwrap(); - - assert_eq!(res.vesting_contract, new_vesting); -} - -#[test] -fn update_owner() { - let mut app = mock_app(); - - let token_code_id = store_token_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - let factory_code_id = store_factory_code(&mut app); - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let generator_instance = instantiate_generator( - &mut app, - &factory_instance, - &astro_token_instance, - Some(OWNER.to_string()), - ); - - let new_owner = String::from("new_owner"); - - // New owner - let msg = ExecuteMsg::ProposeNewOwner { - owner: new_owner.clone(), - expires_in: 100, // seconds - }; - - // Unauthorized check - let err = app - .execute_contract( - Addr::unchecked("not_owner"), - generator_instance.clone(), - &msg, - &[], - ) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Generic error: Unauthorized"); - - // Claim before proposal - let err = app - .execute_contract( - Addr::unchecked(new_owner.clone()), - generator_instance.clone(), - &ExecuteMsg::ClaimOwnership {}, - &[], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Generic error: Ownership proposal not found" - ); - - // Propose new owner - app.execute_contract( - Addr::unchecked(OWNER), - generator_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - // Claim from invalid addr - let err = app - .execute_contract( - Addr::unchecked("invalid_addr"), - generator_instance.clone(), - &ExecuteMsg::ClaimOwnership {}, - &[], - ) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Generic error: Unauthorized"); - - // Claim ownership - app.execute_contract( - Addr::unchecked(new_owner.clone()), - generator_instance.clone(), - &ExecuteMsg::ClaimOwnership {}, - &[], - ) - .unwrap(); - - // Let's query the state - let msg = QueryMsg::Config {}; - let res: Config = app - .wrap() - .query_wasm_smart(&generator_instance, &msg) - .unwrap(); - - assert_eq!(res.owner.to_string(), new_owner) -} - -#[test] -fn disabling_pool() { - let mut app = mock_app(); - - let user1 = Addr::unchecked(USER1); - let owner = Addr::unchecked(OWNER); - - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let eur_usdt_token_code_id = store_token_code(&mut app); - let eur_token = instantiate_token(&mut app, eur_usdt_token_code_id, "EUR", None); - let usdt_token = instantiate_token(&mut app, eur_usdt_token_code_id, "USDT", None); - - let (pair_eur_usdt, lp_eur_usdt) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - AssetInfo::Token { - contract_addr: usdt_token.clone(), - }, - ], - ); - - let generator_instance = - instantiate_generator(&mut app, &factory_instance, &astro_token_instance, None); - - // Disable generator - let msg = FactoryExecuteMsg::UpdatePairConfig { - config: PairConfig { - code_id: pair_code_id, - pair_type: PairType::Xyk {}, - total_fee_bps: 100, - maker_fee_bps: 10, - is_disabled: false, - is_generator_disabled: true, - permissioned: false, - }, - }; - - app.execute_contract(owner.clone(), factory_instance.clone(), &msg, &[]) - .unwrap(); - - // Mint tokens, so user can deposit - mint_tokens(&mut app, pair_eur_usdt.clone(), &lp_eur_usdt, &user1, 10); - - let msg = Cw20ExecuteMsg::Send { - contract: generator_instance.to_string(), - msg: to_json_binary(&GeneratorHookMsg::Deposit {}).unwrap(), - amount: Uint128::new(10), - }; - - let resp = app - .execute_contract(user1.clone(), lp_eur_usdt.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!(resp.root_cause().to_string(), "Generator is disabled!"); - - // Enable generator - let msg = FactoryExecuteMsg::UpdatePairConfig { - config: PairConfig { - code_id: pair_code_id, - pair_type: PairType::Xyk {}, - total_fee_bps: 100, - maker_fee_bps: 10, - is_disabled: false, - is_generator_disabled: false, - permissioned: false, - }, - }; - - app.execute_contract(owner.clone(), factory_instance.clone(), &msg, &[]) - .unwrap(); - - // Register LP token - register_lp_tokens_in_generator( - &mut app, - &generator_instance, - vec![PoolWithProxy { - pool: (lp_eur_usdt.to_string(), Uint128::from(10u32)), - proxy: None, - }], - ); - - let msg = Cw20ExecuteMsg::Send { - contract: generator_instance.to_string(), - msg: to_json_binary(&GeneratorHookMsg::Deposit {}).unwrap(), - amount: Uint128::new(10), - }; - - app.execute_contract(user1.clone(), lp_eur_usdt.clone(), &msg, &[]) - .unwrap(); -} - -#[test] -fn generator_without_reward_proxies() { - let mut app = mock_app(); - - let owner = Addr::unchecked(OWNER); - let user1 = Addr::unchecked(USER1); - let user2 = Addr::unchecked(USER2); - - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let cny_eur_token_code_id = store_token_code(&mut app); - let eur_token = instantiate_token(&mut app, cny_eur_token_code_id, "EUR", None); - let usd_token = instantiate_token(&mut app, cny_eur_token_code_id, "USD", None); - let cny_token = instantiate_token(&mut app, cny_eur_token_code_id, "CNY", None); - - let (pair_cny_eur, lp_cny_eur) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: cny_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - - let (pair_eur_usd, lp_eur_usd) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - AssetInfo::Token { - contract_addr: usd_token.clone(), - }, - ], - ); - - let generator_instance = - instantiate_generator(&mut app, &factory_instance, &astro_token_instance, None); - - register_lp_tokens_in_generator( - &mut app, - &generator_instance, - vec![ - PoolWithProxy { - pool: (lp_cny_eur.to_string(), Uint128::from(50u32)), - proxy: None, - }, - PoolWithProxy { - pool: (lp_eur_usd.to_string(), Uint128::from(50u32)), - proxy: None, - }, - ], - ); - - // Mint tokens, so user can deposit - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user1, 9); - mint_tokens(&mut app, pair_eur_usd.clone(), &lp_eur_usd, &user1, 10); - - let msg = Cw20ExecuteMsg::Send { - contract: generator_instance.to_string(), - msg: to_json_binary(&GeneratorHookMsg::Deposit {}).unwrap(), - amount: Uint128::new(10), - }; - - assert_eq!( - app.execute_contract(user1.clone(), lp_cny_eur.clone(), &msg, &[]) - .unwrap_err() - .root_cause() - .to_string(), - "Cannot Sub with 9 and 10".to_string() - ); - - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user1, 1); - - deposit_lp_tokens_to_generator( - &mut app, - &generator_instance, - USER1, - &[(&lp_cny_eur, 10), (&lp_eur_usd, 10)], - ); - - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 10); - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 10); - - check_pending_rewards(&mut app, &generator_instance, &lp_cny_eur, USER1, (0, None)); - check_pending_rewards(&mut app, &generator_instance, &lp_eur_usd, USER1, (0, None)); - - // User can't withdraw if they didn't deposit - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_cny_eur.to_string(), - amount: Uint128::new(1_000000), - }; - assert_eq!( - app.execute_contract(user2.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err() - .root_cause() - .to_string(), - "Insufficient balance in contract to process claim".to_string() - ); - - // User can't emergency withdraw if they didn't deposit - let msg = GeneratorExecuteMsg::EmergencyWithdraw { - lp_token: lp_cny_eur.to_string(), - }; - assert_eq!( - app.execute_contract(user2.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err() - .root_cause() - .to_string(), - "astroport::generator::UserInfo not found".to_string() - ); - - app.update_block(|bi| next_block(bi)); - - // 10 tokens per block split equally between 2 pools - check_pending_rewards( - &mut app, - &generator_instance, - &lp_cny_eur, - USER1, - (5_000000, None), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER1, - (5_000000, None), - ); - - // User 2 - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user2, 10); - mint_tokens(&mut app, pair_eur_usd.clone(), &lp_eur_usd, &user2, 10); - - deposit_lp_tokens_to_generator( - &mut app, - &generator_instance, - USER2, - &[(&lp_cny_eur, 10), (&lp_eur_usd, 10)], - ); - - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 20); - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 20); - - // 10 tokens have been distributed to depositors since the last deposit - check_pending_rewards( - &mut app, - &generator_instance, - &lp_cny_eur, - USER1, - (5_000000, None), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER1, - (5_000000, None), - ); - - // New deposits can't receive already calculated rewards - check_pending_rewards(&mut app, &generator_instance, &lp_cny_eur, USER2, (0, None)); - check_pending_rewards(&mut app, &generator_instance, &lp_eur_usd, USER2, (0, None)); - - // Change pool alloc points - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_cny_eur.to_string(), Uint128::from(60u32)), - (lp_eur_usd.to_string(), Uint128::from(40u32)), - ], - }; - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - app.update_block(|bi| next_block(bi)); - - // 60 to cny_eur, 40 to eur_usd. Each is divided for two users - check_pending_rewards( - &mut app, - &generator_instance, - &lp_cny_eur, - USER1, - (8_000000, None), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER1, - (7_000000, None), - ); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_cny_eur, - USER2, - (3_000000, None), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER2, - (2_000000, None), - ); - - // User1 emergency withdraws and loses already accrued rewards (5). - // Pending tokens (3) will be redistributed to other staked users. - let msg = GeneratorExecuteMsg::EmergencyWithdraw { - lp_token: lp_cny_eur.to_string(), - }; - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_cny_eur, - USER1, - (0_000000, None), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER1, - (7_000000, None), - ); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_cny_eur, - USER2, - (3_000000, None), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER2, - (2_000000, None), - ); - - // Balance of the generator should be decreased - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 10); - - // User1 can't withdraw after emergency withdraw - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_cny_eur.to_string(), - amount: Uint128::new(1_000000), - }; - assert_eq!( - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err() - .root_cause() - .to_string(), - "Insufficient balance in contract to process claim".to_string(), - ); - - // User2 withdraw and get rewards - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_cny_eur.to_string(), - amount: Uint128::new(10), - }; - app.execute_contract(user2.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 0); - check_token_balance(&mut app, &lp_cny_eur, &user1, 10); - check_token_balance(&mut app, &lp_cny_eur, &user2, 10); - - check_token_balance(&mut app, &astro_token_instance, &user1, 0); - check_token_balance(&mut app, &astro_token_instance, &user2, 3_000000); - // 7 + 2 distributed ASTRO (for other pools). 5 orphaned by emergency withdrawals, 6 transfered to User2 - - // User1 withdraws and gets rewards - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_eur_usd.to_string(), - amount: Uint128::new(5), - }; - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 15); - check_token_balance(&mut app, &lp_eur_usd, &user1, 5); - - check_token_balance(&mut app, &astro_token_instance, &user1, 7_000000); - - // User1 withdraws and gets rewards - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_eur_usd.to_string(), - amount: Uint128::new(5), - }; - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 10); - check_token_balance(&mut app, &lp_eur_usd, &user1, 10); - check_token_balance(&mut app, &astro_token_instance, &user1, 7_000000); - - // User2 withdraws and gets rewards - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_eur_usd.to_string(), - amount: Uint128::new(10), - }; - app.execute_contract(user2.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 0); - check_token_balance(&mut app, &lp_eur_usd, &user1, 10); - check_token_balance(&mut app, &lp_eur_usd, &user2, 10); - - check_token_balance(&mut app, &astro_token_instance, &user1, 7_000000); - check_token_balance(&mut app, &astro_token_instance, &user2, 5_000000); -} - -#[test] -fn generator_update_proxy_balance_failed() { - let mut app = mock_app(); - - let owner = Addr::unchecked(OWNER); - let user1 = Addr::unchecked(USER1); - let user2 = Addr::unchecked(USER2); - - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let cny_eur_token_code_id = store_token_code(&mut app); - let eur_token = instantiate_token(&mut app, cny_eur_token_code_id, "EUR", None); - let val_token = instantiate_token(&mut app, token_code_id, "VAL", None); - - let (pair_val_eur, lp_val_eur) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: val_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - - let generator_instance = - instantiate_generator(&mut app, &factory_instance, &astro_token_instance, None); - - let vkr_staking_instance = - instantiate_valkyrie_protocol(&mut app, &val_token, &pair_val_eur, &lp_val_eur); - - let proxy_code_id = store_proxy_code(&mut app); - - let proxy_to_vkr_instance = instantiate_proxy( - &mut app, - proxy_code_id, - &generator_instance, - &pair_val_eur, - &lp_val_eur, - &vkr_staking_instance, - &val_token, - ); - - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![(lp_val_eur.to_string(), Uint128::from(50u64))], - }; - - app.execute_contract( - Addr::unchecked(OWNER), - generator_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - let msg = GeneratorExecuteMsg::MoveToProxy { - lp_token: lp_val_eur.to_string(), - proxy: proxy_to_vkr_instance.to_string(), - }; - - app.execute_contract( - Addr::unchecked(OWNER), - generator_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - // Mint tokens, so user can deposit - mint_tokens(&mut app, pair_val_eur.clone(), &lp_val_eur, &user1, 10); - deposit_lp_tokens_to_generator(&mut app, &generator_instance, USER1, &[(&lp_val_eur, 10)]); - - // With the proxy, the Generator contract doesn't have the deposited LP tokens - check_token_balance(&mut app, &lp_val_eur, &generator_instance, 0); - // The LP tokens are in the 3rd party contract now - check_token_balance(&mut app, &lp_val_eur, &vkr_staking_instance, 10); - - // Mint tokens on staking for distributing - mint_tokens( - &mut app, - owner.clone(), - &val_token, - &vkr_staking_instance, - 200_000_000, - ); - - app.update_block(|bi| next_block(bi)); - - // User 2 - mint_tokens(&mut app, pair_val_eur.clone(), &lp_val_eur, &user2, 10); - deposit_lp_tokens_to_generator(&mut app, &generator_instance, USER2, &[(&lp_val_eur, 10)]); - - check_token_balance(&mut app, &lp_val_eur, &generator_instance, 0); - check_token_balance(&mut app, &lp_val_eur, &vkr_staking_instance, 20); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER1, - (10_000000, Some(vec![50_000000])), - ); - - // New deposits can't receive already calculated rewards - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER2, - (0, Some(vec![0])), - ); - - // Change pool alloc points - app.execute_contract( - owner.clone(), - generator_instance.clone(), - &GeneratorExecuteMsg::SetupPools { - pools: vec![(lp_val_eur.to_string(), Uint128::new(60))], - }, - &[], - ) - .unwrap(); - - app.update_block(|bi| next_block(bi)); - - // check pending rewards for user1 - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER1, - (15_000000, Some(vec![80_000_000])), - ); - - // check pending rewards for user2 - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER2, - (5_000000, Some(vec![30000000])), - ); - - // check staking balance - check_token_balance(&mut app, &lp_val_eur, &vkr_staking_instance, 20); - - // Check user1, user2 and proxy balances - check_token_balance(&mut app, &val_token, &user1, 0); - check_token_balance(&mut app, &val_token, &user2, 0); - check_token_balance(&mut app, &val_token, &proxy_to_vkr_instance, 50_000_000); - - // Let's try withdraw for user1 - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_val_eur.to_string(), - amount: Uint128::new(5), - }; - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - // check pending rewards for user1 after withdraw - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER1, - (0, Some(vec![0])), - ); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER2, - (5_000_000, Some(vec![30_000_000])), - ); - - // Check user1, user2 and proxy balances - check_token_balance(&mut app, &val_token, &user1, 80_000_000); - check_token_balance(&mut app, &val_token, &user2, 0); - check_token_balance(&mut app, &val_token, &proxy_to_vkr_instance, 30_000_000); - - // Compare rewards on proxy and generator - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart( - &generator_instance, - &QueryMsg::PoolInfo { - lp_token: lp_val_eur.to_string(), - }, - ) - .unwrap(); - - // Generator proxy reward balance before update is 110_000_000 - assert_eq!( - Uint128::new(110_000_000), - reps.proxy_reward_balance_before_update - ); - - // Let's try checkpoint user boost - app.execute_contract( - user1.clone(), - generator_instance.clone(), - &GeneratorExecuteMsg::CheckpointUserBoost { - generators: vec![lp_val_eur.to_string()], - user: None, - }, - &[], - ) - .unwrap(); - - // Compare rewards on proxy and generator - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart( - &generator_instance, - &QueryMsg::PoolInfo { - lp_token: lp_val_eur.to_string(), - }, - ) - .unwrap(); - - // Proxies val_token balance is 30_000_000 - check_token_balance(&mut app, &val_token, &proxy_to_vkr_instance, 30_000_000); - - // Generator proxy reward balance before update is 30_000_000 - assert_eq!( - Uint128::new(30_000_000), - reps.proxy_reward_balance_before_update - ); - - // Let's try claim rewards for user2 - let msg = GeneratorExecuteMsg::ClaimRewards { - lp_tokens: vec![lp_val_eur.to_string()], - }; - app.execute_contract(user2.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - // Check user1, user2 and proxy balances - check_token_balance(&mut app, &val_token, &user1, 80_000_000); - check_token_balance(&mut app, &val_token, &user2, 30_000_000); - check_token_balance(&mut app, &val_token, &proxy_to_vkr_instance, 0); - - // Let's try deactivate pool - app.execute_contract( - factory_instance.clone(), - generator_instance.clone(), - &GeneratorExecuteMsg::DeactivatePool { - lp_token: lp_val_eur.to_string(), - }, - &[], - ) - .unwrap(); - - app.update_block(|bi| next_block(bi)); - - // Let's try claim rewards for user1 - let msg = GeneratorExecuteMsg::ClaimRewards { - lp_tokens: vec![lp_val_eur.to_string()], - }; - app.execute_contract(user2.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - // Let's try checkpoint user boost - app.execute_contract( - factory_instance.clone(), - generator_instance.clone(), - &GeneratorExecuteMsg::CheckpointUserBoost { - generators: vec![lp_val_eur.to_string()], - user: None, - }, - &[], - ) - .unwrap(); - - // check pending rewards for user1 after withdraw - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER1, - (0, Some(vec![0])), - ); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER2, - (0, Some(vec![0])), - ); - - // check staking balance - check_token_balance(&mut app, &lp_val_eur, &vkr_staking_instance, 15); - - // Check user1, user2 and proxy balances - check_token_balance(&mut app, &val_token, &user1, 80_000_000); - check_token_balance(&mut app, &val_token, &user2, 30_000_000); - check_token_balance(&mut app, &val_token, &proxy_to_vkr_instance, 0); -} - -#[test] -fn generator_with_vkr_reward_proxy() { - let mut app = mock_app(); - - let owner = Addr::unchecked(OWNER); - let user1 = Addr::unchecked(USER1); - let user2 = Addr::unchecked(USER2); - - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let cny_eur_token_code_id = store_token_code(&mut app); - let eur_token = instantiate_token(&mut app, cny_eur_token_code_id, "EUR", None); - let usd_token = instantiate_token(&mut app, cny_eur_token_code_id, "USD", None); - let val_token = instantiate_token(&mut app, token_code_id, "VAL", None); - - let (pair_val_eur, lp_val_eur) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: val_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - - let (pair_eur_usd, lp_eur_usd) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - AssetInfo::Token { - contract_addr: usd_token.clone(), - }, - ], - ); - - let generator_instance = - instantiate_generator(&mut app, &factory_instance, &astro_token_instance, None); - - let vkr_staking_instance = - instantiate_valkyrie_protocol(&mut app, &val_token, &pair_val_eur, &lp_val_eur); - - let proxy_code_id = store_proxy_code(&mut app); - - let proxy_to_vkr_instance = instantiate_proxy( - &mut app, - proxy_code_id, - &generator_instance, - &pair_val_eur, - &lp_val_eur, - &vkr_staking_instance, - &val_token, - ); - - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_val_eur.to_string(), Uint128::from(50u64)), - (lp_eur_usd.to_string(), Uint128::from(50u64)), - ], - }; - - app.execute_contract( - Addr::unchecked(OWNER), - generator_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - let msg = GeneratorExecuteMsg::MoveToProxy { - lp_token: lp_val_eur.to_string(), - proxy: proxy_to_vkr_instance.to_string(), - }; - - app.execute_contract( - Addr::unchecked(OWNER), - generator_instance.clone(), - &msg, - &[], - ) - .unwrap(); - - // Mint tokens, so user can deposit - mint_tokens(&mut app, pair_val_eur.clone(), &lp_val_eur, &user1, 9); - mint_tokens(&mut app, pair_eur_usd.clone(), &lp_eur_usd, &user1, 10); - - let msg = Cw20ExecuteMsg::Send { - contract: generator_instance.to_string(), - msg: to_json_binary(&GeneratorHookMsg::Deposit {}).unwrap(), - amount: Uint128::new(10), - }; - - let err = app - .execute_contract(user1.clone(), lp_val_eur.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Cannot Sub with 9 and 10".to_string() - ); - - mint_tokens(&mut app, pair_val_eur.clone(), &lp_val_eur, &user1, 1); - - deposit_lp_tokens_to_generator( - &mut app, - &generator_instance, - USER1, - &[(&lp_val_eur, 10), (&lp_eur_usd, 10)], - ); - - // With the proxy, the Generator contract doesn't have the deposited LP tokens - check_token_balance(&mut app, &lp_val_eur, &generator_instance, 0); - // The LP tokens are in the 3rd party contract now - check_token_balance(&mut app, &lp_val_eur, &vkr_staking_instance, 10); - - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 10); - check_token_balance(&mut app, &lp_eur_usd, &vkr_staking_instance, 0); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER1, - (0, Some(vec![0])), - ); - check_pending_rewards(&mut app, &generator_instance, &lp_eur_usd, USER1, (0, None)); - - // User can't withdraw if they didn't deposit previously - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_val_eur.to_string(), - amount: Uint128::new(1_000000), - }; - let err = app - .execute_contract(user2.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Insufficient balance in contract to process claim".to_string() - ); - - // User can't emergency withdraw if they didn't deposit previously - let msg = GeneratorExecuteMsg::EmergencyWithdraw { - lp_token: lp_val_eur.to_string(), - }; - - let err = app - .execute_contract(user2.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "astroport::generator::UserInfo not found".to_string() - ); - - app.update_block(|bi| next_block(bi)); - - // Mint tokens on staking for distributing - mint_tokens( - &mut app, - owner.clone(), - &val_token, - &vkr_staking_instance, - 200_000_000, - ); - - // Check if proxy reward exists - let reps: valkyrie::lp_staking::query_msgs::StakerInfoResponse = app - .wrap() - .query_wasm_smart( - &vkr_staking_instance, - &valkyrie::lp_staking::query_msgs::QueryMsg::StakerInfo { - staker: proxy_to_vkr_instance.to_string(), - }, - ) - .unwrap(); - assert_eq!(Uint128::new(50_000_000), reps.pending_reward); - assert_eq!(Uint128::new(10), reps.bond_amount); - - // check pending rewards before calling update rewards directly - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER1, - (5_000000, Some(vec![50_000_000])), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER1, - (5_000000, None), - ); - - let err = app - .execute_contract( - user1.clone(), - proxy_to_vkr_instance.clone(), - &ProxyExecuteMsg::UpdateRewards {}, - &[], - ) - .unwrap_err(); - assert_eq!("Unauthorized", err.root_cause().to_string()); - - // User 2 - mint_tokens(&mut app, pair_val_eur.clone(), &lp_val_eur, &user2, 10); - mint_tokens(&mut app, pair_eur_usd.clone(), &lp_eur_usd, &user2, 10); - - deposit_lp_tokens_to_generator( - &mut app, - &generator_instance, - USER2, - &[(&lp_val_eur, 10), (&lp_eur_usd, 10)], - ); - - check_token_balance(&mut app, &lp_val_eur, &generator_instance, 0); - check_token_balance(&mut app, &lp_val_eur, &vkr_staking_instance, 20); - - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 20); - check_token_balance(&mut app, &lp_eur_usd, &vkr_staking_instance, 0); - - // 10 tokens distributed to depositors since the last deposit - // 5 distrubuted to proxy contract sicne the last deposit - check_token_balance(&mut app, &val_token, &proxy_to_vkr_instance, 50_000_000); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER1, - (5_000000, Some(vec![50_000000])), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER1, - (5_000000, None), - ); - - // New deposits can't receive already calculated rewards - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER2, - (0, Some(vec![0])), - ); - check_pending_rewards(&mut app, &generator_instance, &lp_eur_usd, USER2, (0, None)); - - // Change pool alloc points - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_val_eur.to_string(), Uint128::new(60)), - (lp_eur_usd.to_string(), Uint128::new(40)), - ], - }; - - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - app.update_block(|bi| next_block(bi)); - - // Check if proxy reward exists - let reps: valkyrie::lp_staking::query_msgs::StakerInfoResponse = app - .wrap() - .query_wasm_smart( - &vkr_staking_instance, - &valkyrie::lp_staking::query_msgs::QueryMsg::StakerInfo { - staker: proxy_to_vkr_instance.to_string(), - }, - ) - .unwrap(); - assert_eq!(Uint128::new(60_000_000), reps.pending_reward); - assert_eq!(Uint128::new(20), reps.bond_amount); - - // check pending rewards before calling update rewards directly - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER1, - (8_000000, Some(vec![80_000_000])), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER1, - (7_000000, None), - ); - - // Check if proxy reward exists - let reps: valkyrie::lp_staking::query_msgs::StakerInfoResponse = app - .wrap() - .query_wasm_smart( - &vkr_staking_instance, - &valkyrie::lp_staking::query_msgs::QueryMsg::StakerInfo { - staker: proxy_to_vkr_instance.to_string(), - }, - ) - .unwrap(); - assert_eq!(Uint128::new(60000000), reps.pending_reward); - assert_eq!(Uint128::new(20), reps.bond_amount); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER2, - (3_000000, Some(vec![30000000])), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER2, - (2_000000, None), - ); - - // User1 emergency withdraws and loses already distributed rewards (5). - // Pending tokens (3) will be redistributed to other staked users. - let msg = GeneratorExecuteMsg::EmergencyWithdraw { - lp_token: lp_val_eur.to_string(), - }; - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER1, - (0_000000, Some(vec![0])), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER1, - (7_000000, None), - ); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_val_eur, - USER2, - (3_000000, Some(vec![60000000])), - ); - check_pending_rewards( - &mut app, - &generator_instance, - &lp_eur_usd, - USER2, - (2_000000, None), - ); - - // Balance of the end contract should be decreased - check_token_balance(&mut app, &lp_val_eur, &vkr_staking_instance, 10); - - // User1 can't withdraw after emergency withdrawal - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_val_eur.to_string(), - amount: Uint128::new(1_000000), - }; - let err = app - .execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Insufficient balance in contract to process claim".to_string(), - ); - - check_token_balance(&mut app, &val_token, &proxy_to_vkr_instance, 50000000); - check_token_balance(&mut app, &val_token, &owner, 0); - - // Check if there are orphaned proxy rewards - let msg = GeneratorQueryMsg::OrphanProxyRewards { - lp_token: lp_val_eur.to_string(), - }; - let orphan_rewards: Vec<(AssetInfo, Uint128)> = app - .wrap() - .query_wasm_smart(&generator_instance, &msg) - .unwrap(); - assert_eq!(orphan_rewards[0].1, Uint128::new(50000000)); - - // Owner sends orphaned proxy rewards - let msg = GeneratorExecuteMsg::SendOrphanProxyReward { - recipient: owner.to_string(), - lp_token: lp_val_eur.to_string(), - }; - - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &val_token, &proxy_to_vkr_instance, 0); - check_token_balance(&mut app, &val_token, &owner, 50000000); - - // Owner can't send proxy rewards for distribution to users - let msg = GeneratorExecuteMsg::SendOrphanProxyReward { - recipient: owner.to_string(), - lp_token: lp_val_eur.to_string(), - }; - - let err = app - .execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Insufficient amount of orphan rewards!" - ); - - // User2 withdraws and gets rewards - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_val_eur.to_string(), - amount: Uint128::new(10), - }; - app.execute_contract(user2.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &lp_val_eur, &generator_instance, 0); - check_token_balance(&mut app, &lp_val_eur, &vkr_staking_instance, 0); - check_token_balance(&mut app, &lp_val_eur, &user1, 10); - check_token_balance(&mut app, &lp_val_eur, &user2, 10); - - check_token_balance(&mut app, &astro_token_instance, &user1, 0); - check_token_balance(&mut app, &val_token, &user1, 0); - check_token_balance(&mut app, &astro_token_instance, &user2, 3_000000); - check_token_balance(&mut app, &val_token, &user2, 60000000); - - check_token_balance(&mut app, &val_token, &proxy_to_vkr_instance, 0); - - // User1 withdraws and gets rewards - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_eur_usd.to_string(), - amount: Uint128::new(5), - }; - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 15); - check_token_balance(&mut app, &lp_eur_usd, &user1, 5); - - check_token_balance(&mut app, &astro_token_instance, &user1, 7_000000); - check_token_balance(&mut app, &val_token, &user1, 0); - - // User1 withdraws and gets rewards - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_eur_usd.to_string(), - amount: Uint128::new(5), - }; - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 10); - check_token_balance(&mut app, &lp_eur_usd, &user1, 10); - check_token_balance(&mut app, &astro_token_instance, &user1, 7_000000); - check_token_balance(&mut app, &val_token, &user1, 0); - - // User2 withdraws and gets rewards - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_eur_usd.to_string(), - amount: Uint128::new(10), - }; - app.execute_contract(user2.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &lp_eur_usd, &generator_instance, 0); - check_token_balance(&mut app, &lp_eur_usd, &user1, 10); - check_token_balance(&mut app, &lp_eur_usd, &user2, 10); - - check_token_balance(&mut app, &astro_token_instance, &user1, 7_000000); - check_token_balance(&mut app, &val_token, &user1, 0_000000); - check_token_balance(&mut app, &astro_token_instance, &user2, 5_000000); - check_token_balance(&mut app, &val_token, &user2, 60000000); - - // Proxies val_token balance - check_token_balance(&mut app, &val_token, &proxy_to_vkr_instance, 0); -} - -#[test] -fn move_to_proxy() { - let mut app = mock_app(); - - let owner = Addr::unchecked(OWNER); - let user1 = Addr::unchecked(USER1); - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let cny_eur_token_code_id = store_token_code(&mut app); - let eur_token = instantiate_token(&mut app, cny_eur_token_code_id, "EUR", None); - let cny_token = instantiate_token(&mut app, cny_eur_token_code_id, "CNY", None); - let vkr_token_instance = instantiate_token(&mut app, token_code_id, "VAL", None); - - let (pair_cny_eur, lp_cny_eur) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: cny_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - - let generator_instance = - instantiate_generator(&mut app, &factory_instance, &astro_token_instance, None); - - register_lp_tokens_in_generator( - &mut app, - &generator_instance, - vec![PoolWithProxy { - pool: (lp_cny_eur.to_string(), Uint128::from(50u32)), - proxy: None, - }], - ); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_eur.to_string(), - }; - - // Check if proxy reward is none - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(None, reps.reward_proxy); - - let vkr_staking_instance = - instantiate_valkyrie_protocol(&mut app, &vkr_token_instance, &pair_cny_eur, &lp_cny_eur); - - let proxy_code_id = store_proxy_code(&mut app); - - let proxy_to_vkr_instance = instantiate_proxy( - &mut app, - proxy_code_id, - &generator_instance, - &pair_cny_eur, - &lp_cny_eur, - &vkr_staking_instance, - &vkr_token_instance, - ); - assert_eq!(Addr::unchecked("contract12"), proxy_to_vkr_instance); - - // Set the proxy for the pool - let msg = ExecuteMsg::MoveToProxy { - lp_token: lp_cny_eur.to_string(), - proxy: proxy_to_vkr_instance.to_string(), - }; - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_eur.to_string(), - }; - - // Check if proxy reward exists - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Some(Addr::unchecked("contract12")), reps.reward_proxy); - - // Mint tokens, so user can deposit - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user1, 10); - - deposit_lp_tokens_to_generator(&mut app, &generator_instance, USER1, &[(&lp_cny_eur, 10)]); - - // With the proxy set up, the Generator contract doesn't have the deposited LP tokens - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 0); - // The LP tokens are in the 3rd party contract now - check_token_balance(&mut app, &lp_cny_eur, &vkr_staking_instance, 10); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_cny_eur, - USER1, - (0, Some(vec![0])), - ); - - app.update_block(|bi| next_block(bi)); - - // Check if proxy reward configs - let reps: ConfigResponse = app - .wrap() - .query_wasm_smart(&proxy_to_vkr_instance, &QueryMsg::Config {}) - .unwrap(); - assert_eq!("contract7".to_string(), reps.lp_token_addr); - - check_pending_rewards( - &mut app, - &generator_instance, - &lp_cny_eur, - USER1, - (10_000000, Some(vec![50_000_000])), - ); - - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 0); - check_token_balance(&mut app, &lp_cny_eur, &vkr_staking_instance, 10); - - // Check if the pool already has a reward proxy contract set - let msg = ExecuteMsg::MoveToProxy { - lp_token: lp_cny_eur.to_string(), - proxy: proxy_to_vkr_instance.to_string(), - }; - let err = app - .execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - "The pool already has a reward proxy contract!", - err.root_cause().to_string() - ) -} - -#[test] -fn query_all_stakers() { - let mut app = mock_app(); - - let user1 = Addr::unchecked(USER1); - let user2 = Addr::unchecked(USER2); - let user3 = Addr::unchecked(USER3); - let user4 = Addr::unchecked(USER4); - let user5 = Addr::unchecked(USER5); - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let cny_eur_token_code_id = store_token_code(&mut app); - let eur_token = instantiate_token(&mut app, cny_eur_token_code_id, "EUR", None); - let cny_token = instantiate_token(&mut app, cny_eur_token_code_id, "CNY", None); - - let (pair_cny_eur, lp_cny_eur) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: cny_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - - let generator_instance = - instantiate_generator(&mut app, &factory_instance, &astro_token_instance, None); - - register_lp_tokens_in_generator( - &mut app, - &generator_instance, - vec![PoolWithProxy { - pool: (lp_cny_eur.to_string(), Uint128::new(100)), - proxy: None, - }], - ); - - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user1, 10); - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user2, 10); - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user3, 10); - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user4, 10); - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user5, 10); - - let msg_cny_eur = QueryMsg::PoolStakers { - lp_token: lp_cny_eur.to_string(), - start_after: None, - limit: None, - }; - - // Check there are no stakers when there's no deposit - let reps: Vec = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - let empty: Vec = vec![]; - assert_eq!(empty, reps); - - for user in [USER1, USER2, USER3, USER4, USER5] { - deposit_lp_tokens_to_generator(&mut app, &generator_instance, user, &[(&lp_cny_eur, 10)]); - } - - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 50); - - let reps: Vec = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - - assert_eq!( - vec![ - StakerResponse { - account: "user1".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user2".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user3".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user4".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user5".to_string(), - amount: Uint128::new(10) - } - ], - reps - ); - - let msg = GeneratorExecuteMsg::Withdraw { - lp_token: lp_cny_eur.to_string(), - amount: Uint128::new(10), - }; - - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 40); - - // Check the amount of stakers after withdrawal - let reps: Vec = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - - assert_eq!( - vec![ - StakerResponse { - account: "user2".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user3".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user4".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user5".to_string(), - amount: Uint128::new(10) - } - ], - reps - ); -} - -#[test] -fn query_pagination_stakers() { - let mut app = mock_app(); - - let user1 = Addr::unchecked(USER1); - let user2 = Addr::unchecked(USER2); - let user3 = Addr::unchecked(USER3); - let user4 = Addr::unchecked(USER4); - let user5 = Addr::unchecked(USER5); - let user6 = Addr::unchecked(USER6); - let user7 = Addr::unchecked(USER7); - let user8 = Addr::unchecked(USER8); - let user9 = Addr::unchecked(USER9); - - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let cny_eur_token_code_id = store_token_code(&mut app); - let eur_token = instantiate_token(&mut app, cny_eur_token_code_id, "EUR", None); - let cny_token = instantiate_token(&mut app, cny_eur_token_code_id, "CNY", None); - - let (pair_cny_eur, lp_cny_eur) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: cny_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - - let generator_instance = - instantiate_generator(&mut app, &factory_instance, &astro_token_instance, None); - - register_lp_tokens_in_generator( - &mut app, - &generator_instance, - vec![PoolWithProxy { - pool: (lp_cny_eur.to_string(), Uint128::from(100u32)), - proxy: None, - }], - ); - - for user in [ - user1, user2, user3, user4, user5, user6, user7, user8, user9, - ] { - mint_tokens(&mut app, pair_cny_eur.clone(), &lp_cny_eur, &user, 10); - } - - for user in [ - USER1, USER2, USER3, USER4, USER5, USER6, USER7, USER8, USER9, - ] { - deposit_lp_tokens_to_generator(&mut app, &generator_instance, user, &[(&lp_cny_eur, 10)]); - } - - check_token_balance(&mut app, &lp_cny_eur, &generator_instance, 90); - - // Get the first two stakers - let msg_cny_eur = QueryMsg::PoolStakers { - lp_token: lp_cny_eur.to_string(), - start_after: None, - limit: Some(2), - }; - - let reps: Vec = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - - // check count of users - assert_eq!(reps.len(), 2 as usize); - - assert_eq!( - vec![ - StakerResponse { - account: "user1".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user2".to_string(), - amount: Uint128::new(10) - }, - ], - reps - ); - - // Get the next seven stakers - let msg_cny_eur = QueryMsg::PoolStakers { - lp_token: lp_cny_eur.to_string(), - start_after: Some("user2".to_string()), - limit: Some(7), - }; - - let reps: Vec = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - - assert_eq!( - vec![ - StakerResponse { - account: "user3".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user4".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user5".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user6".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user7".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user8".to_string(), - amount: Uint128::new(10) - }, - StakerResponse { - account: "user9".to_string(), - amount: Uint128::new(10) - }, - ], - reps - ); -} - -#[test] -fn update_tokens_blocked_list() { - let mut app = mock_app(); - - let owner = Addr::unchecked(OWNER); - let user1 = Addr::unchecked(USER1); - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let generator_instance = instantiate_generator( - &mut app, - &factory_instance, - &astro_token_instance, - Some(OWNER.to_string()), - ); - - let cny_token = instantiate_token(&mut app, token_code_id, "CNY", None); - let eur_token = instantiate_token(&mut app, token_code_id, "EUR", None); - let ukr_token = instantiate_token(&mut app, token_code_id, "UKR", None); - let msi_token = instantiate_token(&mut app, token_code_id, "MSI", None); - - let (_, lp_cny_eur) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: cny_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - - let (_, lp_cny_ukr) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: cny_token.clone(), - }, - AssetInfo::Token { - contract_addr: ukr_token.clone(), - }, - ], - ); - - let (_, lp_eur_msi) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - AssetInfo::Token { - contract_addr: msi_token.clone(), - }, - ], - ); - - register_lp_tokens_in_generator( - &mut app, - &generator_instance, - vec![ - PoolWithProxy { - pool: (lp_cny_eur.to_string(), Uint128::new(100)), - proxy: None, - }, - PoolWithProxy { - pool: (lp_cny_ukr.to_string(), Uint128::new(100)), - proxy: None, - }, - PoolWithProxy { - pool: (lp_eur_msi.to_string(), Uint128::new(100)), - proxy: None, - }, - ], - ); - - let msg = ExecuteMsg::UpdateBlockedTokenslist { - add: None, - remove: None, - }; - - let err = app - .execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - "Generic error: Need to provide add or remove parameters", - err.root_cause().to_string() - ); - - let msg = ExecuteMsg::UpdateBlockedTokenslist { - add: Some(vec![native_asset_info("uusd".to_string())]), - remove: None, - }; - - let err = app - .execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!("Unauthorized", err.root_cause().to_string()); - - let err = app - .execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - ContractError::AssetCannotBeBlocked { - asset: "uusd".to_string() - }, - err.downcast().unwrap() - ); - - // IBC tokens are allowed to be blocked - let msg = ExecuteMsg::UpdateBlockedTokenslist { - add: Some(vec![native_asset_info( - "ibc/0E9C2DD45862E4BE5D15B73C2A0999E2A1163BF347645422A2A283524148C14D".to_string(), - )]), - remove: None, - }; - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - let msg = ExecuteMsg::UpdateBlockedTokenslist { - add: Some(vec![token_asset_info(cny_token.clone())]), - remove: None, - }; - - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - // check if we cannot change the allocation point for blocked token - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_cny_eur.to_string(), Uint128::from(60u32)), - (lp_cny_ukr.to_string(), Uint128::from(40u32)), - (lp_eur_msi.to_string(), Uint128::from(140u32)), - ], - }; - let err = app - .execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - - assert_eq!( - format!("Generic error: Token {} is blocked!", cny_token.to_string()), - err.root_cause().to_string() - ); - - // Change pool alloc points - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![(lp_eur_msi.to_string(), Uint128::from(140u32))], - }; - - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_eur.to_string(), - }; - - // Check if alloc point is equal to 0 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::zero(), reps.alloc_point); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_ukr.to_string(), - }; - - // Check if alloc point is equal to 0 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::zero(), reps.alloc_point); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_eur_msi.to_string(), - }; - - // Check if alloc point is equal to 140 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::new(140), reps.alloc_point); - - let msg = ExecuteMsg::UpdateBlockedTokenslist { - add: None, - remove: Some(vec![native_asset_info("eur".to_string())]), - }; - - let err = app - .execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - "Generic error: Can't remove token. It is not found in the blocked list.", - err.root_cause().to_string() - ); - - let msg = ExecuteMsg::UpdateBlockedTokenslist { - add: None, - remove: Some(vec![token_asset_info(cny_token)]), - }; - - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - // Change pool alloc points - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_cny_eur.to_string(), Uint128::from(60u32)), - (lp_cny_ukr.to_string(), Uint128::from(40u32)), - (lp_eur_msi.to_string(), Uint128::from(140u32)), - ], - }; - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_eur.to_string(), - }; - - // Check if alloc point is equal to 60 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::new(60), reps.alloc_point); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_ukr.to_string(), - }; - - // Check if alloc point is equal to 40 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::new(40), reps.alloc_point); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_eur_msi.to_string(), - }; - - // Check if alloc point is equal to 140 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::new(140), reps.alloc_point); -} - -#[test] -fn setup_pools() { - let mut app = mock_app(); - - let owner = Addr::unchecked(OWNER); - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - - let factory_instance = - instantiate_factory(&mut app, factory_code_id, token_code_id, pair_code_id, None); - - let generator_instance = instantiate_generator( - &mut app, - &factory_instance, - &astro_token_instance, - Some(OWNER.to_string()), - ); - - // add generator to factory - let msg = FactoryExecuteMsg::UpdateConfig { - token_code_id: None, - fee_address: None, - generator_address: Some(generator_instance.to_string()), - whitelist_code_id: None, - coin_registry_address: None, - }; - - app.execute_contract(Addr::unchecked(OWNER), factory_instance.clone(), &msg, &[]) - .unwrap(); - - let res: FactoryConfigResponse = app - .wrap() - .query_wasm_smart(&factory_instance.clone(), &FactoryQueryMsg::Config {}) - .unwrap(); - - assert_eq!(res.generator_address, Some(generator_instance.clone())); - - let (_, lp_cny_eur) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::NativeToken { - denom: "cny".to_string(), - }, - AssetInfo::NativeToken { - denom: "eur".to_string(), - }, - ], - ); - - let (_, lp_cny_uusd) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::NativeToken { - denom: "cny".to_string(), - }, - AssetInfo::NativeToken { - denom: "uusd".to_string(), - }, - ], - ); - - let (_, lp_eur_uusd) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::NativeToken { - denom: "eur".to_string(), - }, - AssetInfo::NativeToken { - denom: "uusd".to_string(), - }, - ], - ); - - register_lp_tokens_in_generator( - &mut app, - &generator_instance, - vec![ - PoolWithProxy { - pool: (lp_cny_eur.to_string(), Uint128::new(100)), - proxy: None, - }, - PoolWithProxy { - pool: (lp_cny_uusd.to_string(), Uint128::new(100)), - proxy: None, - }, - PoolWithProxy { - pool: (lp_eur_uusd.to_string(), Uint128::new(100)), - proxy: None, - }, - ], - ); - - // deregister pair and set the allocation point to zero for pool - app.execute_contract( - Addr::unchecked(OWNER), - factory_instance.clone(), - &FactoryExecuteMsg::Deregister { - asset_infos: vec![ - AssetInfo::NativeToken { - denom: "cny".to_string(), - }, - AssetInfo::NativeToken { - denom: "eur".to_string(), - }, - ], - }, - &[], - ) - .unwrap(); - - // Check if the allocation point for lp_cny_eur is equal to zero - let res: PoolInfoResponse = app - .wrap() - .query_wasm_smart( - generator_instance.to_owned(), - &GeneratorQueryMsg::PoolInfo { - lp_token: lp_cny_eur.to_string(), - }, - ) - .unwrap(); - assert_eq!(Uint128::zero(), res.alloc_point); - - // Check pool length - let res: usize = app - .wrap() - .query_wasm_smart( - generator_instance.to_owned(), - &GeneratorQueryMsg::ActivePoolLength {}, - ) - .unwrap(); - assert_eq!(3, res); - - // Change pool alloc points - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_cny_eur.to_string(), Uint128::from(60u32)), - (lp_eur_uusd.to_string(), Uint128::from(40u32)), - (lp_cny_uusd.to_string(), Uint128::from(140u32)), - ], - }; - - let err = app - .execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - "Generic error: The pair is not registered: cny-eur", - err.root_cause().to_string() - ); - - // Change pool alloc points - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_eur_uusd.to_string(), Uint128::from(40u32)), - (lp_cny_uusd.to_string(), Uint128::from(140u32)), - ], - }; - - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_eur.to_string(), - }; - - // Check if alloc point is equal to 0 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::zero(), reps.alloc_point); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_uusd.to_string(), - }; - - // Check if alloc point is equal to 140 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::new(140), reps.alloc_point); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_eur_uusd.to_string(), - }; - - // Check if alloc point is equal to 40 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::new(40), reps.alloc_point); - - // Change pool alloc points - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_eur_uusd.to_string(), Uint128::from(80u32)), - (lp_cny_uusd.to_string(), Uint128::from(80u32)), - ], - }; - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_eur.to_string(), - }; - - // Check if alloc point is equal to 0 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::zero(), reps.alloc_point); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_uusd.to_string(), - }; - - // Check if alloc point is equal to 80 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::new(80), reps.alloc_point); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_eur_uusd.to_string(), - }; - - // Check if alloc point is equal to 80 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::new(80), reps.alloc_point); -} - -#[test] -fn deactivate_pools_by_pair_types() { - let mut app = mock_app(); - - let owner = Addr::unchecked(OWNER); - let user1 = Addr::unchecked(USER1); - let token_code_id = store_token_code(&mut app); - let factory_code_id = store_factory_code(&mut app); - let pair_code_id = store_pair_code_id(&mut app); - let pair_stable_code_id = store_pair_stable_code_id(&mut app); - - let astro_token_instance = - instantiate_token(&mut app, token_code_id, "ASTRO", Some(1_000_000_000_000000)); - - let factory_instance = instantiate_factory( - &mut app, - factory_code_id, - token_code_id, - pair_code_id, - Some(pair_stable_code_id), - ); - - let generator_instance = instantiate_generator( - &mut app, - &factory_instance, - &astro_token_instance, - Some(OWNER.to_string()), - ); - - // add generator to factory - let msg = FactoryExecuteMsg::UpdateConfig { - token_code_id: None, - fee_address: None, - generator_address: Some(generator_instance.to_string()), - whitelist_code_id: None, - coin_registry_address: None, - }; - - app.execute_contract(Addr::unchecked(OWNER), factory_instance.clone(), &msg, &[]) - .unwrap(); - - let res: FactoryConfigResponse = app - .wrap() - .query_wasm_smart(&factory_instance.clone(), &FactoryQueryMsg::Config {}) - .unwrap(); - - assert_eq!(res.generator_address, Some(generator_instance.clone())); - - let (_, lp_cny_uusd) = create_pair( - &mut app, - &factory_instance, - Some(PairType::Stable {}), - Some( - to_json_binary(&StablePoolParams { - amp: 100, - owner: None, - }) - .unwrap(), - ), - vec![ - AssetInfo::NativeToken { - denom: "cny".to_string(), - }, - AssetInfo::NativeToken { - denom: "uusd".to_string(), - }, - ], - ); - - let (_, lp_cny_eur) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::NativeToken { - denom: "cny".to_string(), - }, - AssetInfo::NativeToken { - denom: "eur".to_string(), - }, - ], - ); - - let (_, lp_eur_uusd) = create_pair( - &mut app, - &factory_instance, - None, - None, - vec![ - AssetInfo::NativeToken { - denom: "eur".to_string(), - }, - AssetInfo::NativeToken { - denom: "uusd".to_string(), - }, - ], - ); - - register_lp_tokens_in_generator( - &mut app, - &generator_instance, - vec![ - PoolWithProxy { - pool: (lp_cny_eur.to_string(), Uint128::new(100)), - proxy: None, - }, - PoolWithProxy { - pool: (lp_cny_uusd.to_string(), Uint128::new(100)), - proxy: None, - }, - PoolWithProxy { - pool: (lp_eur_uusd.to_string(), Uint128::new(100)), - proxy: None, - }, - ], - ); - - // try to deactivate pools for not blacklisted pair types - let msg = GeneratorExecuteMsg::DeactivateBlacklistedPools { - pair_types: vec![PairType::Xyk {}, PairType::Stable {}], - }; - let err = app - .execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - format!( - "Generic error: Pair type ({}) is not blacklisted!", - PairType::Xyk {} - ), - err.root_cause().to_string() - ); - - // Add stable pair type to blacklist - let msg = FactoryExecuteMsg::UpdatePairConfig { - config: PairConfig { - code_id: pair_stable_code_id, - pair_type: PairType::Stable {}, - total_fee_bps: 100, - maker_fee_bps: 10, - is_disabled: false, - is_generator_disabled: true, - permissioned: false, - }, - }; - - app.execute_contract(owner.clone(), factory_instance.clone(), &msg, &[]) - .unwrap(); - - // check if we add stable pair type to blacklist - let res: Vec = app - .wrap() - .query_wasm_smart( - &factory_instance.clone(), - &FactoryQueryMsg::BlacklistedPairTypes {}, - ) - .unwrap(); - assert_eq!(res, vec![PairType::Stable {}]); - - let msg = GeneratorExecuteMsg::DeactivateBlacklistedPools { - pair_types: vec![PairType::Stable {}], - }; - app.execute_contract(user1.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_uusd.to_string(), - }; - - // Check if alloc point is equal to 0 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::zero(), reps.alloc_point); - - // try to change alloc point for blacklisted pool by pair type - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_cny_eur.to_string(), Uint128::from(60u32)), - (lp_eur_uusd.to_string(), Uint128::from(40u32)), - (lp_cny_uusd.to_string(), Uint128::from(140u32)), - ], - }; - - let err = app - .execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!( - "Generic error: Pair type (stable) is blacklisted!", - err.root_cause().to_string() - ); - - // Change pool alloc points - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_cny_eur.to_string(), Uint128::from(60u32)), - (lp_eur_uusd.to_string(), Uint128::from(40u32)), - ], - }; - - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_eur.to_string(), - }; - - // Check if alloc point is equal to 60 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::new(60), reps.alloc_point); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_uusd.to_string(), - }; - - // Check if alloc point is equal to 0 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::zero(), reps.alloc_point); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_eur_uusd.to_string(), - }; - - // Check if alloc point is equal to 40 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::new(40), reps.alloc_point); - - // remove stable pair type from blacklist - let msg = FactoryExecuteMsg::UpdatePairConfig { - config: PairConfig { - code_id: pair_stable_code_id, - pair_type: PairType::Stable {}, - total_fee_bps: 100, - maker_fee_bps: 10, - is_disabled: false, - is_generator_disabled: false, - permissioned: false, - }, - }; - - app.execute_contract(owner.clone(), factory_instance.clone(), &msg, &[]) - .unwrap(); - - // check if we remove stable pair type from blacklist - let res: Vec = app - .wrap() - .query_wasm_smart( - &factory_instance.clone(), - &FactoryQueryMsg::BlacklistedPairTypes {}, - ) - .unwrap(); - assert_eq!(res, vec![]); - - // Change pool alloc points - let msg = GeneratorExecuteMsg::SetupPools { - pools: vec![ - (lp_eur_uusd.to_string(), Uint128::from(80u32)), - (lp_cny_uusd.to_string(), Uint128::from(80u32)), - ], - }; - app.execute_contract(owner.clone(), generator_instance.clone(), &msg, &[]) - .unwrap(); - - let msg_cny_eur = QueryMsg::PoolInfo { - lp_token: lp_cny_eur.to_string(), - }; - - // Check if alloc point is equal to 0 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_eur) - .unwrap(); - assert_eq!(Uint128::zero(), reps.alloc_point); - - let msg_cny_uusd = QueryMsg::PoolInfo { - lp_token: lp_cny_uusd.to_string(), - }; - - // Check if alloc point is equal to 80 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_cny_uusd) - .unwrap(); - assert_eq!(Uint128::new(80), reps.alloc_point); - - let msg_eur_uusd = QueryMsg::PoolInfo { - lp_token: lp_eur_uusd.to_string(), - }; - - // Check if alloc point is equal to 80 - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart(&generator_instance, &msg_eur_uusd) - .unwrap(); - assert_eq!(Uint128::new(80), reps.alloc_point); -} - -#[test] -fn test_proxy_generator_incorrect_virtual_amount() { - let mut app = mock_app_helper(); - let owner = Addr::unchecked("owner"); - let helper_controller = ControllerHelper::init(&mut app, &owner); - let user1 = Addr::unchecked(USER1); - let token_code_id = store_token_code(&mut app); - // init cw20 tokens - let cny_token = instantiate_token(&mut app, token_code_id, "CNY", None); - let eur_token = instantiate_token(&mut app, token_code_id, "EUR", None); - let val_token = instantiate_token(&mut app, token_code_id, "VAL", None); - // create two lp pairs, one with proxy another without proxy - let (pair_cny_eur, lp_without_proxy) = create_pair( - &mut app, - &helper_controller.factory, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: cny_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - let (pair_val_eur, lp_with_proxy) = create_pair( - &mut app, - &helper_controller.factory, - None, - None, - vec![ - AssetInfo::Token { - contract_addr: val_token.clone(), - }, - AssetInfo::Token { - contract_addr: eur_token.clone(), - }, - ], - ); - // register lp token to pool - register_lp_tokens_in_generator( - &mut app, - &helper_controller.generator, - vec![PoolWithProxy { - pool: (lp_without_proxy.to_string(), Uint128::from(100u32)), - proxy: None, - }], - ); - // verify no proxy set - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart( - &helper_controller.generator, - &QueryMsg::PoolInfo { - lp_token: lp_without_proxy.to_string(), - }, - ) - .unwrap(); - assert_eq!(None, reps.reward_proxy); - // mint lp without proxy to user - mint_tokens( - &mut app, - pair_cny_eur.clone(), - &lp_without_proxy, - &user1, - 10, - ); - helper_controller - .escrow_helper - .mint_xastro(&mut app, USER1, 200); - helper_controller - .escrow_helper - .create_lock(&mut app, USER1, WEEK * 3, 100f32) - .unwrap(); - // user deposits lp tokens - deposit_lp_tokens_to_generator( - &mut app, - &helper_controller.generator, - USER1, - &[(&lp_without_proxy, 10)], - ); - // NOTE: user virtual amount should be calculated correctly when deposit - // first we try query the virtual amount and grab the value - // secondly we call CheckpointUserBoost to update the user's virtual amount - // to latest value - // third we query the virtual amount - // lastly we compare it, should be equal - // 1: query before checkpoint - let virtual_amount_before_checkpoint: Uint128 = app - .wrap() - .query_wasm_smart( - &helper_controller.generator, - &QueryMsg::UserVirtualAmount { - lp_token: lp_without_proxy.to_string(), - user: USER1.to_string(), - }, - ) - .unwrap(); - // 2: perform checkpoint, user virtual amount will be updated - app.execute_contract( - Addr::unchecked(USER1), - helper_controller.generator.clone(), - &ExecuteMsg::CheckpointUserBoost { - generators: vec![lp_without_proxy.to_string()], - user: Some(USER1.to_string()), - }, - &[], - ) - .unwrap(); - // 3: query after checkpoint - let virtual_amount_after_checkpoint: Uint128 = app - .wrap() - .query_wasm_smart( - &helper_controller.generator, - &QueryMsg::UserVirtualAmount { - lp_token: lp_without_proxy.to_string(), - user: USER1.to_string(), - }, - ) - .unwrap(); - // 4: amounts should be the same, correct! - assert_eq!( - virtual_amount_after_checkpoint, - virtual_amount_before_checkpoint - ); - // let's see if its the same for a lp with proxy - // setup lp to use proxy - let vkr_staking_instance = - instantiate_valkyrie_protocol(&mut app, &val_token, &pair_val_eur, &lp_with_proxy); - let proxy_code_id = store_proxy_code(&mut app); - let proxy_instance = instantiate_proxy( - &mut app, - proxy_code_id, - &helper_controller.generator, - &pair_val_eur, - &lp_with_proxy, - &vkr_staking_instance, - &val_token, - ); - let msg = GeneratorExecuteMsg::MoveToProxy { - lp_token: lp_with_proxy.to_string(), - proxy: proxy_instance.to_string(), - }; - app.execute_contract( - Addr::unchecked(OWNER), - helper_controller.generator.clone(), - &msg, - &[], - ) - .unwrap(); - // verify proxy has been set - let reps: PoolInfoResponse = app - .wrap() - .query_wasm_smart( - &helper_controller.generator, - &QueryMsg::PoolInfo { - lp_token: lp_with_proxy.to_string(), - }, - ) - .unwrap(); - assert_eq!(Some(proxy_instance), reps.reward_proxy); - // mint lp tokens to user - mint_tokens(&mut app, pair_val_eur.clone(), &lp_with_proxy, &user1, 10); - // user deposits lp tokens - deposit_lp_tokens_to_generator( - &mut app, - &helper_controller.generator, - USER1, - &[(&lp_with_proxy, 10)], - ); - // similar with lp without proxy, let's perform the same verification - // 1: query before checkpoint - let virtual_amount_before_checkpoint: Uint128 = app - .wrap() - .query_wasm_smart( - &helper_controller.generator, - &QueryMsg::UserVirtualAmount { - lp_token: lp_with_proxy.to_string(), - user: USER1.to_string(), - }, - ) - .unwrap(); - // 2: perform checkpoint, user virtual amount will be updated - app.execute_contract( - Addr::unchecked(USER1), - helper_controller.generator.clone(), - &ExecuteMsg::CheckpointUserBoost { - generators: vec![lp_with_proxy.to_string()], - user: Some(USER1.to_string()), - }, - &[], - ) - .unwrap(); - // 3: query after checkpoint - let virtual_amount_after_checkpoint: Uint128 = app - .wrap() - .query_wasm_smart( - &helper_controller.generator, - &QueryMsg::UserVirtualAmount { - lp_token: lp_with_proxy.to_string(), - user: USER1.to_string(), - }, - ) - .unwrap(); - /* - 4: compare: error here - panicked at 'assertion failed: `(left == right)` - left: `Uint128(4)`, - right: `Uint128(10)` - */ - assert_eq!( - virtual_amount_before_checkpoint, - virtual_amount_after_checkpoint - ); -} - -fn store_token_code(app: &mut App) -> u64 { - let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, - )); - - app.store_code(astro_token_contract) -} - -fn store_factory_code(app: &mut App) -> u64 { - let factory_contract = Box::new( - ContractWrapper::new_with_empty( - astroport_factory::contract::execute, - astroport_factory::contract::instantiate, - astroport_factory::contract::query, - ) - .with_reply_empty(astroport_factory::contract::reply), - ); - - app.store_code(factory_contract) -} - -fn store_pair_code_id(app: &mut App) -> u64 { - let pair_contract = Box::new( - ContractWrapper::new_with_empty( - astroport_pair::contract::execute, - astroport_pair::contract::instantiate, - astroport_pair::contract::query, - ) - .with_reply_empty(astroport_pair::contract::reply), - ); - - app.store_code(pair_contract) -} - -fn store_pair_stable_code_id(app: &mut App) -> u64 { - let pair_contract = Box::new( - ContractWrapper::new_with_empty( - astroport_pair_stable::contract::execute, - astroport_pair_stable::contract::instantiate, - astroport_pair_stable::contract::query, - ) - .with_reply_empty(astroport_pair_stable::contract::reply), - ); - - app.store_code(pair_contract) -} - -fn store_coin_registry_code(app: &mut App) -> u64 { - let coin_registry_contract = Box::new(ContractWrapper::new_with_empty( - astroport_native_coin_registry::contract::execute, - astroport_native_coin_registry::contract::instantiate, - astroport_native_coin_registry::contract::query, - )); - - app.store_code(coin_registry_contract) -} - -fn instantiate_token(app: &mut App, token_code_id: u64, name: &str, cap: Option) -> Addr { - let name = String::from(name); - - let msg = TokenInstantiateMsg { - name: name.clone(), - symbol: name.clone(), - decimals: 6, - initial_balances: vec![], - mint: Some(MinterResponse { - minter: String::from(OWNER), - cap: cap.map(|v| Uint128::from(v)), - }), - marketing: None, - }; - - app.instantiate_contract(token_code_id, Addr::unchecked(OWNER), &msg, &[], name, None) - .unwrap() -} - -fn instantiate_coin_registry(mut app: &mut App, coins: Option>) -> Addr { - let coin_registry_id = store_coin_registry_code(&mut app); - let coin_registry_address = app - .instantiate_contract( - coin_registry_id, - Addr::unchecked(OWNER), - &astroport::native_coin_registry::InstantiateMsg { - owner: OWNER.to_string(), - }, - &[], - "Coin registry", - None, - ) - .unwrap(); - - if let Some(coins) = coins { - app.execute_contract( - Addr::unchecked(OWNER), - coin_registry_address.clone(), - &astroport::native_coin_registry::ExecuteMsg::Add { - native_coins: coins, - }, - &[], - ) - .unwrap(); - } - - coin_registry_address -} - -fn instantiate_factory( - mut app: &mut App, - factory_code_id: u64, - token_code_id: u64, - pair_code_id: u64, - pair_stable_code_id: Option, -) -> Addr { - let coin_registry_address = instantiate_coin_registry( - &mut app, - Some(vec![("uusd".to_string(), 6), ("cny".to_string(), 6)]), - ); - - let mut msg = FactoryInstantiateMsg { - pair_configs: vec![PairConfig { - code_id: pair_code_id, - pair_type: PairType::Xyk {}, - total_fee_bps: 100, - maker_fee_bps: 10, - is_disabled: false, - is_generator_disabled: false, - permissioned: false, - }], - token_code_id, - fee_address: None, - generator_address: None, - owner: String::from(OWNER), - whitelist_code_id: 0, - coin_registry_address: coin_registry_address.to_string(), - }; - - if let Some(pair_stable_code_id) = pair_stable_code_id { - msg.pair_configs.push(PairConfig { - code_id: pair_stable_code_id, - pair_type: PairType::Stable {}, - total_fee_bps: 100, - maker_fee_bps: 10, - is_disabled: false, - is_generator_disabled: false, - permissioned: false, - }); - } - - app.instantiate_contract( - factory_code_id, - Addr::unchecked(OWNER), - &msg, - &[], - "Factory", - None, - ) - .unwrap() -} - -fn instantiate_generator( - mut app: &mut App, - factory_instance: &Addr, - astro_token_instance: &Addr, - generator_controller: Option, -) -> Addr { - // Vesting - let vesting_contract = Box::new(ContractWrapper::new_with_empty( - astroport_vesting::contract::execute, - astroport_vesting::contract::instantiate, - astroport_vesting::contract::query, - )); - let owner = Addr::unchecked(OWNER); - let vesting_code_id = app.store_code(vesting_contract); - - let init_msg = VestingInstantiateMsg { - owner: owner.to_string(), - vesting_token: token_asset_info(astro_token_instance.clone()), - }; - - let vesting_instance = app - .instantiate_contract( - vesting_code_id, - owner.clone(), - &init_msg, - &[], - "Vesting", - None, - ) - .unwrap(); - - mint_tokens( - &mut app, - owner.clone(), - &astro_token_instance, - &owner, - 1_000_000_000_000000, - ); - - // Generator - let generator_contract = Box::new( - ContractWrapper::new_with_empty( - astroport_generator::contract::execute, - astroport_generator::contract::instantiate, - astroport_generator::contract::query, - ) - .with_reply_empty(astroport_generator::contract::reply), - ); - - let whitelist_code_id = store_whitelist_code(&mut app); - let generator_code_id = app.store_code(generator_contract); - - let init_msg = GeneratorInstantiateMsg { - owner: owner.to_string(), - factory: factory_instance.to_string(), - guardian: None, - start_block: Uint64::from(app.block_info().height), - astro_token: token_asset_info(astro_token_instance.clone()), - tokens_per_block: Uint128::new(10_000000), - vesting_contract: vesting_instance.to_string(), - generator_controller, - voting_escrow_delegation: None, - voting_escrow: None, - whitelist_code_id, - }; - - let generator_instance = app - .instantiate_contract( - generator_code_id, - owner.clone(), - &init_msg, - &[], - "Guage", - None, - ) - .unwrap(); - - // Vesting to generator: - let current_block = app.block_info(); - - let amount = Uint128::new(63072000_000000); - - let msg = Cw20ExecuteMsg::Send { - contract: vesting_instance.to_string(), - msg: to_json_binary(&VestingHookMsg::RegisterVestingAccounts { - vesting_accounts: vec![VestingAccount { - address: generator_instance.to_string(), - schedules: vec![VestingSchedule { - start_point: VestingSchedulePoint { - time: current_block.time.seconds(), - amount, - }, - end_point: None, - }], - }], - }) - .unwrap(), - amount, - }; - - app.execute_contract(owner, astro_token_instance.clone(), &msg, &[]) - .unwrap(); - - generator_instance -} - -fn instantiate_valkyrie_protocol( - app: &mut App, - valkyrie_token: &Addr, - pair: &Addr, - lp_token: &Addr, -) -> Addr { - // Valkyrie staking - let valkyrie_staking_contract = Box::new(ContractWrapper::new_with_empty( - valkyrie_lp_staking::entrypoints::execute, - valkyrie_lp_staking::entrypoints::instantiate, - valkyrie_lp_staking::entrypoints::query, - )); - - let valkyrie_staking_code_id = app.store_code(valkyrie_staking_contract); - - let init_msg = valkyrie::lp_staking::execute_msgs::InstantiateMsg { - token: valkyrie_token.to_string(), - pair: pair.to_string(), - lp_token: lp_token.to_string(), - whitelisted_contracts: vec![], - distribution_schedule: vec![ - ( - app.block_info().height, - app.block_info().height + 1, - Uint128::new(50_000_000), - ), - ( - app.block_info().height + 1, - app.block_info().height + 2, - Uint128::new(60_000_000), - ), - ], - }; - - let valkyrie_staking_instance = app - .instantiate_contract( - valkyrie_staking_code_id, - Addr::unchecked(OWNER), - &init_msg, - &[], - "Valkyrie staking", - None, - ) - .unwrap(); - - valkyrie_staking_instance -} - -fn store_proxy_code(app: &mut App) -> u64 { - let generator_proxy_to_vkr_contract = Box::new(ContractWrapper::new_with_empty( - generator_proxy_to_vkr::contract::execute, - generator_proxy_to_vkr::contract::instantiate, - generator_proxy_to_vkr::contract::query, - )); - - app.store_code(generator_proxy_to_vkr_contract) -} - -fn instantiate_proxy( - app: &mut App, - proxy_code: u64, - generator_instance: &Addr, - pair: &Addr, - lp_token: &Addr, - vkr_staking_instance: &Addr, - vkr_token_instance: &Addr, -) -> Addr { - let init_msg = ProxyInstantiateMsg { - generator_contract_addr: generator_instance.to_string(), - pair_addr: pair.to_string(), - lp_token_addr: lp_token.to_string(), - reward_contract_addr: vkr_staking_instance.to_string(), - reward_token_addr: vkr_token_instance.to_string(), - }; - - app.instantiate_contract( - proxy_code, - Addr::unchecked(OWNER), - &init_msg, - &[], - String::from("Proxy"), - None, - ) - .unwrap() -} - -fn register_lp_tokens_in_generator( - app: &mut App, - generator_instance: &Addr, - pools_with_proxy: Vec, -) { - let pools: Vec<(String, Uint128)> = pools_with_proxy.iter().map(|p| p.pool.clone()).collect(); - - app.execute_contract( - Addr::unchecked(OWNER), - generator_instance.clone(), - &GeneratorExecuteMsg::SetupPools { pools }, - &[], - ) - .unwrap(); - - for pool_with_proxy in &pools_with_proxy { - if let Some(proxy) = &pool_with_proxy.proxy { - app.execute_contract( - Addr::unchecked(OWNER), - generator_instance.clone(), - &GeneratorExecuteMsg::MoveToProxy { - lp_token: pool_with_proxy.pool.0.clone(), - proxy: proxy.to_string(), - }, - &[], - ) - .unwrap(); - } - } -} - -fn mint_tokens(app: &mut App, sender: Addr, token: &Addr, recipient: &Addr, amount: u128) { - let msg = Cw20ExecuteMsg::Mint { - recipient: recipient.to_string(), - amount: Uint128::from(amount), - }; - - app.execute_contract(sender, token.to_owned(), &msg, &[]) - .unwrap(); -} - -fn deposit_lp_tokens_to_generator( - app: &mut App, - generator_instance: &Addr, - depositor: &str, - lp_tokens: &[(&Addr, u128)], -) { - for (token, amount) in lp_tokens { - let msg = Cw20ExecuteMsg::Send { - contract: generator_instance.to_string(), - msg: to_json_binary(&GeneratorHookMsg::Deposit {}).unwrap(), - amount: Uint128::from(amount.to_owned()), - }; - - app.execute_contract(Addr::unchecked(depositor), (*token).clone(), &msg, &[]) - .unwrap(); - } -} - -fn check_token_balance(app: &mut App, token: &Addr, address: &Addr, expected: u128) { - let msg = Cw20QueryMsg::Balance { - address: address.to_string(), - }; - let res: StdResult = app.wrap().query_wasm_smart(token, &msg); - assert_eq!(res.unwrap().balance, Uint128::from(expected)); -} - -fn check_emission_balance( - app: &mut App, - generator: &Addr, - lp_token: &Addr, - user: &Addr, - expected: u128, -) { - let msg = GeneratorQueryMsg::UserVirtualAmount { - lp_token: lp_token.to_string(), - user: user.to_string(), - }; - - let res: Uint128 = app.wrap().query_wasm_smart(generator, &msg).unwrap(); - assert_eq!(Uint128::from(expected), res); -} - -fn check_pending_rewards( - app: &mut App, - generator_instance: &Addr, - token: &Addr, - depositor: &str, - (expected, expected_on_proxy): (u128, Option>), -) { - let msg = GeneratorQueryMsg::PendingToken { - lp_token: token.to_string(), - user: String::from(depositor), - }; - - let res: PendingTokenResponse = app - .wrap() - .query_wasm_smart(generator_instance.to_owned(), &msg) - .unwrap(); - - assert_eq!(res.pending.u128(), expected); - let pending_on_proxy = res.pending_on_proxy.map(|rewards| { - rewards - .into_iter() - .map(|Asset { amount, .. }| amount.u128()) - .collect::>() - }); - assert_eq!(pending_on_proxy, expected_on_proxy) -} - -fn create_pair( - app: &mut App, - factory: &Addr, - pair_type: Option, - init_param: Option, - assets: Vec, -) -> (Addr, Addr) { - app.execute_contract( - Addr::unchecked(OWNER), - factory.clone(), - &FactoryExecuteMsg::CreatePair { - pair_type: pair_type.unwrap_or_else(|| PairType::Xyk {}), - asset_infos: assets.clone(), - init_params: init_param, - }, - &[], - ) - .unwrap(); - - let res: PairInfo = app - .wrap() - .query_wasm_smart( - factory, - &FactoryQueryMsg::Pair { - asset_infos: assets, - }, - ) - .unwrap(); - - (res.contract_addr, res.liquidity_token) -} - -fn store_whitelist_code(app: &mut App) -> u64 { - let whitelist_contract = Box::new(ContractWrapper::new_with_empty( - astroport_whitelist::contract::execute, - astroport_whitelist::contract::instantiate, - astroport_whitelist::contract::query, - )); - - app.store_code(whitelist_contract) -} - -#[test] -fn migrate_proxy() { - let app = Rc::new(RefCell::new(App::default())); - - let astroport = astroport_address(); - - let user1 = Addr::unchecked("user1"); - let user2 = Addr::unchecked("user2"); - let user3 = Addr::unchecked("user3"); - - let generator = MockGeneratorBuilder::new(&app).instantiate(); - - let factory = generator.factory(); - - let astro = MockToken::try_from((&app, &generator.astro_token_info())).unwrap(); - let val = MockTokenBuilder::new(&app, "VAL").instantiate(); - - let pair = factory.instantiate_xyk_pair(&[astro.asset_info(), val.asset_info()]); - - pair.mint_allow_provide_and_stake( - &user1, - &[ - astro.asset_info().with_balance(Uint128::new(2000)), - val.asset_info().with_balance(Uint128::new(2000)), - ], - ); - - pair.mint_allow_provide_and_stake( - &user2, - &[ - astro.asset_info().with_balance(Uint128::new(2000)), - val.asset_info().with_balance(Uint128::new(2000)), - ], - ); - - pair.mint_allow_provide_and_stake( - &user3, - &[ - astro.asset_info().with_balance(Uint128::new(2000)), - val.asset_info().with_balance(Uint128::new(2000)), - ], - ); - - let lp_token = pair.lp_token(); - - let vkr_staking = instantiate_valkyrie_protocol( - &mut app.borrow_mut(), - &val.address, - &pair.address, - &lp_token.address, - ); - - val.mint(&vkr_staking, Uint128::new(110_000_000)); - - let proxy_code_id = store_proxy_code(&mut app.borrow_mut()); - - let proxy_to_vkr = instantiate_proxy( - &mut app.borrow_mut(), - proxy_code_id, - &generator.address, - &pair.address, - &lp_token.address, - &vkr_staking, - &val.address, - ); - - app.borrow_mut() - .execute_contract( - astroport.clone(), - generator.address.clone(), - &ExecuteMsg::MoveToProxy { - lp_token: lp_token.address.to_string(), - proxy: proxy_to_vkr.to_string(), - }, - &[], - ) - .unwrap(); - - assert_eq!( - app.borrow() - .wrap() - .query_wasm_smart::( - generator.address.to_string(), - &QueryMsg::RewardInfo { - lp_token: lp_token.address.to_string(), - }, - ) - .unwrap(), - RewardInfoResponse { - base_reward_token: generator.astro_token_info(), - proxy_reward_token: Some(val.address.clone()) - } - ); - - app.borrow_mut().next_block(1); - - app.borrow_mut() - .execute_contract( - user1.clone(), - generator.address.clone(), - &ExecuteMsg::ClaimRewards { - lp_tokens: vec![lp_token.address.to_string()], - }, - &[], - ) - .unwrap(); - - assert_eq!(val.balance(&user1), Uint128::new(10_000_000)); - assert_eq!(val.balance(&proxy_to_vkr), Uint128::new(40_000_000)); - - let new_proxy_to_vkr = instantiate_proxy( - &mut app.borrow_mut(), - proxy_code_id, - &generator.address, - &pair.address, - &lp_token.address, - &vkr_staking, - &val.address, - ); - - app.borrow_mut() - .execute_contract( - astroport.clone(), - generator.address.clone(), - &ExecuteMsg::MigrateProxy { - lp_token: lp_token.address.to_string(), - new_proxy: new_proxy_to_vkr.to_string(), - }, - &[], - ) - .unwrap(); - - let proxy_reward_holder: Addr = from_json( - &app.borrow() - .wrap() - .query_wasm_raw(generator.address.clone(), b"proxy_rewards_holder") - .unwrap() - .unwrap(), - ) - .unwrap(); - - assert_eq!(val.balance(&proxy_to_vkr), Uint128::new(0)); - assert_eq!(val.balance(&proxy_reward_holder), Uint128::new(40_000_000)); - - app.borrow_mut() - .execute_contract( - user2.clone(), - generator.address.clone(), - &ExecuteMsg::ClaimRewards { - lp_tokens: vec![lp_token.address.to_string()], - }, - &[], - ) - .unwrap(); - - assert_eq!(val.balance(&user1), Uint128::new(10_000_000)); - assert_eq!(val.balance(&user2), Uint128::new(20_000_000)); - assert_eq!(val.balance(&proxy_to_vkr), Uint128::new(0)); - assert_eq!(val.balance(&proxy_reward_holder), Uint128::new(20_000_000)); - - app.borrow_mut() - .execute_contract( - user3.clone(), - generator.address.clone(), - &ExecuteMsg::EmergencyWithdraw { - lp_token: lp_token.address.to_string(), - }, - &[], - ) - .unwrap(); - - assert_eq!(val.balance(&proxy_reward_holder), Uint128::new(20_000_000)); - - app.borrow_mut() - .execute_contract( - astroport.clone(), - generator.address.clone(), - &ExecuteMsg::SendOrphanProxyReward { - recipient: astroport.to_string(), - lp_token: lp_token.address.to_string(), - }, - &[], - ) - .unwrap(); - assert_eq!(val.balance(&proxy_reward_holder), Uint128::new(0)); - assert_eq!(val.balance(&astroport), Uint128::new(20_000_000)); - - assert_eq!( - app.borrow() - .wrap() - .query_wasm_smart::(generator.address.to_string(), &QueryMsg::PoolLength {}) - .unwrap(), - 1 - ); -} - -#[test] -fn check_that_last_reward_block_is_reset_when_pool_becomes_incentivised() { - let app = Rc::new(RefCell::new(App::default())); - - let astroport = astroport_address(); - - let mut generator = MockGeneratorBuilder::new(&app).instantiate(); - - let factory = generator.factory(); - - let astro = MockToken::try_from((&app, &generator.astro_token_info())).unwrap(); - let tkn1 = MockTokenBuilder::new(&app, "TKN1").instantiate(); - - let pair = factory.instantiate_xyk_pair(&[astro.asset_info(), tkn1.asset_info()]); - - pair.mint_allow_provide_and_stake( - &astroport, - &[ - astro.asset_info().with_balance(Uint128::new(1000_000000)), - tkn1.asset_info().with_balance(Uint128::new(1000_000000)), - ], - ); - - app.borrow_mut().update_block(|b| b.height += 1000); - - let lp_token = pair.lp_token(); - - generator.setup_pools(&[(lp_token.address.to_string(), Uint128::one())]); - - // if last reward block didn't reset, user would get incentives for 1000 blocks - assert_eq!( - generator - .pending_token(&lp_token.address, &astroport) - .pending, - Uint128::zero() - ); -} diff --git a/contracts/tokenomics/generator/tests/test_utils/controller_helper.rs b/contracts/tokenomics/generator/tests/test_utils/controller_helper.rs deleted file mode 100644 index f0c17f9d5..000000000 --- a/contracts/tokenomics/generator/tests/test_utils/controller_helper.rs +++ /dev/null @@ -1,345 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -use crate::test_utils::delegation_helper::DelegationHelper; -use crate::test_utils::escrow_helper::EscrowHelper; -use crate::{mint_tokens, store_whitelist_code}; -use anyhow::Result as AnyResult; -use astroport::asset::{token_asset_info, AssetInfo, PairInfo}; -use astroport::factory::{PairConfig, PairType}; -use astroport::vesting::{Cw20HookMsg as VestingHookMsg, VestingAccount}; -use astroport::vesting::{InstantiateMsg, VestingSchedule, VestingSchedulePoint}; -use astroport_governance::generator_controller::{ExecuteMsg, QueryMsg}; -use astroport_governance::generator_controller::{UserInfoResponse, VotedPoolInfoResponse}; -use astroport_mocks::cw_multi_test::{App, AppResponse, ContractWrapper, Executor}; -use cosmwasm_std::{to_json_binary, Addr, StdResult, Uint128, Uint64}; -use cw20::Cw20ExecuteMsg; - -pub struct ControllerHelper { - pub owner: String, - pub generator: Addr, - pub controller: Addr, - pub factory: Addr, - pub escrow_helper: EscrowHelper, - pub delegation_helper: DelegationHelper, - pub vesting: Addr, -} - -impl ControllerHelper { - pub fn init(router: &mut App, owner: &Addr) -> Self { - let escrow_helper = EscrowHelper::init(router, owner.clone()); - let delegation_helper = - DelegationHelper::init(router, owner.clone(), escrow_helper.escrow_instance.clone()); - - let pair_contract = Box::new( - ContractWrapper::new_with_empty( - astroport_pair::contract::execute, - astroport_pair::contract::instantiate, - astroport_pair::contract::query, - ) - .with_reply_empty(astroport_pair::contract::reply), - ); - - let pair_code_id = router.store_code(pair_contract); - - let factory_contract = Box::new( - ContractWrapper::new_with_empty( - astroport_factory::contract::execute, - astroport_factory::contract::instantiate, - astroport_factory::contract::query, - ) - .with_reply_empty(astroport_factory::contract::reply), - ); - - let factory_code_id = router.store_code(factory_contract); - - let msg = astroport::factory::InstantiateMsg { - pair_configs: vec![PairConfig { - code_id: pair_code_id, - pair_type: PairType::Xyk {}, - total_fee_bps: 100, - maker_fee_bps: 10, - is_disabled: false, - is_generator_disabled: false, - permissioned: false, - }], - token_code_id: escrow_helper.astro_token_code_id, - fee_address: None, - generator_address: None, - owner: owner.to_string(), - whitelist_code_id: 0, - coin_registry_address: "coin_registry".to_string(), - }; - - let factory = router - .instantiate_contract(factory_code_id, owner.clone(), &msg, &[], "Factory", None) - .unwrap(); - - let generator_contract = Box::new( - ContractWrapper::new_with_empty( - astroport_generator::contract::execute, - astroport_generator::contract::instantiate, - astroport_generator::contract::query, - ) - .with_reply_empty(astroport_generator::contract::reply), - ); - - let vesting_contract = Box::new(ContractWrapper::new_with_empty( - astroport_vesting::contract::execute, - astroport_vesting::contract::instantiate, - astroport_vesting::contract::query, - )); - let vesting_code_id = router.store_code(vesting_contract); - - let init_msg_vesting = InstantiateMsg { - owner: owner.to_string(), - vesting_token: token_asset_info(escrow_helper.astro_token.clone()), - }; - - let vesting_instance = router - .instantiate_contract( - vesting_code_id, - owner.clone(), - &init_msg_vesting, - &[], - "Vesting", - None, - ) - .unwrap(); - - let whitelist_code_id = store_whitelist_code(router); - let generator_code_id = router.store_code(generator_contract); - - let init_msg = astroport::generator::InstantiateMsg { - owner: owner.to_string(), - factory: factory.to_string(), - generator_controller: None, - voting_escrow_delegation: Some(delegation_helper.delegation_instance.to_string()), - voting_escrow: Some(escrow_helper.escrow_instance.to_string()), - guardian: None, - astro_token: token_asset_info(escrow_helper.astro_token.clone()), - tokens_per_block: Uint128::new(10_000000), - start_block: Uint64::from(router.block_info().height), - vesting_contract: vesting_instance.to_string(), - whitelist_code_id, - }; - - let generator = router - .instantiate_contract( - generator_code_id, - owner.clone(), - &init_msg, - &[], - String::from("Generator"), - None, - ) - .unwrap(); - - let controller_contract = Box::new(ContractWrapper::new_with_empty( - generator_controller::contract::execute, - generator_controller::contract::instantiate, - generator_controller::contract::query, - )); - - let controller_code_id = router.store_code(controller_contract); - let init_msg = astroport_governance::generator_controller::InstantiateMsg { - whitelisted_pools: vec![], - owner: owner.to_string(), - escrow_addr: escrow_helper.escrow_instance.to_string(), - generator_addr: generator.to_string(), - factory_addr: factory.to_string(), - pools_limit: 5, - }; - - let controller = router - .instantiate_contract( - controller_code_id, - owner.clone(), - &init_msg, - &[], - String::from("Controller"), - None, - ) - .unwrap(); - - mint_tokens( - router, - owner.clone(), - &escrow_helper.astro_token, - &owner, - 1_000_000_000_000000, - ); - - // Register vesting account - let msg = Cw20ExecuteMsg::Send { - contract: vesting_instance.to_string(), - msg: to_json_binary(&VestingHookMsg::RegisterVestingAccounts { - vesting_accounts: vec![VestingAccount { - address: generator.to_string(), - schedules: vec![VestingSchedule { - start_point: VestingSchedulePoint { - time: router.block_info().time.seconds(), - amount: Uint128::new(100000_000000), - }, - end_point: None, - }], - }], - }) - .unwrap(), - amount: Uint128::new(100000_000000), - }; - - router - .execute_contract(owner.clone(), escrow_helper.astro_token.clone(), &msg, &[]) - .unwrap(); - - // Setup controller in generator contract - router - .execute_contract( - owner.clone(), - generator.clone(), - &astroport::generator::ExecuteMsg::UpdateConfig { - vesting_contract: None, - generator_controller: Some(controller.to_string()), - guardian: None, - voting_escrow: None, - checkpoint_generator_limit: None, - voting_escrow_delegation: None, - }, - &[], - ) - .unwrap(); - - Self { - owner: owner.to_string(), - generator, - controller, - factory, - escrow_helper, - delegation_helper, - vesting: vesting_instance, - } - } - - pub fn init_cw20_token(&self, router: &mut App, name: &str) -> AnyResult { - let msg = astroport::token::InstantiateMsg { - name: name.to_string(), - symbol: name.to_string(), - decimals: 6, - initial_balances: vec![], - mint: None, - marketing: None, - }; - - router.instantiate_contract( - self.escrow_helper.astro_token_code_id, - Addr::unchecked(self.owner.clone()), - &msg, - &[], - name.to_string(), - None, - ) - } - - pub fn create_pool(&self, router: &mut App, token1: &Addr, token2: &Addr) -> AnyResult { - let asset_infos = vec![ - AssetInfo::Token { - contract_addr: token1.clone(), - }, - AssetInfo::Token { - contract_addr: token2.clone(), - }, - ]; - - router.execute_contract( - Addr::unchecked(self.owner.clone()), - self.factory.clone(), - &astroport::factory::ExecuteMsg::CreatePair { - pair_type: PairType::Xyk {}, - asset_infos: asset_infos.clone(), - init_params: None, - }, - &[], - )?; - - let res: PairInfo = router.wrap().query_wasm_smart( - self.factory.clone(), - &astroport::factory::QueryMsg::Pair { asset_infos }, - )?; - - Ok(res.liquidity_token) - } - - pub fn create_pool_with_tokens( - &self, - router: &mut App, - name1: &str, - name2: &str, - ) -> AnyResult { - let token1 = self.init_cw20_token(router, name1).unwrap(); - let token2 = self.init_cw20_token(router, name2).unwrap(); - - self.create_pool(router, &token1, &token2) - } - - pub fn vote( - &self, - router: &mut App, - user: &str, - votes: Vec<(impl Into, u16)>, - ) -> AnyResult { - let msg = ExecuteMsg::Vote { - votes: votes - .into_iter() - .map(|(pool, apoints)| (pool.into(), apoints)) - .collect(), - }; - - router.execute_contract(Addr::unchecked(user), self.controller.clone(), &msg, &[]) - } - - pub fn gauge(&self, router: &mut App, sender: &str) -> AnyResult { - router.execute_contract( - Addr::unchecked(sender), - self.controller.clone(), - &ExecuteMsg::TunePools {}, - &[], - ) - } - - pub fn query_user_info(&self, router: &mut App, user: &str) -> StdResult { - router.wrap().query_wasm_smart( - self.controller.clone(), - &QueryMsg::UserInfo { - user: user.to_string(), - }, - ) - } - - pub fn query_voted_pool_info( - &self, - router: &mut App, - pool: &str, - ) -> StdResult { - router.wrap().query_wasm_smart( - self.controller.clone(), - &QueryMsg::PoolInfo { - pool_addr: pool.to_string(), - }, - ) - } - - pub fn query_voted_pool_info_at_period( - &self, - router: &mut App, - pool: &str, - period: u64, - ) -> StdResult { - router.wrap().query_wasm_smart( - self.controller.clone(), - &QueryMsg::PoolInfoAtPeriod { - pool_addr: pool.to_string(), - period, - }, - ) - } -} diff --git a/contracts/tokenomics/generator/tests/test_utils/delegation_helper.rs b/contracts/tokenomics/generator/tests/test_utils/delegation_helper.rs deleted file mode 100644 index 468e9cf9f..000000000 --- a/contracts/tokenomics/generator/tests/test_utils/delegation_helper.rs +++ /dev/null @@ -1,174 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -use anyhow::Result; -use astroport_governance::voting_escrow_delegation as escrow_delegation; -use astroport_mocks::cw_multi_test::{App, AppResponse, Contract, ContractWrapper, Executor}; -use cosmwasm_std::{to_json_binary, Addr, Empty, QueryRequest, StdResult, Uint128, WasmQuery}; - -use cw721_base::helpers::Cw721Contract; - -pub struct DelegationHelper { - pub delegation_instance: Addr, - pub nft_instance: Addr, - pub nft_helper: Cw721Contract, -} - -impl DelegationHelper { - pub fn contract_escrow_delegation_template() -> Box> { - let contract = ContractWrapper::new_with_empty( - voting_escrow_delegation::contract::execute, - voting_escrow_delegation::contract::instantiate, - voting_escrow_delegation::contract::query, - ) - .with_reply_empty(voting_escrow_delegation::contract::reply); - Box::new(contract) - } - - pub fn contract_nft_template() -> Box> { - let contract = ContractWrapper::new( - astroport_nft::contract::execute, - astroport_nft::contract::instantiate, - astroport_nft::contract::query, - ); - Box::new(contract) - } - - fn instantiate_delegation( - router: &mut App, - owner: Addr, - escrow_addr: Addr, - delegation_id: u64, - nft_id: u64, - ) -> (Addr, Addr) { - let delegation_addr = router - .instantiate_contract( - delegation_id, - owner.clone(), - &escrow_delegation::InstantiateMsg { - owner: owner.to_string(), - nft_code_id: nft_id, - voting_escrow_addr: escrow_addr.to_string(), - }, - &[], - String::from("Astroport Escrow Delegation"), - None, - ) - .unwrap(); - - let res = router - .wrap() - .query::(&QueryRequest::Wasm( - WasmQuery::Smart { - contract_addr: delegation_addr.to_string(), - msg: to_json_binary(&escrow_delegation::QueryMsg::Config {}).unwrap(), - }, - )) - .unwrap(); - - (delegation_addr, res.nft_addr) - } - - pub fn init(router: &mut App, owner: Addr, escrow_addr: Addr) -> Self { - let delegation_id = - router.store_code(DelegationHelper::contract_escrow_delegation_template()); - let nft_id = router.store_code(DelegationHelper::contract_nft_template()); - - let (delegation_addr, nft_addr) = DelegationHelper::instantiate_delegation( - router, - owner, - escrow_addr, - delegation_id, - nft_id, - ); - - let nft_helper = cw721_base::helpers::Cw721Contract( - nft_addr.clone(), - Default::default(), - Default::default(), - ); - - DelegationHelper { - delegation_instance: delegation_addr, - nft_instance: nft_addr, - nft_helper, - } - } - - pub fn create_delegation( - &self, - router: &mut App, - user: &str, - bps: u16, - expire_time: u64, - token_id: String, - recipient: String, - ) -> Result { - router.execute_contract( - Addr::unchecked(user), - self.delegation_instance.clone(), - &escrow_delegation::ExecuteMsg::CreateDelegation { - bps, - expire_time, - token_id, - recipient, - }, - &[], - ) - } - - pub fn extend_delegation( - &self, - router: &mut App, - user: &str, - bps: u16, - expire_time: u64, - token_id: String, - ) -> Result { - router.execute_contract( - Addr::unchecked(user), - self.delegation_instance.clone(), - &escrow_delegation::ExecuteMsg::ExtendDelegation { - bps, - expire_time, - token_id, - }, - &[], - ) - } - - pub fn adjusted_balance( - &self, - router: &mut App, - user: &str, - timestamp: Option, - ) -> StdResult { - router - .wrap() - .query::(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: self.delegation_instance.to_string(), - msg: to_json_binary(&escrow_delegation::QueryMsg::AdjustedBalance { - account: user.to_string(), - timestamp, - }) - .unwrap(), - })) - } - - pub fn delegated_balance( - &self, - router: &mut App, - user: &str, - timestamp: Option, - ) -> StdResult { - router - .wrap() - .query::(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: self.delegation_instance.to_string(), - msg: to_json_binary(&escrow_delegation::QueryMsg::DelegatedVotingPower { - account: user.to_string(), - timestamp, - }) - .unwrap(), - })) - } -} diff --git a/contracts/tokenomics/generator/tests/test_utils/escrow_helper.rs b/contracts/tokenomics/generator/tests/test_utils/escrow_helper.rs deleted file mode 100644 index bee959b6f..000000000 --- a/contracts/tokenomics/generator/tests/test_utils/escrow_helper.rs +++ /dev/null @@ -1,347 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -use anyhow::Result; -use astroport::{staking as xastro, token as astro}; -use astroport_governance::voting_escrow::{ - Cw20HookMsg, ExecuteMsg, InstantiateMsg, LockInfoResponse, QueryMsg, VotingPowerResponse, -}; -use astroport_mocks::cw_multi_test::{App, AppResponse, ContractWrapper, Executor}; -use cosmwasm_std::{attr, to_json_binary, Addr, QueryRequest, StdResult, Uint128, WasmQuery}; -use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; - -pub const MULTIPLIER: u64 = 1000000; - -pub struct EscrowHelper { - pub owner: Addr, - pub astro_token: Addr, - pub staking_instance: Addr, - pub xastro_token: Addr, - pub escrow_instance: Addr, - pub astro_token_code_id: u64, -} - -impl EscrowHelper { - pub fn init(router: &mut App, owner: Addr) -> Self { - let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, - )); - - let astro_token_code_id = router.store_code(astro_token_contract); - - let msg = astro::InstantiateMsg { - name: String::from("Astro token"), - symbol: String::from("ASTRO"), - decimals: 6, - initial_balances: vec![], - mint: Some(MinterResponse { - minter: owner.to_string(), - cap: None, - }), - marketing: None, - }; - - let astro_token = router - .instantiate_contract( - astro_token_code_id, - owner.clone(), - &msg, - &[], - String::from("ASTRO"), - None, - ) - .unwrap(); - - let staking_contract = Box::new( - ContractWrapper::new_with_empty( - astroport_staking::contract::execute, - astroport_staking::contract::instantiate, - astroport_staking::contract::query, - ) - .with_reply_empty(astroport_staking::contract::reply), - ); - - let staking_code_id = router.store_code(staking_contract); - - let msg = xastro::InstantiateMsg { - owner: owner.to_string(), - token_code_id: astro_token_code_id, - deposit_token_addr: astro_token.to_string(), - marketing: None, - }; - let staking_instance = router - .instantiate_contract( - staking_code_id, - owner.clone(), - &msg, - &[], - String::from("xASTRO"), - None, - ) - .unwrap(); - - let res = router - .wrap() - .query::(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: staking_instance.to_string(), - msg: to_json_binary(&xastro::QueryMsg::Config {}).unwrap(), - })) - .unwrap(); - - let voting_contract = Box::new(ContractWrapper::new_with_empty( - voting_escrow::contract::execute, - voting_escrow::contract::instantiate, - voting_escrow::contract::query, - )); - - let voting_code_id = router.store_code(voting_contract); - - let msg = InstantiateMsg { - owner: owner.to_string(), - guardian_addr: Some("guardian".to_string()), - deposit_token_addr: res.share_token_addr.to_string(), - marketing: None, - logo_urls_whitelist: vec![], - }; - let voting_instance = router - .instantiate_contract( - voting_code_id, - owner.clone(), - &msg, - &[], - String::from("vxASTRO"), - None, - ) - .unwrap(); - - Self { - owner, - xastro_token: res.share_token_addr, - astro_token, - staking_instance, - escrow_instance: voting_instance, - astro_token_code_id, - } - } - - pub fn mint_xastro(&self, router: &mut App, to: &str, amount: u64) { - let amount = amount * MULTIPLIER; - let msg = Cw20ExecuteMsg::Mint { - recipient: String::from(to), - amount: Uint128::from(amount), - }; - let res = router - .execute_contract(self.owner.clone(), self.astro_token.clone(), &msg, &[]) - .unwrap(); - assert_eq!(res.events[1].attributes[1], attr("action", "mint")); - assert_eq!(res.events[1].attributes[2], attr("to", String::from(to))); - assert_eq!( - res.events[1].attributes[3], - attr("amount", Uint128::from(amount)) - ); - - let to_addr = Addr::unchecked(to); - let msg = Cw20ExecuteMsg::Send { - contract: self.staking_instance.to_string(), - msg: to_json_binary(&xastro::Cw20HookMsg::Enter {}).unwrap(), - amount: Uint128::from(amount), - }; - router - .execute_contract(to_addr, self.astro_token.clone(), &msg, &[]) - .unwrap(); - } - - pub fn check_xastro_balance(&self, router: &mut App, user: &str, amount: u64) { - let amount = amount * MULTIPLIER; - let res: BalanceResponse = router - .wrap() - .query_wasm_smart( - self.xastro_token.clone(), - &Cw20QueryMsg::Balance { - address: user.to_string(), - }, - ) - .unwrap(); - assert_eq!(res.balance.u128(), amount as u128); - } - - pub fn create_lock( - &self, - router: &mut App, - user: &str, - time: u64, - amount: f32, - ) -> Result { - let amount = (amount * MULTIPLIER as f32) as u64; - let cw20msg = Cw20ExecuteMsg::Send { - contract: self.escrow_instance.to_string(), - amount: Uint128::from(amount), - msg: to_json_binary(&Cw20HookMsg::CreateLock { time }).unwrap(), - }; - router.execute_contract( - Addr::unchecked(user), - self.xastro_token.clone(), - &cw20msg, - &[], - ) - } - - pub fn extend_lock_amount( - &self, - router: &mut App, - user: &str, - amount: f32, - ) -> Result { - let amount = (amount * MULTIPLIER as f32) as u64; - let cw20msg = Cw20ExecuteMsg::Send { - contract: self.escrow_instance.to_string(), - amount: Uint128::from(amount), - msg: to_json_binary(&Cw20HookMsg::ExtendLockAmount {}).unwrap(), - }; - router.execute_contract( - Addr::unchecked(user), - self.xastro_token.clone(), - &cw20msg, - &[], - ) - } - - pub fn deposit_for( - &self, - router: &mut App, - from: &str, - to: &str, - amount: f32, - ) -> Result { - let amount = (amount * MULTIPLIER as f32) as u64; - let cw20msg = Cw20ExecuteMsg::Send { - contract: self.escrow_instance.to_string(), - amount: Uint128::from(amount), - msg: to_json_binary(&Cw20HookMsg::DepositFor { - user: to.to_string(), - }) - .unwrap(), - }; - router.execute_contract( - Addr::unchecked(from), - self.xastro_token.clone(), - &cw20msg, - &[], - ) - } - - pub fn extend_lock_time(&self, router: &mut App, user: &str, time: u64) -> Result { - router.execute_contract( - Addr::unchecked(user), - self.escrow_instance.clone(), - &ExecuteMsg::ExtendLockTime { time }, - &[], - ) - } - - pub fn withdraw(&self, router: &mut App, user: &str) -> Result { - router.execute_contract( - Addr::unchecked(user), - self.escrow_instance.clone(), - &ExecuteMsg::Withdraw {}, - &[], - ) - } - - pub fn update_blacklist( - &self, - router: &mut App, - append_addrs: Option>, - remove_addrs: Option>, - ) -> Result { - router.execute_contract( - Addr::unchecked("owner"), - self.escrow_instance.clone(), - &ExecuteMsg::UpdateBlacklist { - append_addrs, - remove_addrs, - }, - &[], - ) - } - - pub fn query_user_vp(&self, router: &mut App, user: &str) -> StdResult { - router - .wrap() - .query_wasm_smart( - self.escrow_instance.clone(), - &QueryMsg::UserVotingPower { - user: user.to_string(), - }, - ) - .map(|vp: VotingPowerResponse| vp.voting_power.u128() as f32 / MULTIPLIER as f32) - } - - pub fn query_user_vp_at(&self, router: &mut App, user: &str, time: u64) -> StdResult { - router - .wrap() - .query_wasm_smart( - self.escrow_instance.clone(), - &QueryMsg::UserVotingPowerAt { - user: user.to_string(), - time, - }, - ) - .map(|vp: VotingPowerResponse| vp.voting_power.u128() as f32 / MULTIPLIER as f32) - } - - pub fn query_user_vp_at_period( - &self, - router: &mut App, - user: &str, - period: u64, - ) -> StdResult { - router - .wrap() - .query_wasm_smart( - self.escrow_instance.clone(), - &QueryMsg::UserVotingPowerAtPeriod { - user: user.to_string(), - period, - }, - ) - .map(|vp: VotingPowerResponse| vp.voting_power.u128() as f32 / MULTIPLIER as f32) - } - - pub fn query_total_vp(&self, router: &mut App) -> StdResult { - router - .wrap() - .query_wasm_smart(self.escrow_instance.clone(), &QueryMsg::TotalVotingPower {}) - .map(|vp: VotingPowerResponse| vp.voting_power.u128() as f32 / MULTIPLIER as f32) - } - - pub fn query_total_vp_at(&self, router: &mut App, time: u64) -> StdResult { - router - .wrap() - .query_wasm_smart( - self.escrow_instance.clone(), - &QueryMsg::TotalVotingPowerAt { time }, - ) - .map(|vp: VotingPowerResponse| vp.voting_power.u128() as f32 / MULTIPLIER as f32) - } - - pub fn query_total_vp_at_period(&self, router: &mut App, period: u64) -> StdResult { - router - .wrap() - .query_wasm_smart( - self.escrow_instance.clone(), - &QueryMsg::TotalVotingPowerAtPeriod { period }, - ) - .map(|vp: VotingPowerResponse| vp.voting_power.u128() as f32 / MULTIPLIER as f32) - } - - pub fn query_lock_info(&self, router: &mut App, user: &str) -> StdResult { - router.wrap().query_wasm_smart( - self.escrow_instance.clone(), - &QueryMsg::LockInfo { - user: user.to_string(), - }, - ) - } -} diff --git a/contracts/tokenomics/generator/tests/test_utils/mod.rs b/contracts/tokenomics/generator/tests/test_utils/mod.rs deleted file mode 100644 index 558107d82..000000000 --- a/contracts/tokenomics/generator/tests/test_utils/mod.rs +++ /dev/null @@ -1,36 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -use astroport_governance::utils::{get_period, EPOCH_START}; -use astroport_mocks::cw_multi_test::App; - -#[allow(clippy::all)] -#[allow(dead_code)] -pub mod controller_helper; -pub mod delegation_helper; -#[allow(clippy::all)] -#[allow(dead_code)] -pub mod escrow_helper; - -pub fn mock_app() -> App { - let mut app = App::default(); - app.next_block(EPOCH_START); - app -} - -pub trait AppExtension { - fn next_block(&mut self, time: u64); - fn block_period(&self) -> u64; -} - -impl AppExtension for App { - fn next_block(&mut self, time: u64) { - self.update_block(|block| { - block.time = block.time.plus_seconds(time); - block.height += 1 - }); - } - - fn block_period(&self) -> u64 { - get_period(self.block_info().time.seconds()).unwrap() - } -} diff --git a/packages/astroport_mocks/src/lib.rs b/packages/astroport_mocks/src/lib.rs index a7e0f2261..b4545d483 100644 --- a/packages/astroport_mocks/src/lib.rs +++ b/packages/astroport_mocks/src/lib.rs @@ -13,7 +13,6 @@ pub use { pair::{MockXykPair, MockXykPairBuilder}, pair_concentrated::{MockConcentratedPair, MockConcentratedPairBuilder}, pair_stable::{MockStablePair, MockStablePairBuilder}, - staking::{MockStaking, MockStakingBuilder}, token::{MockToken, MockTokenBuilder}, vesting::{MockVesting, MockVestingBuilder}, xastro::{MockXastro, MockXastroBuilder}, @@ -26,7 +25,6 @@ pub mod pair; pub mod pair_concentrated; pub mod pair_stable; pub mod shared_multisig; -pub mod staking; pub mod token; pub mod vesting; pub mod whitelist; diff --git a/packages/astroport_mocks/src/staking.rs b/packages/astroport_mocks/src/staking.rs deleted file mode 100644 index 3edae2abd..000000000 --- a/packages/astroport_mocks/src/staking.rs +++ /dev/null @@ -1,189 +0,0 @@ -use std::fmt::Debug; - -use cosmwasm_std::{to_binary, Addr, Api, CustomQuery, Storage, Uint128}; -use cw_multi_test::{Bank, ContractWrapper, Distribution, Executor, Gov, Ibc, Module, Staking}; -use schemars::JsonSchema; -use serde::de::DeserializeOwned; - -use astroport::{ - staking::{ConfigResponse, InstantiateMsg, QueryMsg}, - token::ExecuteMsg, -}; - -use crate::{ - astroport_address, token::MockTokenOpt, MockToken, MockTokenBuilder, WKApp, ASTROPORT, -}; - -pub fn store_code(app: &WKApp) -> u64 -where - B: Bank, - A: Api, - S: Storage, - C: Module, - X: Staking, - D: Distribution, - I: Ibc, - G: Gov, - C::ExecT: Clone + Debug + PartialEq + JsonSchema + DeserializeOwned + 'static, - C::QueryT: CustomQuery + DeserializeOwned + 'static, -{ - use astroport_staking as cnt; - let contract = Box::new( - ContractWrapper::new_with_empty( - cnt::contract::execute, - cnt::contract::instantiate, - cnt::contract::query, - ) - .with_reply_empty(cnt::contract::reply), - ); - - app.borrow_mut().store_code(contract) -} - -pub struct MockStakingBuilder { - pub app: WKApp, - pub astro_token: MockTokenOpt, -} - -impl MockStakingBuilder -where - B: Bank, - A: Api, - S: Storage, - C: Module, - X: Staking, - D: Distribution, - I: Ibc, - G: Gov, - C::ExecT: Clone + Debug + PartialEq + JsonSchema + DeserializeOwned + 'static, - C::QueryT: CustomQuery + DeserializeOwned + 'static, -{ - pub fn new(app: &WKApp) -> Self { - Self { - app: app.clone(), - astro_token: None, - } - } - - pub fn with_astro_token(mut self, astro_token: &MockToken) -> Self { - self.astro_token = Some(MockToken { - app: self.app.clone(), - address: astro_token.address.clone(), - }); - self - } - - pub fn instantiate(self) -> MockStaking { - let code_id = store_code(&self.app); - let astroport = astroport_address(); - - let astro_token = self - .astro_token - .unwrap_or_else(|| MockTokenBuilder::new(&self.app, "ASTRO").instantiate()); - - let token_code_id = crate::xastro::store_code(&self.app); - - let address = self - .app - .borrow_mut() - .instantiate_contract( - code_id, - astroport, - &InstantiateMsg { - owner: ASTROPORT.to_owned(), - deposit_token_denom: "".to_string(), - tracking_code_id: 0, - }, - &[], - "Astroport Staking", - Some(ASTROPORT.to_string()), - ) - .unwrap(); - - MockStaking { - app: self.app, - address, - } - } -} - -pub struct MockStaking { - pub app: WKApp, - pub address: Addr, -} - -impl MockStaking -where - B: Bank, - A: Api, - S: Storage, - C: Module, - X: Staking, - D: Distribution, - I: Ibc, - G: Gov, - C::ExecT: Clone + Debug + PartialEq + JsonSchema + DeserializeOwned + 'static, - C::QueryT: CustomQuery + DeserializeOwned + 'static, -{ - pub fn astro_token(&self) -> MockToken { - let config: ConfigResponse = self - .app - .borrow() - .wrap() - .query_wasm_smart(self.address.to_string(), &QueryMsg::Config {}) - .unwrap(); - - MockToken { - app: self.app.clone(), - address: Addr::unchecked(config.deposit_denom), - } - } - - pub fn enter(&self, sender: &Addr, amount: Uint128) { - let astro_token = self.astro_token(); - self.app - .borrow_mut() - .execute_contract( - sender.clone(), - astro_token.address, - &ExecuteMsg::Send { - amount, - msg: to_json_binary(&()).unwrap(), - contract: self.address.to_string(), - }, - &[], - ) - .unwrap(); - } - - pub fn xastro_token(&self) -> MockToken { - let config: ConfigResponse = self - .app - .borrow() - .wrap() - .query_wasm_smart(self.address.to_string(), &QueryMsg::Config {}) - .unwrap(); - - MockToken { - app: self.app.clone(), - address: Addr::unchecked(config.share_denom), - } - } - - pub fn leave(&self, sender: &Addr, amount: Uint128) { - let xastro_token = self.xastro_token(); - self.app - .borrow_mut() - .execute_contract( - sender.clone(), - xastro_token.address, - &ExecuteMsg::Send { - amount, - msg: to_json_binary(&()).unwrap(), - contract: self.address.to_string(), - }, - &[], - ) - .unwrap(); - } -} From 84fb6364a0581d2f22ce8538fd308b395494812e Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 25 Jan 2024 11:58:31 +0400 Subject: [PATCH 47/84] track balances over seconds --- .../tokenfactory_tracker/src/contract.rs | 25 +++++++++---------- .../tokenfactory_tracker/src/query.rs | 4 +-- .../staking/tests/staking_integration.rs | 2 +- .../astroport/src/tokenfactory_tracker.rs | 4 +-- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index 3986960ab..255f7585d 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -55,10 +55,9 @@ pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result Result Result(storage, &from, block_nanos, |balance| { + BALANCES.update::<_, StdError>(storage, &from, block_seconds, |balance| { Ok(balance.unwrap_or_default().checked_sub(amount)?) })?; } else { // Minted new tokens - TOTAL_SUPPLY_HISTORY.update::<_, StdError>(storage, block_nanos, |balance| { + TOTAL_SUPPLY_HISTORY.update::<_, StdError>(storage, block_seconds, |balance| { Ok(balance.unwrap_or_default().checked_add(amount)?) })?; } @@ -112,12 +111,12 @@ pub fn track_balances( // When burning tokens, the receiver is the token factory module address // Sending tokens to the module address isn't allowed by the chain if to.ne(&config.m) { - BALANCES.update::<_, StdError>(storage, &to, block_nanos, |balance| { + BALANCES.update::<_, StdError>(storage, &to, block_seconds, |balance| { Ok(balance.unwrap_or_default().checked_add(amount)?) })?; } else { // Burned tokens - TOTAL_SUPPLY_HISTORY.update::<_, StdError>(storage, block_nanos, |balance| { + TOTAL_SUPPLY_HISTORY.update::<_, StdError>(storage, block_seconds, |balance| { Ok(balance.unwrap_or_default().checked_sub(amount)?) })?; } @@ -233,7 +232,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user1".to_string(), - timestamp: Some(env.block.time.nanos()), + timestamp: Some(env.block.time.seconds()), }, ) .unwrap(); @@ -244,7 +243,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user2".to_string(), - timestamp: Some(env.block.time.nanos()), + timestamp: Some(env.block.time.seconds()), }, ) .unwrap(); @@ -255,7 +254,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user3".to_string(), - timestamp: Some(env.block.time.nanos()), + timestamp: Some(env.block.time.seconds()), }, ) .unwrap(); @@ -287,7 +286,7 @@ mod tests { deps.as_ref(), env.clone(), QueryMsg::TotalSupplyAt { - timestamp: Some(env.block.time.nanos()), + timestamp: Some(env.block.time.seconds()), }, ) .unwrap(); @@ -351,7 +350,7 @@ mod tests { env.clone(), QueryMsg::BalanceAt { address: "user1".to_string(), - timestamp: Some(env.block.time.nanos()), + timestamp: Some(env.block.time.seconds()), }, ) .unwrap(); diff --git a/contracts/periphery/tokenfactory_tracker/src/query.rs b/contracts/periphery/tokenfactory_tracker/src/query.rs index d2e5b7146..e82c56b3d 100644 --- a/contracts/periphery/tokenfactory_tracker/src/query.rs +++ b/contracts/periphery/tokenfactory_tracker/src/query.rs @@ -12,11 +12,11 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::BalanceAt { address, timestamp } => to_json_binary(&balance_at( deps, address, - timestamp.unwrap_or_else(|| env.block.time.nanos()), + timestamp.unwrap_or_else(|| env.block.time.seconds()), )?), QueryMsg::TotalSupplyAt { timestamp } => to_json_binary(&total_supply_at( deps, - timestamp.unwrap_or_else(|| env.block.time.nanos()), + timestamp.unwrap_or_else(|| env.block.time.seconds()), )?), } } diff --git a/contracts/tokenomics/staking/tests/staking_integration.rs b/contracts/tokenomics/staking/tests/staking_integration.rs index a155bebbc..6ff302732 100644 --- a/contracts/tokenomics/staking/tests/staking_integration.rs +++ b/contracts/tokenomics/staking/tests/staking_integration.rs @@ -339,7 +339,7 @@ fn test_historical_queries() { helper.unstake(&user2, 3_000000).unwrap(); history.insert( - helper.app.block_info().time.nanos() + 1, // balance change takes effect from the next block + helper.app.block_info().time.seconds() + 1, // balance change takes effect from the next block Entry { user1_bal: helper .app diff --git a/packages/astroport/src/tokenfactory_tracker.rs b/packages/astroport/src/tokenfactory_tracker.rs index fef14e7b9..d9143edf8 100644 --- a/packages/astroport/src/tokenfactory_tracker.rs +++ b/packages/astroport/src/tokenfactory_tracker.rs @@ -36,13 +36,13 @@ pub enum SudoMsg { #[cw_serde] #[derive(QueryResponses)] pub enum QueryMsg { - /// Return the balance of the given address at the given nanoseconds timestamp. + /// Return the balance of the given address at the given timestamp. #[returns(Uint128)] BalanceAt { address: String, timestamp: Option, }, - /// Return the total supply at the given nanoseconds timestamp. + /// Return the total supply at the given timestamp. #[returns(Uint128)] TotalSupplyAt { timestamp: Option }, } From cebdef17ee45c8371fcecefb6bea526cf17b4b74 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 31 Jan 2024 21:00:01 +0400 Subject: [PATCH 48/84] update Cargo.lock --- Cargo.lock | 195 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 145 insertions(+), 50 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c1223165b..dbed73625 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -70,15 +70,33 @@ dependencies = [ [[package]] name = "astroport" -version = "3.8.0" +version = "3.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "195a7441515817c0d114ec3bebe9faa21393781f796c179c38c75e3cfb9fb4ec" dependencies = [ - "astroport-circular-buffer", + "astroport-circular-buffer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw-utils 1.0.3", "cw20 0.15.1", "cw3", + "itertools 0.10.5", + "uint 0.9.5", +] + +[[package]] +name = "astroport" +version = "3.10.0" +dependencies = [ + "astroport-circular-buffer 0.1.0", + "cosmwasm-schema", + "cosmwasm-std", + "cw-asset", + "cw-storage-plus 0.15.1", + "cw-utils 1.0.3", + "cw20 0.15.1", + "cw3", "injective-math", "itertools 0.10.5", "test-case", @@ -96,6 +114,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-circular-buffer" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dac37467245383e7a6baeaaabc22dfd85a7b70ff5d693f757ba63bbc6e39d2c3" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "thiserror", +] + [[package]] name = "astroport-escrow-fee-distributor" version = "1.0.2" @@ -131,8 +161,8 @@ name = "astroport-factory" version = "1.7.0" dependencies = [ "anyhow", - "astroport 3.8.0", - "astroport-pair", + "astroport 3.10.0", + "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -151,7 +181,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", @@ -166,7 +196,7 @@ dependencies = [ name = "astroport-generator" version = "2.3.2" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "astroport-governance 1.4.0", "cosmwasm-schema", "cosmwasm-std", @@ -183,7 +213,7 @@ dependencies = [ name = "astroport-generator-proxy-template" version = "0.0.0" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -197,7 +227,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -209,7 +239,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -221,7 +251,7 @@ name = "astroport-governance" version = "1.4.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance#259fbc78d33f1b76e4213054babc95a1d9202f5c" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -234,10 +264,10 @@ name = "astroport-incentives" version = "1.0.0" dependencies = [ "anyhow", - "astroport 3.8.0", + "astroport 3.10.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-stable", "astroport-vesting", "cosmwasm-schema", @@ -246,7 +276,7 @@ dependencies = [ "cw-storage-plus 0.15.1", "cw-utils 1.0.3", "cw2 1.1.2", - "cw20 1.1.0", + "cw20 1.1.2", "cw20-base 1.1.0", "itertools 0.11.0", "proptest", @@ -258,11 +288,11 @@ name = "astroport-liquidity-manager" version = "1.0.3" dependencies = [ "anyhow", - "astroport 3.8.0", + "astroport 3.10.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-stable", "astroport-token", "astroport-whitelist", @@ -283,12 +313,12 @@ name = "astroport-maker" version = "1.4.0" dependencies = [ "astro-satellite-package", - "astroport 3.8.0", + "astroport 3.10.0", "astroport-escrow-fee-distributor", "astroport-factory 1.7.0", "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "astroport-native-coin-registry", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-stable", "astroport-token", "cosmwasm-schema", @@ -305,11 +335,11 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport 3.8.0", + "astroport 3.10.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-concentrated 2.3.0", "astroport-pair-stable", "astroport-shared-multisig", @@ -333,7 +363,7 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -347,7 +377,7 @@ dependencies = [ name = "astroport-native-coin-wrapper" version = "0.1.0" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -364,10 +394,10 @@ name = "astroport-oracle" version = "2.1.1" dependencies = [ "anyhow", - "astroport 3.8.0", + "astroport 3.10.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-stable", "astroport-token", "cosmwasm-schema", @@ -384,7 +414,7 @@ dependencies = [ name = "astroport-pair" version = "1.5.0" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-token", @@ -401,11 +431,29 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-pair" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd96bc64722440636ed6267a6945ccce076231a08467d6d46a4af4c4ff062c69" +dependencies = [ + "astroport 3.6.1", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw-utils 1.0.3", + "cw2 0.15.1", + "cw20 0.15.1", + "integer-sqrt", + "protobuf", + "thiserror", +] + [[package]] name = "astroport-pair-bonded" version = "1.0.1" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw2 0.15.1", @@ -417,7 +465,7 @@ dependencies = [ name = "astroport-pair-bonded-template" version = "1.0.0" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "astroport-pair-bonded", "cosmwasm-schema", "cosmwasm-std", @@ -450,8 +498,8 @@ name = "astroport-pair-concentrated" version = "2.3.0" dependencies = [ "anyhow", - "astroport 3.8.0", - "astroport-circular-buffer", + "astroport 3.10.0", + "astroport-circular-buffer 0.1.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-native-coin-registry", @@ -475,8 +523,8 @@ name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", - "astroport 3.8.0", - "astroport-circular-buffer", + "astroport 3.10.0", + "astroport-circular-buffer 0.1.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-native-coin-registry", @@ -500,7 +548,7 @@ name = "astroport-pair-transmuter" version = "1.0.0" dependencies = [ "anyhow", - "astroport 3.8.0", + "astroport 3.10.0", "astroport-factory 1.7.0", "astroport-token", "cosmwasm-schema", @@ -515,17 +563,41 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-pair-xyk-sale-tax" +version = "1.6.0" +dependencies = [ + "astroport 3.10.0", + "astroport-factory 1.7.0", + "astroport-mocks", + "astroport-pair 1.5.0", + "astroport-pair 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "astroport-token", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw-utils 1.0.3", + "cw2 0.15.1", + "cw20 0.15.1", + "integer-sqrt", + "proptest", + "prost 0.11.9", + "protobuf", + "test-case", + "thiserror", +] + [[package]] name = "astroport-pcl-common" version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.8.0", + "astroport 3.10.0", "astroport-factory 1.7.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", - "cw20 1.1.0", + "cw20 1.1.2", "itertools 0.11.0", "thiserror", ] @@ -535,9 +607,9 @@ name = "astroport-router" version = "1.2.0" dependencies = [ "anyhow", - "astroport 3.8.0", + "astroport 3.10.0", "astroport-factory 1.7.0", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -553,10 +625,10 @@ dependencies = [ name = "astroport-shared-multisig" version = "1.0.0" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "astroport-generator", "astroport-mocks", - "astroport-pair", + "astroport-pair 1.5.0", "astroport-pair-concentrated 2.3.0", "cosmwasm-schema", "cosmwasm-std", @@ -574,7 +646,7 @@ name = "astroport-staking" version = "2.0.0" dependencies = [ "anyhow", - "astroport 3.8.0", + "astroport 3.10.0", "astroport-tokenfactory-tracker", "cosmwasm-schema", "cosmwasm-std", @@ -591,7 +663,7 @@ dependencies = [ name = "astroport-token" version = "1.1.1" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -604,7 +676,7 @@ dependencies = [ name = "astroport-tokenfactory-tracker" version = "1.0.0" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -619,7 +691,7 @@ dependencies = [ name = "astroport-vesting" version = "1.3.2" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -635,7 +707,7 @@ dependencies = [ name = "astroport-whitelist" version = "1.0.1" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", @@ -647,7 +719,7 @@ dependencies = [ name = "astroport-xastro-outpost-token" version = "1.0.0" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -662,7 +734,7 @@ dependencies = [ name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport 3.8.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -1143,6 +1215,29 @@ dependencies = [ "zeroize", ] +[[package]] +name = "cw-address-like" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451a4691083a88a3c0630a8a88799e9d4cd6679b7ce8ff22b8da2873ff31d380" +dependencies = [ + "cosmwasm-std", +] + +[[package]] +name = "cw-asset" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "431e57314dceabd29a682c78bb3ff7c641f8bdc8b915400bb9956cb911e8e571" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-address-like", + "cw-storage-plus 1.2.0", + "cw20 1.1.2", + "thiserror", +] + [[package]] name = "cw-multi-test" version = "0.15.1" @@ -1361,9 +1456,9 @@ dependencies = [ [[package]] name = "cw20" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011c45920f8200bd5d32d4fe52502506f64f2f75651ab408054d4cfc75ca3a9b" +checksum = "526e39bb20534e25a1cd0386727f0038f4da294e5e535729ba3ef54055246abd" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1401,7 +1496,7 @@ dependencies = [ "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw2 1.1.2", - "cw20 1.1.0", + "cw20 1.1.2", "schemars", "semver", "serde", @@ -1417,7 +1512,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-utils 1.0.3", - "cw20 1.1.0", + "cw20 1.1.2", "schemars", "serde", "thiserror", @@ -3670,9 +3765,9 @@ dependencies = [ [[package]] name = "test-case" -version = "3.2.1" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f1e820b7f1d95a0cdbf97a5df9de10e1be731983ab943e56703ac1b8e9d425" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" dependencies = [ "test-case-macros", ] From fe649c10680095fbf2187ef463cc5cbe66a50439 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 31 Jan 2024 21:08:14 +0400 Subject: [PATCH 49/84] bump rust ver in CI --- .github/workflows/code_coverage.yml | 2 +- .github/workflows/tests_and_checks.yml | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index 2f56ae592..cde8807c0 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -47,7 +47,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.68.0 + toolchain: 1.72.0 override: true - name: Run cargo-tarpaulin diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index cc98f768f..4a71b4df0 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -48,7 +48,9 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.68.0 + # some deps require 1.72.0+ like cosm-rs which is used in tube-based tests + # however, we can't bump optimizer rust version because SEI still use CW VM which doesn't support wasm builds with rust >1.69.0 + toolchain: 1.72.0 override: true components: rustfmt, clippy From d3bdcbc9bc0eba43b5755b30164e49da7085fcb3 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 1 Feb 2024 13:07:38 +0400 Subject: [PATCH 50/84] adjust several tests --- Cargo.lock | 216 ++++++++++++------ .../pair_astro_converter/tests/helper.rs | 1 + contracts/pair_xyk_sale_tax/Cargo.toml | 2 +- contracts/pair_xyk_sale_tax/src/contract.rs | 5 +- .../pair_xyk_sale_tax/tests/integration.rs | 10 +- 5 files changed, 152 insertions(+), 82 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 17703f40c..333f597f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -42,7 +42,7 @@ dependencies = [ name = "astro-token-converter" version = "0.1.0" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -57,7 +57,7 @@ name = "astro-token-converter-neutron" version = "0.1.0" dependencies = [ "astro-token-converter", - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-std", "cw-utils 1.0.3", "cw2 1.1.2", @@ -81,11 +81,12 @@ dependencies = [ [[package]] name = "astroport" -version = "3.9.0" +version = "3.10.0" dependencies = [ "astroport-circular-buffer", "cosmwasm-schema", "cosmwasm-std", + "cw-asset", "cw-storage-plus 0.15.1", "cw-utils 1.0.3", "cw20 0.15.1", @@ -139,10 +140,10 @@ dependencies = [ [[package]] name = "astroport-factory" -version = "1.6.0" +version = "1.7.0" dependencies = [ "anyhow", - "astroport 3.9.0", + "astroport 3.10.0", "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", @@ -162,7 +163,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", @@ -178,8 +179,8 @@ name = "astroport-generator" version = "2.3.2" dependencies = [ "anyhow", - "astroport 3.9.0", - "astroport-factory 1.6.0", + "astroport 3.10.0", + "astroport-factory 1.7.0", "astroport-governance 1.4.0", "astroport-mocks", "astroport-native-coin-registry", @@ -213,7 +214,7 @@ dependencies = [ name = "astroport-generator-proxy-template" version = "0.0.0" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -227,7 +228,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -239,7 +240,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -251,7 +252,7 @@ name = "astroport-governance" version = "1.4.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance#259fbc78d33f1b76e4213054babc95a1d9202f5c" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -264,8 +265,8 @@ name = "astroport-incentives" version = "1.0.0" dependencies = [ "anyhow", - "astroport 3.9.0", - "astroport-factory 1.6.0", + "astroport 3.10.0", + "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", "astroport-pair-stable", @@ -276,7 +277,7 @@ dependencies = [ "cw-storage-plus 0.15.1", "cw-utils 1.0.3", "cw2 1.1.2", - "cw20 1.1.0", + "cw20 1.1.2", "cw20-base 1.1.0", "itertools 0.11.0", "proptest", @@ -288,8 +289,8 @@ name = "astroport-liquidity-manager" version = "1.0.3" dependencies = [ "anyhow", - "astroport 3.9.0", - "astroport-factory 1.6.0", + "astroport 3.10.0", + "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -310,12 +311,12 @@ dependencies = [ [[package]] name = "astroport-maker" -version = "1.3.1" +version = "1.4.0" dependencies = [ "astro-satellite-package", - "astroport 3.9.0", + "astroport 3.10.0", "astroport-escrow-fee-distributor", - "astroport-factory 1.6.0", + "astroport-factory 1.7.0", "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -335,8 +336,8 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport 3.9.0", - "astroport-factory 1.6.0", + "astroport 3.10.0", + "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -363,7 +364,7 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -377,7 +378,7 @@ dependencies = [ name = "astroport-native-coin-wrapper" version = "0.1.0" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -407,8 +408,8 @@ name = "astroport-oracle" version = "2.1.1" dependencies = [ "anyhow", - "astroport 3.9.0", - "astroport-factory 1.6.0", + "astroport 3.10.0", + "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", "astroport-pair-stable", @@ -444,8 +445,8 @@ dependencies = [ name = "astroport-pair" version = "1.5.0" dependencies = [ - "astroport 3.9.0", - "astroport-factory 1.6.0", + "astroport 3.10.0", + "astroport-factory 1.7.0", "astroport-mocks", "astroport-token", "cosmwasm-schema", @@ -465,8 +466,8 @@ dependencies = [ name = "astroport-pair-astro-xastro" version = "1.0.3" dependencies = [ - "astroport 3.9.0", - "astroport-factory 1.6.0", + "astroport 3.10.0", + "astroport-factory 1.7.0", "astroport-pair-bonded", "astroport-staking", "astroport-token", @@ -484,7 +485,7 @@ dependencies = [ name = "astroport-pair-bonded" version = "1.0.1" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw2 0.15.1", @@ -496,7 +497,7 @@ dependencies = [ name = "astroport-pair-bonded-template" version = "1.0.0" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "astroport-pair-bonded", "cosmwasm-schema", "cosmwasm-std", @@ -529,9 +530,9 @@ name = "astroport-pair-concentrated" version = "2.3.0" dependencies = [ "anyhow", - "astroport 3.9.0", + "astroport 3.10.0", "astroport-circular-buffer", - "astroport-factory 1.6.0", + "astroport-factory 1.7.0", "astroport-mocks", "astroport-native-coin-registry", "astroport-pair-concentrated 1.2.13", @@ -555,8 +556,8 @@ version = "1.0.0" dependencies = [ "anyhow", "astro-token-converter", - "astroport 3.9.0", - "astroport-factory 1.6.0", + "astroport 3.10.0", + "astroport-factory 1.7.0", "astroport-pair 1.3.3", "astroport-token", "cosmwasm-schema", @@ -577,9 +578,9 @@ name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", - "astroport 3.9.0", + "astroport 3.10.0", "astroport-circular-buffer", - "astroport-factory 1.6.0", + "astroport-factory 1.7.0", "astroport-mocks", "astroport-native-coin-registry", "astroport-token", @@ -597,17 +598,61 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-pair-transmuter" +version = "1.0.0" +dependencies = [ + "anyhow", + "astroport 3.10.0", + "astroport-factory 1.7.0", + "astroport-token", + "cosmwasm-schema", + "cosmwasm-std", + "cw-multi-test 0.20.0", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw2 1.1.2", + "cw20 0.15.1", + "derivative", + "itertools 0.12.0", + "thiserror", +] + +[[package]] +name = "astroport-pair-xyk-sale-tax" +version = "1.6.0" +dependencies = [ + "astroport 3.10.0", + "astroport-factory 1.7.0", + "astroport-mocks", + "astroport-pair 1.3.3", + "astroport-pair 1.5.0", + "astroport-token", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw-utils 1.0.3", + "cw2 0.15.1", + "cw20 0.15.1", + "integer-sqrt", + "proptest", + "prost 0.11.9", + "protobuf 2.28.0", + "test-case", + "thiserror", +] + [[package]] name = "astroport-pcl-common" version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.9.0", - "astroport-factory 1.6.0", + "astroport 3.10.0", + "astroport-factory 1.7.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", - "cw20 1.1.0", + "cw20 1.1.2", "itertools 0.11.0", "thiserror", ] @@ -617,8 +662,8 @@ name = "astroport-router" version = "1.2.0" dependencies = [ "anyhow", - "astroport 3.9.0", - "astroport-factory 1.6.0", + "astroport 3.10.0", + "astroport-factory 1.7.0", "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", @@ -635,7 +680,7 @@ dependencies = [ name = "astroport-shared-multisig" version = "1.0.0" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "astroport-generator", "astroport-mocks", "astroport-pair 1.5.0", @@ -655,7 +700,7 @@ dependencies = [ name = "astroport-staking" version = "1.1.0" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "astroport-token", "astroport-xastro-token", "cosmwasm-schema", @@ -673,7 +718,7 @@ dependencies = [ name = "astroport-token" version = "1.1.1" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -686,7 +731,7 @@ dependencies = [ name = "astroport-vesting" version = "1.3.2" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -702,7 +747,7 @@ dependencies = [ name = "astroport-whitelist" version = "1.0.1" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", @@ -714,7 +759,7 @@ dependencies = [ name = "astroport-xastro-outpost-token" version = "1.0.0" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -729,7 +774,7 @@ dependencies = [ name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -1051,6 +1096,29 @@ dependencies = [ "zeroize", ] +[[package]] +name = "cw-address-like" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451a4691083a88a3c0630a8a88799e9d4cd6679b7ce8ff22b8da2873ff31d380" +dependencies = [ + "cosmwasm-std", +] + +[[package]] +name = "cw-asset" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "431e57314dceabd29a682c78bb3ff7c641f8bdc8b915400bb9956cb911e8e571" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-address-like", + "cw-storage-plus 1.2.0", + "cw20 1.1.2", + "thiserror", +] + [[package]] name = "cw-multi-test" version = "0.15.1" @@ -1297,9 +1365,9 @@ dependencies = [ [[package]] name = "cw20" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011c45920f8200bd5d32d4fe52502506f64f2f75651ab408054d4cfc75ca3a9b" +checksum = "526e39bb20534e25a1cd0386727f0038f4da294e5e535729ba3ef54055246abd" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1353,7 +1421,7 @@ dependencies = [ "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw2 1.1.2", - "cw20 1.1.0", + "cw20 1.1.2", "schemars", "semver", "serde", @@ -1369,7 +1437,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-utils 1.0.3", - "cw20 1.1.0", + "cw20 1.1.2", "schemars", "serde", "thiserror", @@ -1705,7 +1773,7 @@ version = "0.0.0" source = "git+https://github.com/astroport-fi/astro-generator-proxy-contracts?branch=main#e573a8f8542b99015cac910f024a5f20fd793f3c" dependencies = [ "ap-valkyrie", - "astroport 3.9.0", + "astroport 3.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -2171,9 +2239,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2264,7 +2332,7 @@ dependencies = [ "itertools 0.11.0", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.48", ] [[package]] @@ -2382,9 +2450,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.32" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2658,7 +2726,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.48", ] [[package]] @@ -2691,7 +2759,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.48", ] [[package]] @@ -2834,7 +2902,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.28", + "syn 2.0.48", ] [[package]] @@ -2865,9 +2933,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.28" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -2931,9 +2999,9 @@ dependencies = [ [[package]] name = "test-case" -version = "3.2.1" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f1e820b7f1d95a0cdbf97a5df9de10e1be731983ab943e56703ac1b8e9d425" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" dependencies = [ "test-case-macros", ] @@ -2948,7 +3016,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.48", ] [[package]] @@ -2960,28 +3028,28 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.48", "test-case-core", ] [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.48", ] [[package]] diff --git a/contracts/pair_astro_converter/tests/helper.rs b/contracts/pair_astro_converter/tests/helper.rs index b2930be7f..38130a6ad 100644 --- a/contracts/pair_astro_converter/tests/helper.rs +++ b/contracts/pair_astro_converter/tests/helper.rs @@ -190,6 +190,7 @@ impl Helper { pair_type: pair_type.clone(), is_disabled: false, is_generator_disabled: false, + permissioned: false, }], token_code_id, generator_address: None, diff --git a/contracts/pair_xyk_sale_tax/Cargo.toml b/contracts/pair_xyk_sale_tax/Cargo.toml index 4233fb7d8..40ff80c5f 100644 --- a/contracts/pair_xyk_sale_tax/Cargo.toml +++ b/contracts/pair_xyk_sale_tax/Cargo.toml @@ -42,5 +42,5 @@ astroport-factory = { path = "../factory" } proptest = "1.0" prost = "0.11.5" astroport-mocks = { path = "../../packages/astroport_mocks/" } -astroport-pair-1_3_1 = { package = "astroport-pair", version = "1.3.1", features = ["library"] } +astroport-pair-1_3_3 = { package = "astroport-pair", version = "1.3.3", features = ["library"] } test-case = "3.3.1" diff --git a/contracts/pair_xyk_sale_tax/src/contract.rs b/contracts/pair_xyk_sale_tax/src/contract.rs index 78489c2c7..701e64ae6 100644 --- a/contracts/pair_xyk_sale_tax/src/contract.rs +++ b/contracts/pair_xyk_sale_tax/src/contract.rs @@ -1345,11 +1345,12 @@ pub fn migrate(deps: DepsMut, _env: Env, msg: MigrateMsg) -> Result {} + "1.3.0" | "1.3.1" | "1.3.3" | "1.4.0" | "1.5.0" => {} _ => return Err(StdError::generic_err( - "Incompatible version of astroport-pair. Only 1.3.0, 1.3.1, 1.4.0, and 1.5.0 supported.", + "Incompatible version of astroport-pair. Only 1.3.0, 1.3.1, 1.3.3, 1.4.0, and 1.5.0 supported.", ) .into()), } diff --git a/contracts/pair_xyk_sale_tax/tests/integration.rs b/contracts/pair_xyk_sale_tax/tests/integration.rs index 5963fd2ab..5243bdba4 100644 --- a/contracts/pair_xyk_sale_tax/tests/integration.rs +++ b/contracts/pair_xyk_sale_tax/tests/integration.rs @@ -47,12 +47,12 @@ fn store_standard_xyk_pair_code(app: &mut App, version: &str) -> u64 { "1.3.1" => { let code = Box::new( ContractWrapper::new_with_empty( - astroport_pair_1_3_1::contract::execute, - astroport_pair_1_3_1::contract::instantiate, - astroport_pair_1_3_1::contract::query, + astroport_pair_1_3_3::contract::execute, + astroport_pair_1_3_3::contract::instantiate, + astroport_pair_1_3_3::contract::query, ) - .with_migrate_empty(astroport_pair_1_3_1::contract::migrate) - .with_reply_empty(astroport_pair_1_3_1::contract::reply), + .with_migrate_empty(astroport_pair_1_3_3::contract::migrate) + .with_reply_empty(astroport_pair_1_3_3::contract::reply), ); app.store_code(code) } From 86098c0d192c8c7b671763ae39dafe51255af10a Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 1 Feb 2024 13:36:47 +0400 Subject: [PATCH 51/84] linter happy --- contracts/tokenomics/staking/src/contract.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index be898aec3..f5db429d3 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -350,7 +350,7 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::TotalShares {} => { let config = CONFIG.load(deps.storage)?; - let total_supply = deps.querier.query_supply(&config.xastro_denom)?.amount; + let total_supply = deps.querier.query_supply(config.xastro_denom)?.amount; to_json_binary(&total_supply) } QueryMsg::TotalDeposit {} => { @@ -358,7 +358,7 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { let total_deposit = deps .querier - .query_balance(&env.contract.address, &config.astro_denom)? + .query_balance(env.contract.address, config.astro_denom)? .amount; to_json_binary(&total_deposit) } @@ -367,12 +367,12 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { let amount = if timestamp.is_none() { let config = CONFIG.load(deps.storage)?; deps.querier - .query_balance(&address, &config.xastro_denom)? + .query_balance(&address, config.xastro_denom)? .amount } else { let tracker_config = TRACKER_DATA.load(deps.storage)?; deps.querier.query_wasm_smart( - &tracker_config.tracker_addr, + tracker_config.tracker_addr, &astroport::tokenfactory_tracker::QueryMsg::BalanceAt { address, timestamp }, )? }; @@ -382,11 +382,11 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::TotalSupplyAt { timestamp } => { let amount = if timestamp.is_none() { let config = CONFIG.load(deps.storage)?; - deps.querier.query_supply(&config.xastro_denom)?.amount + deps.querier.query_supply(config.xastro_denom)?.amount } else { let tracker_config = TRACKER_DATA.load(deps.storage)?; deps.querier.query_wasm_smart( - &tracker_config.tracker_addr, + tracker_config.tracker_addr, &astroport::tokenfactory_tracker::QueryMsg::TotalSupplyAt { timestamp }, )? }; From 4f1b270960cfe5a941e21defe69eded1aa43b562 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Mon, 12 Feb 2024 13:07:25 +0400 Subject: [PATCH 52/84] update Cargo.lock --- Cargo.lock | 255 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 203 insertions(+), 52 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f46d9c057..4adca2de5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,33 +39,42 @@ dependencies = [ ] [[package]] -name = "astroport" -version = "2.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d102b618016b3c1f1ebb5750617a73dbd294a3c941e54b12deabc931d771bc6e" +name = "astro-token-converter" +version = "0.1.0" dependencies = [ + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw-utils 0.15.1", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw2 1.1.2", "cw20 0.15.1", - "itertools 0.10.5", - "uint 0.9.5", + "thiserror", +] + +[[package]] +name = "astro-token-converter-neutron" +version = "0.1.0" +dependencies = [ + "astro-token-converter", + "astroport 3.11.0", + "cosmwasm-std", + "cw-utils 1.0.3", + "cw2 1.1.2", + "neutron-sdk", ] [[package]] name = "astroport" -version = "3.6.1" +version = "2.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "195a7441515817c0d114ec3bebe9faa21393781f796c179c38c75e3cfb9fb4ec" +checksum = "d102b618016b3c1f1ebb5750617a73dbd294a3c941e54b12deabc931d771bc6e" dependencies = [ - "astroport-circular-buffer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.3", + "cw-utils 0.15.1", "cw20 0.15.1", - "cw3", "itertools 0.10.5", "uint 0.9.5", ] @@ -74,7 +83,7 @@ dependencies = [ name = "astroport" version = "3.11.0" dependencies = [ - "astroport-circular-buffer 0.1.0", + "astroport-circular-buffer", "cosmwasm-schema", "cosmwasm-std", "cw-asset", @@ -99,18 +108,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-circular-buffer" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac37467245383e7a6baeaaabc22dfd85a7b70ff5d693f757ba63bbc6e39d2c3" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "thiserror", -] - [[package]] name = "astroport-escrow-fee-distributor" version = "1.0.2" @@ -137,7 +134,7 @@ dependencies = [ "cw-storage-plus 0.15.1", "cw2 0.15.1", "itertools 0.10.5", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -158,7 +155,7 @@ dependencies = [ "cw20 0.15.1", "itertools 0.10.5", "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -167,7 +164,7 @@ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ "astroport 3.11.0", - "cosmos-sdk-proto", + "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", @@ -204,7 +201,7 @@ dependencies = [ "cw721-base", "generator-controller", "generator-proxy-to-vkr", - "protobuf", + "protobuf 2.28.0", "thiserror", "valkyrie", "valkyrie-lp-staking", @@ -430,32 +427,29 @@ dependencies = [ [[package]] name = "astroport-pair" -version = "1.5.0" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555824ec226c179f27d0e6c7c808c99754c294da2e1843c4a8dcd72d2d0db71a" dependencies = [ - "astroport 3.11.0", - "astroport-factory 1.7.0", - "astroport-mocks", - "astroport-token", + "astroport 2.9.5", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.3", "cw2 0.15.1", "cw20 0.15.1", "integer-sqrt", - "proptest", - "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "thiserror", ] [[package]] name = "astroport-pair" version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd96bc64722440636ed6267a6945ccce076231a08467d6d46a4af4c4ff062c69" dependencies = [ - "astroport 3.6.1", + "astroport 3.11.0", + "astroport-factory 1.7.0", + "astroport-mocks", + "astroport-token", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -463,7 +457,9 @@ dependencies = [ "cw2 0.15.1", "cw20 0.15.1", "integer-sqrt", - "protobuf", + "proptest", + "prost 0.11.9", + "protobuf 2.28.0", "thiserror", ] @@ -536,7 +532,7 @@ version = "2.3.0" dependencies = [ "anyhow", "astroport 3.11.0", - "astroport-circular-buffer 0.1.0", + "astroport-circular-buffer", "astroport-factory 1.7.0", "astroport-mocks", "astroport-native-coin-registry", @@ -555,13 +551,36 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-pair-converter" +version = "1.0.0" +dependencies = [ + "anyhow", + "astro-token-converter", + "astroport 3.11.0", + "astroport-factory 1.7.0", + "astroport-pair 1.3.3", + "astroport-token", + "cosmwasm-schema", + "cosmwasm-std", + "cw-multi-test 0.20.0", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw2 1.1.2", + "cw20 0.15.1", + "derivative", + "itertools 0.12.0", + "serde", + "thiserror", +] + [[package]] name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", "astroport 3.11.0", - "astroport-circular-buffer 0.1.0", + "astroport-circular-buffer", "astroport-factory 1.7.0", "astroport-mocks", "astroport-native-coin-registry", @@ -607,8 +626,8 @@ dependencies = [ "astroport 3.11.0", "astroport-factory 1.7.0", "astroport-mocks", + "astroport-pair 1.3.3", "astroport-pair 1.5.0", - "astroport-pair 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -619,7 +638,7 @@ dependencies = [ "integer-sqrt", "proptest", "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "test-case", "thiserror", ] @@ -692,7 +711,7 @@ dependencies = [ "cw-utils 1.0.3", "cw2 0.15.1", "cw20 0.15.1", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -916,8 +935,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73c9d2043a9e617b0d602fbc0a0ecd621568edbf3a9774890a6d562389bd8e1c" dependencies = [ "prost 0.11.9", - "prost-types", - "tendermint-proto", + "prost-types 0.11.9", + "tendermint-proto 0.32.2", +] + +[[package]] +name = "cosmos-sdk-proto" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32560304ab4c365791fd307282f76637213d8083c1a98490c35159cd67852237" +dependencies = [ + "prost 0.12.3", + "prost-types 0.12.3", + "tendermint-proto 0.34.0", ] [[package]] @@ -983,7 +1013,7 @@ dependencies = [ "hex", "schemars", "serde", - "serde-json-wasm", + "serde-json-wasm 0.5.2", "sha2 0.10.8", "static_assertions 1.1.0", "thiserror", @@ -1816,6 +1846,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "hex" version = "0.4.3" @@ -2002,6 +2038,27 @@ dependencies = [ "autocfg", ] +[[package]] +name = "neutron-sdk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46f60e477bd71007d9ff78ae020ec1c6b3b47798578af6151429434d86472efc" +dependencies = [ + "bech32", + "cosmos-sdk-proto 0.20.0", + "cosmwasm-schema", + "cosmwasm-std", + "prost 0.12.3", + "prost-types 0.12.3", + "protobuf 3.3.0", + "schemars", + "serde", + "serde-json-wasm 1.0.1", + "speedate", + "tendermint-proto 0.34.0", + "thiserror", +] + [[package]] name = "num" version = "0.4.1" @@ -2288,6 +2345,15 @@ dependencies = [ "prost 0.11.9", ] +[[package]] +name = "prost-types" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" +dependencies = [ + "prost 0.12.3", +] + [[package]] name = "protobuf" version = "2.28.0" @@ -2297,6 +2363,26 @@ dependencies = [ "bytes", ] +[[package]] +name = "protobuf" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65f4a8ec18723a734e5dc09c173e0abf9690432da5340285d536edcb4dac190" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror", +] + +[[package]] +name = "protobuf-support" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6872f4d4f4b98303239a2b5838f5bbbb77b01ffc892d627957f37a22d7cfe69c" +dependencies = [ + "thiserror", +] + [[package]] name = "pyo3" version = "0.18.3" @@ -2509,6 +2595,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + [[package]] name = "rusty-fork" version = "0.3.0" @@ -2609,6 +2701,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde-json-wasm" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05da0d153dd4595bdffd5099dc0e9ce425b205ee648eb93437ff7302af8c9a5" +dependencies = [ + "serde", +] + [[package]] name = "serde_bytes" version = "0.11.12" @@ -2741,6 +2842,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "speedate" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "242f76c50fd18cbf098607090ade73a08d39cfd84ea835f3796a2c855223b19b" +dependencies = [ + "strum", + "strum_macros", +] + [[package]] name = "spki" version = "0.6.0" @@ -2773,6 +2884,28 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.48", +] + [[package]] name = "subtle" version = "2.5.0" @@ -2840,7 +2973,25 @@ dependencies = [ "num-derive", "num-traits", "prost 0.11.9", - "prost-types", + "prost-types 0.11.9", + "serde", + "serde_bytes", + "subtle-encoding", + "time", +] + +[[package]] +name = "tendermint-proto" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc728a4f9e891d71adf66af6ecaece146f9c7a11312288a3107b3e1d6979aaf" +dependencies = [ + "bytes", + "flex-error", + "num-derive", + "num-traits", + "prost 0.12.3", + "prost-types 0.12.3", "serde", "serde_bytes", "subtle-encoding", From fa8a81125ef08a5a33fd1b7c2e48cb89112b3977 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Mon, 12 Feb 2024 13:11:29 +0400 Subject: [PATCH 53/84] update Cargo.lock --- Cargo.lock | 68 +++++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dbed73625..9355f96af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "astroport" -version = "3.10.0" +version = "3.11.0" dependencies = [ "astroport-circular-buffer 0.1.0", "cosmwasm-schema", @@ -161,7 +161,7 @@ name = "astroport-factory" version = "1.7.0" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", @@ -181,7 +181,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", @@ -196,7 +196,7 @@ dependencies = [ name = "astroport-generator" version = "2.3.2" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "astroport-governance 1.4.0", "cosmwasm-schema", "cosmwasm-std", @@ -213,7 +213,7 @@ dependencies = [ name = "astroport-generator-proxy-template" version = "0.0.0" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -227,7 +227,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -239,7 +239,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -251,7 +251,7 @@ name = "astroport-governance" version = "1.4.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance#259fbc78d33f1b76e4213054babc95a1d9202f5c" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -264,7 +264,7 @@ name = "astroport-incentives" version = "1.0.0" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -288,7 +288,7 @@ name = "astroport-liquidity-manager" version = "1.0.3" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -313,7 +313,7 @@ name = "astroport-maker" version = "1.4.0" dependencies = [ "astro-satellite-package", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-escrow-fee-distributor", "astroport-factory 1.7.0", "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", @@ -335,7 +335,7 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -363,7 +363,7 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -377,7 +377,7 @@ dependencies = [ name = "astroport-native-coin-wrapper" version = "0.1.0" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -394,7 +394,7 @@ name = "astroport-oracle" version = "2.1.1" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -414,7 +414,7 @@ dependencies = [ name = "astroport-pair" version = "1.5.0" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-token", @@ -453,7 +453,7 @@ dependencies = [ name = "astroport-pair-bonded" version = "1.0.1" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw2 0.15.1", @@ -465,7 +465,7 @@ dependencies = [ name = "astroport-pair-bonded-template" version = "1.0.0" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "astroport-pair-bonded", "cosmwasm-schema", "cosmwasm-std", @@ -498,7 +498,7 @@ name = "astroport-pair-concentrated" version = "2.3.0" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-circular-buffer 0.1.0", "astroport-factory 1.7.0", "astroport-mocks", @@ -523,7 +523,7 @@ name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-circular-buffer 0.1.0", "astroport-factory 1.7.0", "astroport-mocks", @@ -548,7 +548,7 @@ name = "astroport-pair-transmuter" version = "1.0.0" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-factory 1.7.0", "astroport-token", "cosmwasm-schema", @@ -567,7 +567,7 @@ dependencies = [ name = "astroport-pair-xyk-sale-tax" version = "1.6.0" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-pair 1.5.0", @@ -592,7 +592,7 @@ name = "astroport-pcl-common" version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-factory 1.7.0", "cosmwasm-schema", "cosmwasm-std", @@ -607,7 +607,7 @@ name = "astroport-router" version = "1.2.0" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-factory 1.7.0", "astroport-pair 1.5.0", "astroport-token", @@ -625,7 +625,7 @@ dependencies = [ name = "astroport-shared-multisig" version = "1.0.0" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "astroport-generator", "astroport-mocks", "astroport-pair 1.5.0", @@ -646,7 +646,7 @@ name = "astroport-staking" version = "2.0.0" dependencies = [ "anyhow", - "astroport 3.10.0", + "astroport 3.11.0", "astroport-tokenfactory-tracker", "cosmwasm-schema", "cosmwasm-std", @@ -663,7 +663,7 @@ dependencies = [ name = "astroport-token" version = "1.1.1" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -676,7 +676,7 @@ dependencies = [ name = "astroport-tokenfactory-tracker" version = "1.0.0" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -691,7 +691,7 @@ dependencies = [ name = "astroport-vesting" version = "1.3.2" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -707,7 +707,7 @@ dependencies = [ name = "astroport-whitelist" version = "1.0.1" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", @@ -719,7 +719,7 @@ dependencies = [ name = "astroport-xastro-outpost-token" version = "1.0.0" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -734,7 +734,7 @@ dependencies = [ name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport 3.10.0", + "astroport 3.11.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -3353,9 +3353,9 @@ dependencies = [ [[package]] name = "serde-json-wasm" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16a62a1fad1e1828b24acac8f2b468971dade7b8c3c2e672bcadefefb1f8c137" +checksum = "9e9213a07d53faa0b8dd81e767a54a8188a242fdb9be99ab75ec576a774bfdd7" dependencies = [ "serde", ] From 78cdd170ec23778b5d65bef5d80a2532285d25e6 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 29 Feb 2024 16:40:12 +0500 Subject: [PATCH 54/84] mitigate possible issue with low IBC timeout --- .../periphery/astro_converter/src/contract.rs | 21 ++++++- .../periphery/astro_converter/src/error.rs | 5 ++ .../astro_converter_neutron/src/contract.rs | 60 ++++++++++++++----- packages/astroport/src/astro_converter.rs | 3 + 4 files changed, 71 insertions(+), 18 deletions(-) diff --git a/contracts/periphery/astro_converter/src/contract.rs b/contracts/periphery/astro_converter/src/contract.rs index 6dac8880d..ccfc652e8 100644 --- a/contracts/periphery/astro_converter/src/contract.rs +++ b/contracts/periphery/astro_converter/src/contract.rs @@ -11,7 +11,7 @@ use cw_utils::{must_pay, nonpayable}; use astroport::asset::{addr_opt_validate, validate_native_denom, AssetInfo}; use astroport::astro_converter::{ - Config, Cw20HookMsg, ExecuteMsg, InstantiateMsg, QueryMsg, DEFAULT_TIMEOUT, + Config, Cw20HookMsg, ExecuteMsg, InstantiateMsg, QueryMsg, DEFAULT_TIMEOUT, TIMEOUT_LIMITS, }; use crate::error::ContractError; @@ -159,6 +159,12 @@ pub fn ibc_transfer_for_burning( nonpayable(&info)?; match config.old_astro_asset_info { AssetInfo::NativeToken { denom } => { + let timeout = timeout.unwrap_or(DEFAULT_TIMEOUT); + ensure!( + TIMEOUT_LIMITS.contains(&timeout), + ContractError::InvalidTimeout {} + ); + let amount = querier.query_balance(&env.contract.address, &denom)?.amount; ensure!( @@ -166,7 +172,6 @@ pub fn ibc_transfer_for_burning( StdError::generic_err("No tokens to transfer") ); - let timeout = timeout.unwrap_or(DEFAULT_TIMEOUT); let burn_params = config.outpost_burn_params.expect("No outpost burn params"); let ibc_transfer_msg = IbcMsg::Transfer { @@ -460,7 +465,7 @@ mod testing { let res = ibc_transfer_for_burning( deps.as_ref().querier, env.clone(), - info, + info.clone(), config.clone(), None, ) @@ -475,6 +480,16 @@ mod testing { timeout: env.block.time.plus_seconds(DEFAULT_TIMEOUT).into(), }))] ); + + let err = ibc_transfer_for_burning( + deps.as_ref().querier, + env.clone(), + info, + config.clone(), + Some(1), + ) + .unwrap_err(); + assert_eq!(err, ContractError::InvalidTimeout {}) } fn querier_wrapper_with_cw20_balances( diff --git a/contracts/periphery/astro_converter/src/error.rs b/contracts/periphery/astro_converter/src/error.rs index 02433f16f..4d100a66d 100644 --- a/contracts/periphery/astro_converter/src/error.rs +++ b/contracts/periphery/astro_converter/src/error.rs @@ -2,6 +2,8 @@ use cosmwasm_std::{Addr, StdError}; use cw_utils::PaymentError; use thiserror::Error; +use astroport::astro_converter::TIMEOUT_LIMITS; + /// This enum describes pair contract errors #[derive(Error, Debug, PartialEq)] pub enum ContractError { @@ -24,4 +26,7 @@ pub enum ContractError { #[error("Invalid cw20 token: {0}")] UnsupportedCw20Token(Addr), + + #[error("Invalid timeout: {0}. Max {}s, min {}s", TIMEOUT_LIMITS.end(), TIMEOUT_LIMITS.start())] + InvalidTimeout {}, } diff --git a/contracts/periphery/astro_converter_neutron/src/contract.rs b/contracts/periphery/astro_converter_neutron/src/contract.rs index 1b370a25c..39abeaeda 100644 --- a/contracts/periphery/astro_converter_neutron/src/contract.rs +++ b/contracts/periphery/astro_converter_neutron/src/contract.rs @@ -2,9 +2,10 @@ use cosmwasm_std::entry_point; use cosmwasm_std::{ attr, coin, ensure, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdError, StdResult, + Uint128, }; use cw2::set_contract_version; -use cw_utils::nonpayable; +use cw_utils::may_pay; use neutron_sdk::bindings::msg::{IbcFee, NeutronMsg}; use neutron_sdk::bindings::query::NeutronQuery; use neutron_sdk::query::min_ibc_fee::query_min_ibc_fee; @@ -14,7 +15,9 @@ use astro_token_converter::contract::{convert, cw20_receive}; use astro_token_converter::error::ContractError; use astro_token_converter::state::CONFIG; use astroport::asset::AssetInfo; -use astroport::astro_converter::{Config, ExecuteMsg, InstantiateMsg, QueryMsg, DEFAULT_TIMEOUT}; +use astroport::astro_converter::{ + Config, ExecuteMsg, InstantiateMsg, QueryMsg, DEFAULT_TIMEOUT, TIMEOUT_LIMITS, +}; const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -63,17 +66,40 @@ pub fn ibc_transfer_for_burning( config: Config, timeout: Option, ) -> Result, ContractError> { - nonpayable(&info)?; + may_pay(&info, FEE_DENOM)?; match config.old_astro_asset_info { AssetInfo::NativeToken { denom } => { + let timeout = timeout.unwrap_or(DEFAULT_TIMEOUT); + ensure!( + TIMEOUT_LIMITS.contains(&timeout), + ContractError::InvalidTimeout {} + ); + let ntrn_bal = deps .querier .query_balance(&env.contract.address, FEE_DENOM)? .amount; + let fee = min_ntrn_ibc_fee( + query_min_ibc_fee(deps) + .map_err(|err| StdError::generic_err(err.to_string()))? + .min_fee, + ); + + let total_fee = fee + .ack_fee + .iter() + .chain(fee.recv_fee.iter()) + .chain(fee.timeout_fee.iter()) + .into_iter() + .filter(|a| a.denom == FEE_DENOM) + .fold(Uint128::zero(), |acc, coin| acc + coin.amount); + ensure!( - ntrn_bal.u128() >= 200_000, - StdError::generic_err("Contract requires at least 0.2 NTRN in balance") + ntrn_bal >= total_fee, + StdError::generic_err(format!( + "Contract requires at least {total_fee} {FEE_DENOM} in balance" + )) ); let amount = deps @@ -86,15 +112,8 @@ pub fn ibc_transfer_for_burning( StdError::generic_err("No tokens to transfer") ); - let timeout = timeout.unwrap_or(DEFAULT_TIMEOUT); let burn_params = config.outpost_burn_params.expect("No outpost burn params"); - let fee = min_ntrn_ibc_fee( - query_min_ibc_fee(deps) - .map_err(|err| StdError::generic_err(err.to_string()))? - .min_fee, - ); - let ibc_transfer_msg = NeutronMsg::IbcTransfer { source_port: "transfer".to_string(), source_channel: burn_params.old_astro_transfer_channel, @@ -225,7 +244,7 @@ mod testing { .unwrap_err(); assert_eq!( err.to_string(), - "Generic error: Contract requires at least 0.2 NTRN in balance" + "Generic error: Contract requires at least 200000 untrn in balance" ); let deps = mock_neutron_dependencies(&[( @@ -246,8 +265,14 @@ mod testing { env.contract.address.as_str(), &[coin(100, "ibc/old_astro"), coin(200_000, FEE_DENOM)], )]); - let res = ibc_transfer_for_burning(deps.as_ref(), env.clone(), info, config.clone(), None) - .unwrap(); + let res = ibc_transfer_for_burning( + deps.as_ref(), + env.clone(), + info.clone(), + config.clone(), + None, + ) + .unwrap(); assert_eq!( res.messages, @@ -270,5 +295,10 @@ mod testing { }, }))] ); + + let err = + ibc_transfer_for_burning(deps.as_ref(), env.clone(), info, config.clone(), Some(1)) + .unwrap_err(); + assert_eq!(err, ContractError::InvalidTimeout {}) } } diff --git a/packages/astroport/src/astro_converter.rs b/packages/astroport/src/astro_converter.rs index a26ec0c9a..f59b9bff4 100644 --- a/packages/astroport/src/astro_converter.rs +++ b/packages/astroport/src/astro_converter.rs @@ -1,10 +1,13 @@ use cosmwasm_schema::{cw_serde, QueryResponses}; use cw20::Cw20ReceiveMsg; +use std::ops::RangeInclusive; use crate::asset::AssetInfo; /// Default timeout for IBC transfer (5 minutes) pub const DEFAULT_TIMEOUT: u64 = 300; +/// Timeout limits for IBC transfer (from 2 to 10 minutes) +pub const TIMEOUT_LIMITS: RangeInclusive = 120..=600; /// Defines parameters for sending old IBCed ASTRO to the Hub for burning. #[cw_serde] From cf83f441967d4d3637ef27c1a49106d543ef4c05 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 29 Feb 2024 17:39:13 +0500 Subject: [PATCH 55/84] validate deposit token supply --- contracts/tokenomics/staking/src/contract.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/contracts/tokenomics/staking/src/contract.rs b/contracts/tokenomics/staking/src/contract.rs index f5db429d3..e3cedaf68 100644 --- a/contracts/tokenomics/staking/src/contract.rs +++ b/contracts/tokenomics/staking/src/contract.rs @@ -1,6 +1,6 @@ use cosmwasm_std::{ - attr, coin, entry_point, to_json_binary, BankMsg, Binary, CosmosMsg, Deps, DepsMut, Env, - MessageInfo, Reply, Response, StdError, StdResult, SubMsg, Uint128, WasmMsg, + attr, coin, ensure, entry_point, to_json_binary, BankMsg, Binary, CosmosMsg, Deps, DepsMut, + Env, MessageInfo, Reply, Response, StdError, StdResult, SubMsg, Uint128, WasmMsg, }; use cw2::set_contract_version; use cw_utils::{must_pay, parse_reply_instantiate_data, MsgInstantiateContractResponse}; @@ -58,7 +58,13 @@ pub fn instantiate( set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; // Validate that deposit_token_denom exists on chain - deps.querier.query_supply(&msg.deposit_token_denom)?; + let supply = deps.querier.query_supply(&msg.deposit_token_denom)?.amount; + ensure!( + !supply.is_zero(), + StdError::generic_err( + "deposit_token_denom has 0 supply which is likely sign of misconfiguration" + ) + ); // Validate addresses deps.api.addr_validate(&msg.token_factory_addr)?; From 824ece919fd65859321ac34f89c723873fdb8c91 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 29 Feb 2024 18:08:54 +0500 Subject: [PATCH 56/84] validate tracked denom --- .../tokenfactory_tracker/src/contract.rs | 3 +++ .../astroport_tokenfactory_tracker.wasm | Bin 201983 -> 173918 bytes 2 files changed, 3 insertions(+) mode change 100755 => 100644 contracts/periphery/tokenfactory_tracker/tests/test_data/astroport_tokenfactory_tracker.wasm diff --git a/contracts/periphery/tokenfactory_tracker/src/contract.rs b/contracts/periphery/tokenfactory_tracker/src/contract.rs index 255f7585d..241b39928 100644 --- a/contracts/periphery/tokenfactory_tracker/src/contract.rs +++ b/contracts/periphery/tokenfactory_tracker/src/contract.rs @@ -3,6 +3,7 @@ use cosmwasm_std::entry_point; use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, StdError, Storage, Uint128}; use cw2::set_contract_version; +use astroport::asset::validate_native_denom; use astroport::tokenfactory_tracker::{InstantiateMsg, SudoMsg}; use crate::error::ContractError; @@ -22,6 +23,8 @@ pub fn instantiate( deps.api.addr_validate(&msg.tokenfactory_module_address)?; + validate_native_denom(&msg.tracked_denom)?; + let config = Config { d: msg.tracked_denom.clone(), m: msg.tokenfactory_module_address, diff --git a/contracts/periphery/tokenfactory_tracker/tests/test_data/astroport_tokenfactory_tracker.wasm b/contracts/periphery/tokenfactory_tracker/tests/test_data/astroport_tokenfactory_tracker.wasm old mode 100755 new mode 100644 index 188cf06b897e1dc77980843d694a30c3e0b86689..2dadbfc449317b120917ecf03119270895704b72 GIT binary patch literal 173918 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 p=Y!z>X z_`>6w=*uZ{$1iiS@OoY!LHptXZEAJ_lk+*7*uu{@5|*{^1O{^BpgB@fT)#J}0j8|q zd%xD^M6T8i@D7D(nHZN!K=`$WAnDGGy9_Qc{-RTwr5^mK4tvSws(+@cJ&l8G`tn@J zC(|F1MxvlD*$2we>PQ<2S^{2HKHvtfO32C&!`1CT8*Yp12V-UTCHrL6M|tdP-qU$B zJ>HclN;>m~EGsWT0~q6QEKsM|b#v zJKl!cHx`e1-dh-b$=%nZDXH;zP7bP#e8^&3$dI0oM_6De+RW9 zdbWtq!+EA96P4sZhIYLwX#py@>Wbt$c|&|lb$reb>JV?&|Y6A}ofM&`+DNv4Ry#;#-cn?sV3u9+3bg-8t)t*1I>;xw;9{JiPRTU=J1t(5^?ob$ z6$mutdb6P~Dl^@tH!X0i%_=-EX7Sni6nbg2YB&x{@Clz;=G5 zu!u@^wVkVN>Y`O+c^2ww9$#8b{E)&F7uaVZI-x-E3EXB*h|@-hz`&q}bX%1qy`>Ke zJ-q!JlV-QR0k)wP2EB0w*j5x`4Chx%E=;O@2bi(aVsz=M@=wzGcrGy(u-wtcw1eb@ z6TFpft%(!5im|oD?(OIbXu7x^u87n`so-Z^ltghx0lsF%K@&)tBao{uEHe*KanshWdC z1*duew})9XzD=5Bs)2L|xqH-6HHx1%Knc6jJ-q^CwJOzwOkn?)bDp?%PQp`9<>p}Z zZegg~&j$fL?W=eX~ zmoHVWqHV(FwjLX~cHr04B9TQn#n#M@+UXeMWhOez5_Ndjx8N0HFDC(`iXUL9SoY|* zCUZ zZUomBCpK|)i)3hRL_@0$MLV%$;53dS*LkXI^b}MY@)gBv%-&}4)N{1{ewuLvLpK*`5eWAe6qutUjeP}w6!ae*FHCrjjs>A z*9)IMEC5qhyl2p%+MiDh?7$L0{F308OUsnxF1q6RA9Qw ze@<&^cFQebfvA=oTMhEn^o%eRB0w#+Vs%nR`Pa$Whyd-D!Lp3zyC+hr zG!`RmW6TyiA%sLJ7Cx9habuR=;N*>)V;Omy?U6Mp!yaTiw%=T4I}ofl?U=p!pe`4l z9Jy)7j6GdgI5TzAj_%C|^`d)-cY46}jIJrC=d)b%Iak{c9XxpOa_CuWVw23AXrD^n zvglj39;UOlNT^m)vpj%G*<<;31Ofm+I3t=rl){lx>G`=Y{r`26;g8`z`)6vCvF*0l zww5^xPSCGrS}QzZ>!N#8J6k9r^8b8LYaXk`vbnTWlfT0)M*`&9XHJ^7-{y9eZWV_fenYqGbW86@=&5hl=$6i<;Scq8TDR&O z_#@Ye6q?WK#aQ@j`zdA43}?75-owTb0AnavroDexk0AltjKK{{D)05&`yuL?2p`gq z%r%5dJf!PK^+yZg`;KyP((kmrsJJKZt0Tg3vhtp_fg(0=N}sL|hwtY{;6C(WE`FxE zLkF`5hxHV6Uf#fP9r_!oj&Emh;$YeSaPW7JTckR+xp(HhUpV)4iRNvhawf`VX*drC z_~AS}D}etWYrxCjQ3EdP7r1UoQJQ1~$ z-N!2+Hv_;g^Cq_Q>cg<4(ojZIeI-{3!D3o`>q?94Ep~MoSDSc(?K%s$YqE0gIC+7i z>QkVd74ORX0Nq^~X~QmXYuh}q}#3v8{Y1+gE1gV!sXKh>iT473&p_TK}tR7j^!g4^wTntn-F*vD%-@R;YK#ikH&%3iEjMY0u-i zX8s>@9%q>*;%d?RP#4gvqnUwc^HB#W%@yA};C2AGhMPT%rZSnqWp0>31LOy>anBtv z9y5dIn8AHKJ&VzQ`iBU8eYksSXQ-s$XKLn`PysDrc=q55zGL zg69BHR!mI1ittKyeBi5JJNe*i-t)2WDn76+O*qD>l)K9|^HR?_gVtM3F3^2qps@5mRD9-G2mSu@!oN&6lgPEAP>tqo_KIrXC_nzT%XgVXe(KjFk~Q$*Mi$mjj_#PL!oj< z*=f%@$i~Kj7U}j-rdMM9!HpSP7wSZL*G zDJn~gRZCpQEZ}fYs+%>f39E!XY;K}p2^bqVbiiZ~vlq4uHLQ2Vilp>`c#+CXy;bK(YY^j7oO%)>$k!^U3RE0GqrWxem` z*_|#LSY)mgQfEk1MbycKmKQH=#&EG*Rt#4os!LDaoA(~g2vBnsnU$d7&O$2Va4vY^ zBZa3_3oyAd>=3>-=x!@9@X1T_Tga@)??UTZ@eMBj)n4B2yCU(s@dNDeL+3#K zIt{k?;wdkK?Hp--4O)2l-MS+conM;gps{$CR86nix5GAL1e$t z6kt;|^P1LqJP${X9#4u}v{Di0f?}`=Kr=#J_?gPbFmLWb8U2y9&zFg*qPD~{w|kn2!;yRdJ2$0>t_}|oN~2RXz)x{%_yFMHUp+2aAvYkl?++QfseOz~${uf&mHEIi9s5D_6B5`rbS^okk!+9qf$CEa zV+=+C3i6L>u$)<$_~lCh`al^}Vz>nqT7_E_bT)=tc#s7s;SvEh2sfN2qPYq$s?9}d z!(3znh>aoCh$&SPzK&p$crim8)L}ZH@4ayZ@W|~LXyF99_)9*q-7g@6u1vSJkZ%Aa z_Y`JlC-A=8 z6nqup!BCLlA$5K$bEbeLd^izQJZLSQ4cQD>Uc}k38No74pM| z%26X23%4BRhp})V9bg3f6&%dEixyO}rQJ)?y5G*vrAZx^qsdemjZvphMpz1hh8N(8 zFvGZ-=ZArPM`)`AHGYOVFiU#i4i+KaQjNtpYf3Z~(cH*v3w4|id;fJJdnGb^Uub%< z4SWD~Nr&U0S^^lItC1MZU?~zCi(tzVy~F<)kr-}5gtKPYdMYH-I5hXZtk9K^)W(56 zDAfkQN%ezSy5d;pn>h>WDRGgZp5>cCCtCsaesr-mZrp8<`c@ixoDA{^QDE?xu?GVs zu8v4TS_4tez^!f?9K|_%@8JL(*R-3eM-9u1G}23x8PTsM-ypddnwDxR50}nQw$hy1 zWMZIXBscA6HY=Zys+w`EBDv+B$iw%{>%b=8QXF?-2q$d=9fs4pcRZEe)Ney+f;`XP zm09cbsQ?Sjr%SvF0NCbn?N=Zl)q^Od38L!O&BH>g5THyOtySqZ@N8?|z3y)P05ufd z;!jiI!8W2))(M-rzN`<;s|3mv_Cl9U#)xcidcic-mEsSCi9-!>0M`%NKXSKZ->~+w znlrwgwN0)dmx6j@L$iw-s-}z>8s_Zjpu=B2J#={Dn?P2PgaEQ*rBF$}kj9 z6vgmGQDD_Hz?XFRioX74lh(_Zp|Do~DpBo;D8$&8@JBnRcqpgm zB|9nq$zy=j$Yh;fR! zd3wPb`O~S2yg+^9l_>6NK&9-Yyr(Z->T}%9X4e@(DteE4wQ9`To7v4xL}c+8lB=DHQYK)?h;&(X#_N9`#4Jig&kPfVucIfplq=@ zRvZsmp;a|!=ii}i)edVp*#`K)lY!+_w7h(*QAC#>@n9RrP`hwZk~k290>Ka&1N=Y~+o^211KXq-fmo|^o|zBFyPA-iFC|+l zPuD8xg*6ON&FnOj4S*gkPBP;>W%XZ3Olk7j8$px$&h|^-B#o!WHeB39Yv?uLk?}`r ztpMnfj>?&|%PhNr7FG&s0nAZt;LL8bMG=@^VP`yr_iA=)FlSD>mc&l5W_EtnX2&XT zASYaihU|dch@81H%$ag>9)dbv5mbe_^#iL?u}5{47Vgb3)fy z|DGU;8v~(71cp8J)c<>p&YREi4r1C>pj006m*HYY8QNf0n2-gzmD8OY%XFX0XwWHY zyS8rZ)^TO^YFy-P*sSmYkVwHq7DYf96TxpJ$JD~yVhXzb3AbR7qC9q)8=95^K#veD-PWmKFh55rZdI}fC&)StIK$W6=e8Uz|M9fYxMTJmcErCCD(p?y`5e9 z7HYy|GBILr2TR|g{Dk&SQpxDsO-tVjK%L#>vEl8VgQ>92>_5YPp&NveofC=xBCFey zmrBh5(F+=#aON*+Xq1A+mI#f|-OUDZHNF@g7`npf&IyJ4uK*8iU>n;#F=20)!DEcK zY$BYrx69z673%ozi79)#3?AdW7Sk3$8@R$M~ z1m*}H+J0^c&y>=^zMoE_I4RO@F<71J13Mocm@1e%iDFkCoa<4mEfV1BG>PnfV->!52Y|e z_y``W!{L)PJPN^Mx`M~d?g{cZEyIr)YQAXagaUt7zz?!7hYhvn;A;pM@0=*@?J{~He`$E$?uowM-Z>asMla9f{bsYMFzBW9 zve{S3ujoWVi4A!19xhqd;ut-{H>#CW|6F^(UrmJs>V4r7*xm!x`P#Yq&`` zB$~53afrk99sE5Ut?$GE?yc|Ip&cHm??m4Z*LNdfB%G}8M4^ZNvT9*8jE2MYoha~V zeb)=UaBqDl3VWcwn;?$n;rdSWbF#i8e`GjQ--!Yai)w5{tB3?STHgu7@2&6Fgf-!T z`c4@9aDBHntPLmYJK^V<`ffcTH;06W)`BqXXnl84xG3CP-wA^rsP8t0jp5x_ zl)KlOc$vU?0~QgTI4SuuAjtMWL!Rh(B*GcnN_9f)dj3l_w3r((=+ua;*xiVkHY`Or~@*QYWH?0Tfo;P&f2laRT8)I8?zXM7D8Q z4{R;T^oOI>YXj)L^&Jx&9;oiBPam#7Rm~@tzCI+-8AFOq9jzaTLp`87qc7b(T;B;I zCmVMo;Y@vpu{s>8#uEgK!_^)0Y@TGYKZ7Sx$tCjB&WJ}%SJqU!`5^z%`o0i-S#ugfitRx0tk>Hr>%{{pWa0imxhB{v{)0PI)!zXO%;5$g&#gE`Qfuo;WkPUr=aG;T}QdT zU7y*;Ocv!zvDwm}ac#3&CHJiIbYcqpK$@k#z+m~Hg?Q?@H{}-L`s+7QRonJv$(5+Z zo^1k5E%&AulJSE!fVOS!tV;}YaB7(hB+aEWkWWN_#c47i|D@&MwB`6&3IN-N7pIg> zI{0=cEfX2Sw}{E{iSwBppGeDR$K?2O4=AW&Ygml3;|n97m=*RNt(7q~wOIODOoaiQ zMQmK$GgVvt%pr~1q>{@p25fjA zh76{PVY;0!=t02)V<1`h`}$tC$SnN)M|eN3_h#D&uhspC?$N$@|3=-fi4{V0Ji14Z zI>jeF3?X{9u-Ua5K?7#bY2M3X)4W%jp5{GU78c#x?Cwgy7B%^pnrz2j=)oyH=vLi2 ze-@!{^RA!KXDvSKr)BLqfsMX`)_X7UGEY1}nXJ*)qQdlzp;Bmv~Q2YNwGf4 z8H@xMmsf)L{?E(Rl3l^(QDj}9Y%)$(1x9nj!g$Y<5SA z(#Y@aDS01rI~P%={SA9K5^;67V_5J=+Q(Kfn;lL$t|V7_ZO+})QtcjF_U2^5*M{>(}jF*d%z}YQBD6{kpRY%LA|5&DWdj*I3fl z>vgC3y5#kXS#}U^vJ2}1uSc4%`}*3ZV?@dqA%mEybY;6i&~}aYOX25=Nkw-D?pSy8LFR_7KpV>bj)I$w!!1Ev zR$GE}IouMop|K@sLt{(OhI&g7Roa%I{HTnyTCp9a@7-|lQ}p(ITHWY)DdAT)oEYNQ z^^RVzH0(M>31L?!JT}BGVnA2IEYw>3i9j68VwI*2snJ3|w*Ix9Ni!NZw#esse73))=}I<5Ai7lKY}yy%6X)3g`85OiAW zMK1)M)_KtjL8tXz)X)jXa)nN0N}0`mtcgx9@#(nkp8z@$b!*&dCfpX0g~7bY`~N~i zC;aTfCPe6kU=u+^u>SL7(?yhPT^KfP@S+!jO&h)Fg<#VrFM1)^bg>t`5Nvv$7rhW{ z+U!LQo5&*^#hoqRU(iIRD^bOm6U82V>+mKFddox|N1loq^Mlb8%?lGb&N>tTnZF)= z7!AK4?hy_(4N(Wh#LVWkR3jh7oZe;T3eQ!YO4^J{#(Pu0JZ@1{LGSmvC>quCzz2)4Q-~nm}*7uCzzujiPdy zH@~j5$4)?dG?CD1zOJ;#PC$D!<+9y;U1^V|z)sB&%Z_g$+LCo*sT!#)-*^W^ScG@fM&(FVw+W$|RCRv^pbBD-RS(dwgR({VgPDY(im}PnzUsablqWLvEiiq_< z-6H-hCAQfJY?!lNxZ-8uhxXphYU&^-TI+!HR)5kHxmsY50|IF- z!|KV;Hc2#Dot3vkYxMggUnF*Kt;J3?7oWx#HHnB#(uu=pcj2m0pjES!=IO;a%Xlpp z4zHK3ceKE51r8x%x8(|p>lcGlq|#SB0k4;>YhH}8uoXCXXtiE1Tg$vy@hOVVuw%)W ztzUHLax0AN24DGl`I?3C307i9%GG3GB5?Ryh&kn$V&JEi>m{5RF3C&vcuVA4EM)bD z^QjK{aB!gGD{r z%e;DdTjM1zPkV{+)W5u=@e+Y;FKaGzPva%H4mKi#DmD@A6|Gt|!HgCwy=N&GKC$${ z{Z-B3lX=-YpjbfYY4qBCWU-qoXRg|DBe$$fANc|nG?@j9yAPEcZX$1`h4^OWYG`Hk zH5-lB5-w%AwlIX5+Eq^BRDkQc5yn}ac4dXs9#y@(tD2tXXjTOR%jTL6p1BBovHK0u4frHCTN-A;=Hgr>8 zr3pS*^`q)o{Qw6cwjoYURZO2UXv#SvF@8)32q3^Ph!WtLV7^VlWnA4WHuh@8V_=91r!_6+?ZkK+4hqBUP9ECZ>N|KqxTC&P1jaq} z9r{tYzrIrh#)qLmJHYn^-HE2^27xJo6`-HG0rE(5r!>37dBJJ%YxG^31Q~dRF;}+Q>A0;r z4PT&%aUqIrC^F)=bVCe-ZQBpxv<uj9DsiTk+c7=25*!*B$}d`Opl#(gbTLbn1Nm zQOXEtiext@`u|Ca_Us0jVH?1qU@N(As^q>Mb_JEK>#rXWGW`-RM_#bCGQB{Qsm)7^hhar)jl2Bi+$4jLwr&#j4e7 zrq?p9t#I4#i4V+%fz}1B@ZNZP(fG7(|1jQe8Ycv+6}}K}H!4D@6>k20|8_IlFSl=v zxBtUgL{-FY(^;Q z+r!y95_dFzIIEG;w$4{bsW340y@8a{Tns5&j+Bb;)naiOQkrNpL=#m>mNfXh0vn(F zW5Emo7LNU{uE2AyJ&_Yogt%Oq{gu#=+Z5R@5b8=C_7W>CK7$Mq>`3el?37hF$_UF; zj2pQLA|0)_GKh3qARq!#0+G%qwBFNsrJc|$OFodM_Q5-jC*-tgEuW8v1;=a-9VIP3 z!lqxy(^aVZdCi}L~BWTR`ZY61$7nf zL%vWpJQ5!hs=<|UXXE#b*8xwbY-e_O;7j^~J(%Ix6S@-ekYDX_9-A6RkNT~r(Twc| z>n-UhJ1MA#6D}TBC*_FtA)3aOp%>e}(^9)QsyxMdqU{{RM8#s&hy@OpcvbEg3OJ41 zndE>^2GUau2x4Q~hE^%eJ@LClxE+WQZrXPso=O%Y*(J2oUu9%|=_u4#`SPl*Fn7Ei z0BFJE`826qTSY93u&P0wrLDHAu}DjpvvzkFIS|jTwDT5~pg!4lTl_-kUoN(s`o<2ArDdAS}EMyzPg3-yMfpjr)P>0oV_%40n&mlt02m@h8M4>5sc{ zKPFnPu-ay9fO7Ar&Jvc%424_XLmPLdmnN_!0zBzpJ|B(@9~S%f+0$%3+|_&vIP5u7 zcwhZ|-##%I;7)5Ou?p@IFoCK87fX%;8!=qKHBcpVFfg_&1AR*YADRJBMehKt&l=j2 zDlnx%tfFeJ2ZBm(YEZju!k_wf9 z4t#8oL((bo%_%W+O3cD(An!F-8LHGqcv2H$3#zyc@Ime=>yppJRM9d_e)s@*a0i8~ zTO-s`{A||yURTIKSC~Bo08irJ1?C3$ac*zR`g$ofu}pg3Uhl*AZ1&}&|Nee}` z=UUn&hfMFP#A((BBs^1&CO|iy(dU9oS1Scz*KtXVuQioq-AB`E$Um)GTw2&U37U+o z&h|tfP?Eh~K)@TVyuBMrxgQM24 zWyEulQ`Wnxis1tD%LaVH2F#R;{0i>CE71*+{@QDCt`% z5n%MiQQBxPVnUvzz0YQjXiBdDkO6BR7R)k2M;+YIBYS9yj_-gsRE(4kx)3QLtbu}! z$mxq|<<^X8M_TwWzs#8+WI@Pk9-!Ld7s3TeTSC$_{4Sk*k!C>WMM}|trQCY&@g!(u z_M;X!9N>a{KTeyfVq}8dW_`QMa1I+0LZCCDW{)1H=?3cUu5qewH(~i;;n+r~?9E zBcO?Zi^FSVdnZruHVu3^Nb|FU^aS017C{O?w$xB12G8&zJfcRnXssn2-{L@GoKQ?; zuQqu@ApKG5n8@laQajAZ1HYX%K_ixxS@?K_5?TIS{RJH&lx#g%&%U^d<3-B+hY803 z_+|~5@x#%Y29W8nEn~21g+yI+J2i#2cZ*HD z8>7^W6BJN@_Klnw8Ki>Bj&3y~9t62eXLC#c8M(KLQDPu_zN}36-v}sHW1LiMExw3Y zwXV6dnB`afK%uQ3@V3k@^e|&~6P2^Dk^w*mkMh`gyHlFhXIPum5=<5zsVm3|Y~o5& zNzRMNcKx?v!`nm#f58kZgcVM_l%I%{U( z+pY)b01T0!6!B@GEI96j3bf&UrQ;}U%#y~Hf*{rwP7TLweBMTC4M=&j(b^sS#zyRN zLI_4prpUeb*`4&>f3Hcu|2J2h^apwDldi>|%evZ@dHAw1z=soz^#iYr?C@*poTKldkn0cPZlv~3-4z!P(f7H`&qr;7HRCV#Tcf$NMqyA z61X{@y8%0xOmKLM&p5)(aRrY#R>O`W%RX{|FZ<|t{n5GU@v=ydWE(LJkkz~)s#)V{ zzoJ*v27B-F>RcMj1T?ltV|mAcY#sJV=vuMfO9@-_MSf&7kzx{Bq!ipxy0Xk$PC?J-C0JlkAyp5TJh4$C^2Qz#yBZMfFqhdx0YP$O2m=bbS0|g{SLw{0D+%Z|86uGeH$3G(ni)Kh^1Ui~NTii~(dp&U@Ey}#C3+7x}9;_+8gaA}IsAxmtx%oH8hV5iF|+_H!)$|K~ul<(?j zG370QCDuuJrZq-O!h?!ejZym!86$eH;c6V6PGw+pxsNW7qnohvLKq$V3f?yzN5__~ z6-S3@aKack&K7dS*yyG;I@R89(YtEVTu%GwGPVn!!DB^UBpC!*3JWB@8Mht^3xlZ|9j!fQm>@P>>~;7QHlh zD1jBV+0)#e8JIgHS@@8pxRv(mBouNhsVZ#)VGB(~Q1ZdHv?P>Wl9919jfIX@{n9FE z!uuLbv|!$hwrv^xcwL>A?R(N_+Ht1=-A_FST_NwY0bQn%3Ha`${eua6c|%VVFjD2y z5O#y)J}+i}&>RX?vA^-1**4ib2wn(3Y)LN4Q_zWVk}?;bLW1Hg6FQE?(tDdPwF4uz ziN}{Jyyy(wUs(?e`(hgWYjKz+4Ne53Tl!B5i`f5(mHOYJdf`>W2_3 z%0fh!Krv3x;)TY`oS=;ZO{ur4Q#C>~Q>qcu4+PaWck5I@-InVf&8@Xhq)h{&P%CK} zccz@TSyk3EC*dh$lEhmQ&F-u~xlNJ#nhm;y&*ftKaB+foYN$ zV*?g&MtZI10pji=?k^Im7!WQJSIbL&TzYkR2Ow6IUKcU+<@|m9j+>j(tK#o)dJu29 z^djbHeJ~6BdNZmCJO*9W-tRhYP1>fh2BUv`DUulhDDBI%T%v}49cORsJC{pz(*3uS zHc|%&v3Jhz^wt@o9cF2~LT~bSQ94Qm4RCD4Ah&WQs>4HbhAT&A775ayW zYSiZYxZJOj=OZraz^9Qq#TX5#DNix>GH$>q=>^Cg_KfIfL6+hx_w-li(m&8Q%tflX zvK=ON?EGL{Jtw|vl%Dg`WxE+$brvBf#Yy$uv;3|^K_ZLs4|q~AdTjY!TgYT-Sz~~; z%I``V0p@X--&ODAn<>X^qa!tl280gd8eW?p?@FDGY%G@H3(N0HLWzh#Rn{}wxBRYZ zUmN;31S+DTN>m4(xfjl=Z;2nRD)~v+P>0bBUJ`W`q6RfjJkva_qGBqvuIUk1@5E{) zx5Kz+W0g1;-f7wl$5k)7?O=^&aEyq@@#1eSz^SD(#x@}_R%ylED#;r=O@TF5fUoPc zk%Xhi?vIJT8?E3&=n`CGStKkY>zJ!1W2zMTa9@HYUUS+cqrj!fv`C1&fU!EBMOOrS zyX4tyCbA`;o7Gh1U%NE9GM;*SqbYF^{`RQE)dbj@Y$cc_q!`U+FK4`pyoDcETYw+2 zjdnsDN4DbgLdHiE1@0)df~!Da?P_t>+_t57BMQ4j_(-Ju2iJr&VP>06ZKq$Op8Vyir$;{w zrb1xrON8jMzOZkQ0?Yey`vv!f&)Lk1`1ZN-3fa2a?9>9QwcFtjxmFbxWnR6-Ou>W0 zi;HVk%NU37 z@~bR0DS?~h4drR*&_vqPh79BAQvDh^GKoO(Wu?&uLZJss$-{|6y}zs;s{jd2R+_&J zA-m*q4CBVtx2tQWfLzIE+A%j$yu;-2j~LD|S$Nni6>wr@fBD*mK?=N(ko9};yq7Da>L zUI2za!7uY`;SaDI8>A?F!OZjyQI*jaRE0=1%e>rNu8LW4!T6{x*{ zV4)6v<&SsWBk;V-gN@4O+76-5bbwZp{j$g5*5&XPQ`gn#d&5b z&Z+aMIH$1lKd0h6ODaxGsPdeO6V<||3i8ZUoCwi>!YYpCuV}#ISypjaj)l&Jt2nKv zt>R$M`Ic32h&1}9syM{qKBwaRcTsVa;|Xo2^14JT&aE<@VXTw+)789hDJ#xDru9ZU zr2hYHz4_AlRGTk-3#&HRZrm*4283wjYE2RXmT67B*lcs=BgYBuD3<9J7jCwZ#j|9k zc^_G4zpR`PqtO{M-f)JD*@okx zIMq9Ih7i*&Q~l5xvf7;?Raa8tAh74l&ERF&-Du8`=qrE+)y|MncZR5a^@9ZQ(fn`D zka2ec*^wTlRX^&^5Pswg8C}5{!n1}m#JZ+Oe2z1O-NMQhY3D0?>d2(OnrbR%2=Aja zWE^M6>f&!qoQ^81q;g4`Gi21AA>%khRDiE*XUKT%3>mMTA?!5n_BWQ}YTKM4bcT>iKSG0N(HWxSWB^~&88Wua8FHC+VGef$ia~E1jC%EL z+g)rdUb0WYE!FCaU>A(PZs$zC@A5=P9Iy>)TE;y)SWGIXJSH*cD5BS-jhVW^$l|l+ z0Pxdlh*MHFW4H3kcuJquk;~jlieYxz1x@|6J0(2$#=h1E7H^}ktIk$tR+i4wc;cW% zuu=uKv2Q{u!ARj^vpzIOcIN&DdF{^IA(g=xna`LZ-u4DXSvE>Ta)6%ATyB7YL-<+} zV<(MWGBlT8sYzRGE#IP(dJVwa_;F+OWqbu7VG3?7zpk>D(=P>4V+idT92>@Q9EfVH zGLBOK43Wt@8q1Mn{>bdbs=&$*ZOga>G$+il8_Qv7SZ%6nN+U6ZOUuE+)1MYJ+@279`w#ceQ3&J)WQX%^*2rV2e5?aD~Cbo>)G&vgF zwa<3bm%@Df6ghM4k6y*0HzPb_fjKHC&}ik`Z=XkU>8zYuaz&&z{*%wqx=}8^hEKyC zE={)dMM^M&a)7f}aRsAX_RpLy-zqS2)D}ECjVz6!r zvUFKSyJH$tId(NZTe2lt1Op+L;vTqp^Vwv*vVf~2xHXckTmcDr=&<-~;RgqHN$I)y znndSn#;T7>k*L@+g(?a(X{X(R=Ex8m;AQ1v(YXDQIdSx{k*5y0b5_@O^5p060 z@`UlmSy8Qmk>A!dhq7X0Ko+a>lGjG&UVj{@waf_36$RsYPM3TpuBfz99cx`u(KgT7 zX;A1^j2E{hXZ!!S~GVG_tK!VIq}wyEGK! zLhUqcX*;(MIJP)_SQ@7omUF_vmF8 z4OK6q*2g5eJ)qbxY{LuD!xmX=$J)j%B*cU3I2rAB(5XXG5{br&IS0BiHrRG!D59lW zQ!9*I#iZQYmPbX@_zq@SZ@R7ludhSnIgv1i|E^ytG=79Jvi@RKOniCb1GeyA51OuH zsH@QUi_mL{l_BbD={d#A4p_GJ7)ieB7^DfsAWbx4kS4U8pJ>D&S=uuWNZvwZKDp5> z28q~y#UNSGzD1IgxJ;4c{B+q4HKDc095Fr~gQNiTMhsF6r)QQX>RHkuin_07Q9G5m zuV;CRw(A(AsYVQvHYvmyqzT0!RbBTOB=54vAX(VG#UM?&ac0UGgG>fqp~oP_3bg^j zmarC8?*UtizjvftE9HM`*uAytzQ$0$r~4X%-;0SigZB+dmc;O@AC!rRu~vvNHH-__ zek~yD-$cY%D;RZU%i(xTDgW#O0B0EvaDuh&Gz16Kk z^ch2RFpC4egux^7mlVR_qJhDMFt`u~57-%EyDEyZh;ejwWjG8dgu~j~#~_Zf%TJX? zKEPcBkapoys9MRD%7n&!ji{C`q^JR?nf6C2zV{14sDj##A?sn|pPfDMtPb;`3F zEJKQelkJg)voYFP!;d&^wml7}z6TN-tKaXisPGI(@z6J>uu8U+d^-Kicxw2Sw_&?G zlv08P?vv?`w5O$XX7fsKlt^DYK_j?Q<>DB>9Q%UyGyAbN+DJchodSV5jFRGw4w5v< z9@IVLcuadxb+M#j>+E%W%!JSpx^THRB#<115Lsn@(6K4^+yThmK~e^@(`ChLGRy}Y zsA=7EpPEvCBveQb7gEj7%h`pCZuHe;2EN61_51pi$1lMzr84j3X}t)9lX zl#hdP*2D6h6N}D@cH~-9{ND+ZFAbtlMN1r zy49Qu4E21R7Yg@O^){h^-t>*u`^ZZ5Vm-^kN6&|5XY}b(@ERBYgY$iQ>+h`aDWsg$ z*$TjWIhC?-7e%$n2Ap}bu1ZiqByOqfY7Ut61`s8O&J1(rz=u5{QeN^I3TbZ&MgoJ> zpDsBBdT(kwA*0|vV?r*SfXM|C?$My8!Uy$3>MTQiu8a3L-8M=-q9Vnjl8?udBGX36 zCslGR-26d)lwu8Hy6aA_Q)JmF`DzuJSh1wYkdneN_4Aihaw@!4KV6=)?edtekLyqD z_yb%Qzm{wL*lgrs6V+U-Obb zbHA##8p3@#$aEQW=(tFu@#!u4W;`6ekWYpER=bbnE&8UrXtM6&k)~D1-Y9vWH_}9a z2VzO#cBACOD!F=5osWCTUSBwEYr3TO6J+_~J4Lh!XN*PArx@nN=yl!d(?0N#yxYf0aw>Ed>qMvhK2 zy@y4L!CMoTF||OW_uWmVR$&LpU(SXde-?Ae!3DLgvYsXlEF>=^t)QhrP-kPF2o4G7 z#x~B=-9Q3!tg)aN>sWrqMHV=)@YQHE#X)Tsw;5>J{V!Ny_I|5yOX)~+8=Eb}#EmRN z1KYeHVZ$fjsiy+Fsy5tfK4WhE8U8G$h-q-NzrF?p?!RnK|H_n}htx94g8*@KmVi!U z3t(eG|LA>JD3j{}kYjurP;Wq1P6NE7y>*E~BC@Goag$aGs^Mq3xPO?T52(_zh)pR} zc9HXwger=(K*sGKFns>CcWvY)ec-6eJlyz-u=#+cip~URwZmppQIs~D@-4(B?>^7C zn$fSoCR|gr#jn`5)^WMp8Hi1lZ)}yvzGN)IQIdTEtMD`ILVu+vk@g9&$JAqVTYwLi zgvw_k>HXqxSg8%mbHT`K7{(YH15LsQl6iYzXYM88)Ag;0B>Y)25BzN+FV~g2M6Vl( zb|gQJ|B*O~GS7JSTV=#$f*#;;mDtFZ>RE5I`nUkQ_7K$T}ufz6Z65?qtbm*N0NKybHO5PTsD*;2fY#%HtZjBQB*#So!n$2!c* zN~x}e$dbAqsp^`|X6!U7G8Bsjsc4h($|@&vCO-87CKtm6sg17m2QT!W7l};(9TQbz z;-eFzVHLk4#Gg>hTtB5Cn|XC}CArc0dBGr$o&9kV`yy&|zyjF#{dT4RxN@DODf?X$ zsJ`4~tf@z%T=R9k{2XeAs@#njDs;Wnlot#OdRQV(H zl%eY~BNPwK^-aL8KcXaw^#kol)(yv!zbRA1mEDZ%#umuD8PkoeYPp%v4f4l|jp_!b z#hFYx>sgiw_$4iwVu|5cga~VFDR%^rei4vPBp}U_VxC!`npUGq z|3-C{x&R9;sD`j`Z?1E(iM~~2b$s~LuPZCJ@Q4{8e?fnY!LzfyEdvrEKKk&fcX0^S zD2LQS-eH0E>@jZ_u&jBJvHkm`n=ALx!ovNDCW!9STW;pP&->JA6D>=63>!hkDc)$) zYCaWdN(Ez-sebMW6)RS*>L1a$}Ak*Hs~Ih^&oI!-mR?#8Va{pGVRj67WG5OJ()<#m z^W(U{$sl~vMx}kU`TKf z@e-qaUnJQQ2_jb z4oHEqN?5^jP)w$ZtdSF#ul-Bb{~k+8{tF=|kTtoq)iU+8v`m!UStc35S~RBg<_e&v&es9k5&yrCu9Er)iJhIigsDCC6c~rxWbWTFJmSxC}@C$U1}e9hqKR`PQn{v5o%9B%_tm4^YF7A@K$Vx_!d>6s;DZ0v4!6 zW{uuL>PsciL31Mmh-MNNyvx$57@+Avb0NkZYKa?%G)ao(R8L@KbbUuF7kNaJG9DL~73IuVY3o-T19uaGQs zwSsz*PKNIU&8A2@{%2g@t0G6J#?WzVl0ax~HYl?l+i&L2!aw9U?U=p!pe`4l9Jy)7 zj6GdgI5TyV4wKc3?jZ?09&kOQYs%^QEZ2O_)%HUN4<77&*WzVt>2g9QxrN7%)8pbb zc^{xTg>ckUTp!aZr#9f1fg0kqAY$TjM&K4gnO0I(mO@dLNfl~+lP&2*b|Gol4&R^k zWJQp~OR)w?A?Qt8ZBVQv57(fDEozb-kA3PRue$Z2SAEJ)lG^csuYT?1gRgnd#{$mI z70s0I%_T7F?$8aMygxI!OOuQ+XgWrr!&!Z9K@>J5cN&>F0K7a(BqW}Zm_G^tj+MUZe|RwliV4yO*Tvt;V@jLL`cUW=PhXA+fA$ge@edzeEtD2!b~6GA-jrv{>Wd0C}O<- zlg!V?>2CzWc{azocp}kcL$m|tQ9pL(4fDIl=2xf%-9g+bt4K`iC1MSm3fvd*(z~j6 zF=GZQh*_KayJ)LnFZ{RGqTv*^NXem5*_w(>k4s4>)4fupw#ZBpe{-o-mssR06 z$}FyPinRdCimq9PKN*i|a{FC2SN$_e8|1c~yNVPtQ5KGVQ5_ryO-Ugr0s21gu@jzY zay(?6mRQt|jHZan!@x7x{A0E({?e^&9I_@CyO2WtmHh(FbuSHwMNtPu9|U@(yzE#j zZJEsGExr@-Ha;JC1vD(5J_`}A>LFDn0;j5MQB}4|i^=GN>^Cq0ck!OG@yW&OI8X|X z?&39rSiYathT}0f&|>n*^Gy*+wrM7(&E(XTJy}&Ig<{K!by`pUhK~gb54(t<=&S?^ zoj50zkb#0y^C3pPJ2VegOci(#aQ*XP`PDI@CM?d@S zGk39;6X#jR9|>zW{p%cI;Dc-h*7&jrYJ*b!y=P@4X@PQbtwsdzPxReC7-Xh2r27$AvqKHQEpu^%`C%Rz(SbI(0+*L)gn?L`kRdIp}1zY zHYh$3J$bf6eBiwkMC@#Da8nb7^kqgFLRg?O`$Lg%1J&dQerm7K6WFOkOnKjfA&bW) zacS9_@GZ|2`y2rxj;tLt>Qv`pSX;!>P*Su&PA?5Hw!6yP5bFx)o3WhzjE0kLm z@VeB56H~|1T~XYl_N;WwM*Z@ z4JiZ(Kh~#BI>i1YS{kgEkKNo}U^aq0>E_Oj(JJEFp(s)SNMX_k1#tc0Gw_q2O@^NW ztrWZ&Jt_vK3~B)MMjs2q(Lm48Iv+dN1(Tznw3_KGG4Iw4eNtLSM;fimZSGp~`eM+MjJ zfO*u!!eN+L22OX!ef-i`c{l?UaS3a}cnr|9_WrkY{Kjw!>{V;PIGp6V-^m$_ z@G81jt0Uip5a1sm!-$PiCO2uuVy+jCY8Ic`Ok*VO-Mrfz_TAn)Mht(8ufpx%f-sCB zm;9&5BQwCVgiFddq<`O1oU%3KlrXomGfEJGc@e%ZW|ZhF;;?7uiq(h46<6Y^QqFI8 zqQ=U}vaMTuF6%?FevuK0X;1P1C$dY3jKyPESh!yJj7G9&KKv8{5!)iS=`|Z!epEo# zXNuDn6M7h;d%>CibEU48g_DQeGxboQyev=Mhd7g5xMbdW~JiQ z9OzK-YLaNe55=n!=hc8I^6E~_rp3$5lh5QZLAEOu?H;zgpL4I`!+b7da>bM2um}Z! z!%@6&Z|sZkH;F`6pu#2YEHEx^mY|FZryRgib8BnyYQ~1B>?gc|V-t}Af=K8~PBYwy z=k572xn^TE_)1@3DTuZ(NDd4*s~KTJ=Q1r&5J$*Vw6^^N)VN;JCd?vAo}OCmoA30 zWRfNgSe}8+x90LWWAzc5Kq}uQT|z_+0&MK3yjDrc4W6{5Hxspp;us-R5)~l$wu&!l zt(C)MDvgY(#tB{4RB=< zT=)jn3H_YTw1%X58`$DLS)4;MB+ijaA23~^B=n0jS2(Sapq7r=WP`&_#CZ@@zdaWT8*MWes`BF#{YB2pw6N zcY!gGl!`o>IwF&<_>P2K3n2^}DGtm@PsKdS;z4Sntd|K`B5^3TvvZK3!Abk4zoFP) z>NY8RGJ(m^A+D%M03M9@iSVa=U3Uj#b`2}>MOZk(8~Y<>CHm*TYgCtpRLNWFb9tLH z(FHQLt0M;yfi7aDiQG|*@G5HPUbAnarKp2S>=u8QmE%`4uM(TEfVgNKq`O&}TTKKP zrPr`>=}ok}vSE$n_@~NUuCbP5EN5%!-;n=W(8M0OkzrBW=u56<(SCol{+{uSTAym| zVRR+!fijGGP)XIn)O=WvDx}#*YhlVzSG26v47m&`NB3aJnh^a>ve9`;$V^d}Dfu$# z>=0p~UDb)|q&j7)7gN(7Ps5AmN*y?5D-W}uC!A)bb7I43)*p5zPk3BcglH!A zk@naoR^AQ_6sq6~VBFx8_Njub14-GkgDfZYK{>IL&^>-iVtzS}0~nu{C56&X(Ru>xcT?`4>6=KpQRdF7SF`T%1K*laAcEi+a25Xuf2<7^@j|?;=ZlfBRRBrTc zt)aE@sz?jJh$9157{9PWRHHt^inWGWN?LTzS87Jdi|khocx!+W*s;9XaVh}``>-!T zT8XGc8e#-2N(QH^@d)CPQZ8o31Bj=pkP@x4OGW9mQRO)o4bgki5IkLgBF^ybm#&EvY!6TLavyg98KJ<*#}&6_86qbGWErg?Ml^}Nv& zy}3m<3;fZIe(N{4>E=*;qu;vN5#8Jx-{`k4c86{b$2a<|i`}K0+v6Mk*2V78&C&Qq zzjd+ubaO1e(QjSse%;&~-{`k4_MmQ#$2a<|i=EKT1M!W1>tc`S=ArmTzjd+4bn|e0 zqu;vNtbh`Z=x!(f~a@a9#x6Otj_cW=XRz_ zm^Oeak)TS5^F2%a&Ne7i99Uuyla9Cg%%z92idyhu-upY*+$%jRLBXzBaj#<2wT4v* z8iikmN;zYBtX)PjWVK+W`OpGlo6ckbL7kHwiZ2jmi!1|Z$Hw>va?IEj*=^^GKgUX8 z{zFWu{WL?A%Q{5$wsj+o4jd`{)H=UcrG|Y&y0J!=<|Edg&I7TH(jTZHQygd--BWgVI;%aMPfkNm1V(&jES7l1rl8i<)uDxl?iY;dL$+IM-Z50e;?{MJNXd|WOH ziEh?D)UtsH_1;aX`yD-?Fg)l{A5y&)LO4qokldH>qu@faUw&H>aQyn_SPn~Pxg!5S z>RbE?5k7TXJO#;_ge{cUG6(;qq(8D$u5un6{L=BbyNy6b9`(MSW-Ygad9;X4kz2kk zV|L79qldiK9e^c!e;%dy%P!=W#va1SVcO& z*RnTY%N!)eSN8SB{Gv?uvYk3y1OU?mDvK@d>W#eh6~`<0_QVuO0u{2ol&D{%dwae3 zBHw#e?>o5mFR*f^`+`hhhK{z@)!N0h_ygc1~No06y>MeV^0r?7jB7{nuLm^}ntET01*mE)I-O zW3v_(T}HqzKxV`CaeUR)(~o;hA26Dxg}bs(3$^r&egcN!ZR0?HG`>2%0W@Wta({6L z2*>_J$OQ?puFUq0?x^GK>q%_R!=hD2RtC1*1Ii$hagc|`clx=H*b<})=N`82U>H=a zFC}|?Csj}N@R9{N=7(AS6vnwLoJFiWh7){F?&tscsFO3(Yo3KdwkZSR&lKb8IgHUF zHtjLgG;5rRY%3kxO8+EHng8QVBnO(q_m9iKZJderL-1uyL&w7KrEy?hTTF#`{J+SV zXbJ-a5H?v41Mv5yITQT?l86NIhdL8QP@sBhN*&Fa=c~?_EtK8USuEk#$G}L8dl!#1D$l$`{^da6%VH5S0DMd6rym$r(^yAE zXlhr|qh(j6&l+!A`dMTL$|;5|l;lYw3Cohu17eKNiC&olC{3hNi?^FJ)7kVYyMO`! z;R(y6;4uHei-mA1C%e{4frxg7L_%flMio;S%Uiieej)COxght#&-J7QHi+S4yfzNZ zxB6~6Wa9}#e$-LspXe5DoRXz^k|?F+wkBD}AjEc)t`U0mbz7t!FL&M5O_>}t+h1!$ zrvQOvx4}3_xV_IacNVO7$qCv=1SBIH%OSz|WSM2IG(&>LYyyj&k*1=;Jevb2SI**; zNT0T=V%8>C8R&p7=_J+zOyfrFxn>+EH2-k+kteJ#@XR0@tf(G8<3u704IRZcE{z>h zrvwhUiD@U3gp&j;Cs&z_xSiy_MQ`R-5^>_L+)cma`62$89W~LZ8=e&~ksr*-al!}& zS>%k45r$aT#%xgx$aJ?qJqmcQSRA!FMiuDbCa9``QajNc<*P{V8YGmR$l{_w#Oh-} zhOG<-hc%jkh?SvPPLrcSMk3HY3Y-BM1xhq#PQ5lKJ>3FAX}1KpCeLGEgTgv+Ry>wP zx4-mFA%@#I+4C);hBZmUQfJCf_K9E7VfDFB=q5qoDLs73hD<$=^2}jR@zQh}4IQ_@ zUu!n9e!;Wt2sIo7sriq)GTUk+^2Y`6Ee5~ zC}hA?07t-HKqD2UA@gnHt|Qs-_#!^53H=9+3|fLsg2=DzQ1k5$H5~>cVa$B~+?19!!=b&cXq_lgWNon>#a}qXNo|WG0f#xUl*Cbj za|1M685&O0rQ4zZGQKm-8b9o_Y7+5n%CqFZnv?ldtV2-92^*t@P3Dci)>M(=j0J)4 zxf@<1s_hzh!hjbK_>};FYviC0sgSW*R7v3pXi7~+1uCVGh9fj8e2pg1%&*EBG5)hq5}G-5wzeor^yi%hGxri z5)TUV6|32`uv$9%ErniZr8_iZ`R4mjvwkZjk8^{l?n4wxwscL31rUD?_D1Ttp zYKjWsfuvF3Q6sYQlZVto)D1y`z*^Y`pe;?ZL_Iu65$97;6YU|=A1WH>pO)2)sNM$}xnswP

$c2Lh?Q{*c*zZSY~AX@Qvu=Djm@=2 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 V=z15r^yj(0&y_$&IPLVt{|99j86E%t literal 201983 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 From ac9847740a2ae73f79f18accfd437f9f13c1a127 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 29 Feb 2024 19:47:41 +0500 Subject: [PATCH 57/84] handle queries with ts=none and ts=block_ts same way --- .../tokenfactory_tracker/src/query.rs | 38 +++++----- .../astroport_tokenfactory_tracker.wasm | Bin 173918 -> 173945 bytes .../staking/tests/staking_integration.rs | 69 +++++++++++++++++- 3 files changed, 88 insertions(+), 19 deletions(-) diff --git a/contracts/periphery/tokenfactory_tracker/src/query.rs b/contracts/periphery/tokenfactory_tracker/src/query.rs index e82c56b3d..b2c58be34 100644 --- a/contracts/periphery/tokenfactory_tracker/src/query.rs +++ b/contracts/periphery/tokenfactory_tracker/src/query.rs @@ -9,27 +9,29 @@ use crate::state::{BALANCES, TOTAL_SUPPLY_HISTORY}; #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::BalanceAt { address, timestamp } => to_json_binary(&balance_at( - deps, - address, - timestamp.unwrap_or_else(|| env.block.time.seconds()), - )?), - QueryMsg::TotalSupplyAt { timestamp } => to_json_binary(&total_supply_at( - deps, - timestamp.unwrap_or_else(|| env.block.time.seconds()), - )?), + QueryMsg::BalanceAt { address, timestamp } => { + to_json_binary(&balance_at(deps, env, address, timestamp)?) + } + QueryMsg::TotalSupplyAt { timestamp } => { + to_json_binary(&total_supply_at(deps, env, timestamp)?) + } } } -fn balance_at(deps: Deps, address: String, timestamp: u64) -> StdResult { - let balance = BALANCES - .may_load_at_height(deps.storage, &address, timestamp)? - .unwrap_or_default(); - Ok(balance) +fn balance_at(deps: Deps, env: Env, address: String, timestamp: Option) -> StdResult { + let block_time = env.block.time.seconds(); + match timestamp.unwrap_or(block_time) { + timestamp if timestamp == block_time => BALANCES.may_load(deps.storage, &address), + timestamp => BALANCES.may_load_at_height(deps.storage, &address, timestamp), + } + .map(|balance| balance.unwrap_or_default()) } -fn total_supply_at(deps: Deps, timestamp: u64) -> StdResult { - TOTAL_SUPPLY_HISTORY - .may_load_at_height(deps.storage, timestamp) - .map(|res| res.unwrap_or_default()) +fn total_supply_at(deps: Deps, env: Env, timestamp: Option) -> StdResult { + let block_time = env.block.time.seconds(); + match timestamp.unwrap_or(block_time) { + timestamp if timestamp == block_time => TOTAL_SUPPLY_HISTORY.may_load(deps.storage), + timestamp => TOTAL_SUPPLY_HISTORY.may_load_at_height(deps.storage, timestamp), + } + .map(|total_supply| total_supply.unwrap_or_default()) } diff --git a/contracts/periphery/tokenfactory_tracker/tests/test_data/astroport_tokenfactory_tracker.wasm b/contracts/periphery/tokenfactory_tracker/tests/test_data/astroport_tokenfactory_tracker.wasm index 2dadbfc449317b120917ecf03119270895704b72..94673544b7dc9c90b615206420c2a7b142bc2d14 100644 GIT binary patch delta 1755 zcmb7_J#P~+7{`6K@6MOYB_4`Y(GJgy-VdV?Z%f<)jRRUCriHI2q zHb$flh^-5VsbXZ}6ELtK!N&iwlS?ZkUev*U96x_QZ@=r8v(C@6&YPEU^x@=HeDXMb z*OR8vhtKanebP*8mkxxS@*j1oPoj3wND0^5k@xhJ(#q6MQdF(iLn+2mP)gBA+KCca zl_?82+1hTEeUi9QMx=&Pmy#DzDoT0L(C+P1LH)ZAZ+lg$OLIk3)XZEw5ZE0>GnWhm zB~Yur&QAp?l2q7TxF$nsT~-yla80U@2r@j-1EDI-w7|I?*e00dzaDIl2PYla4b;GIiv~ak_H-($E?SsXj zG#D7xMj5eKXnNnp6I>RXLIH^e2Q3qdnb5ekU<85qDbpBwIKk%U#UHsobtR%t!T*sFIssF=Gh5S+s<)ef7@xeTLdoY*ZFZ}|QuIak13)Yn&R!|z&l8h#%!><2{B0-tOWl7+4~=|0Z#%}9@dI> zf{l>EHjQ8vEUhGefQ5~qo!^_iJCdL=AgN~F%)Ix$_ulvI{yJIwdb0Tbb)?@Ny@`&- zjaO~5`*HQ+(X*%3sT$?Fr)Wq+Ui6<;nbW|iJldoOcF5YhlF4_=KB;w5teFPn3KP>l zM|=120jukh##gW?vAUL}`@vUtnGX4|5wQ=)S!}tOt;gmbBfMwUoVTnslf_oc=!)v#N z&GW-!fX7ba#kpHYk4A}yL1azp_N_{cg8j!_{x^ye0qh=*=Z5WCSYa@UaP9%Xk z721dt4l#r8G=;RmN+35+ASf*?6Tp(^8Y>tz%+U^^h~5N4g&6?JdSG_!t48OfuEqHFHKK=S6b-FOj6@MB?sZv=;>;Q4&kh(csq zqL3>JB)ytI(hCBqgeI3N1Va&0T$4bmpoq&9a=ikn&ML&+yP%H$5{K~iGHH-V1N;x7 znQBAM`hmLrnz~c+3)3IUw;iGa;gw8H%ip5@B*6pJkFj8sT`Ul(#X|D2gVN^L(AfFw eo2m{b6u?i!-9gw>RX!O{4#yMyVLYK9H+} Date: Thu, 29 Feb 2024 20:03:57 +0500 Subject: [PATCH 58/84] improve astro converter validation on instantiation --- .../periphery/astro_converter/src/contract.rs | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/contracts/periphery/astro_converter/src/contract.rs b/contracts/periphery/astro_converter/src/contract.rs index ccfc652e8..873d71b7a 100644 --- a/contracts/periphery/astro_converter/src/contract.rs +++ b/contracts/periphery/astro_converter/src/contract.rs @@ -40,6 +40,25 @@ pub fn init( validate_native_denom(&msg.new_astro_denom)?; msg.old_astro_asset_info.check(deps.api)?; + ensure!( + msg.old_astro_asset_info != AssetInfo::native(&msg.new_astro_denom), + StdError::generic_err("Cannot convert to the same asset") + ); + + if msg.old_astro_asset_info.is_native_token() { + ensure!( + msg.old_astro_asset_info.is_ibc(), + StdError::generic_err("If old ASTRO is native it must be IBC denom") + ); + } + + if matches!(msg.old_astro_asset_info, AssetInfo::Token { .. }) { + ensure!( + msg.outpost_burn_params.is_none(), + StdError::generic_err("Burn params must be unset on the old Hub (Terra)") + ); + } + if msg.old_astro_asset_info.is_ibc() { ensure!( msg.outpost_burn_params.is_some(), @@ -47,11 +66,6 @@ pub fn init( ); } - ensure!( - msg.old_astro_asset_info != AssetInfo::native(&msg.new_astro_denom), - StdError::generic_err("Cannot convert to the same asset") - ); - let attrs = [ attr("contract_name", CONTRACT_NAME), attr("astro_old_denom", msg.old_astro_asset_info.to_string()), @@ -280,7 +294,7 @@ mod testing { old_astro_transfer_channel: "channel-1".to_string(), }); - instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); + instantiate(deps.as_mut(), mock_env(), info.clone(), msg.clone()).unwrap(); let config_data = query(deps.as_ref(), mock_env(), QueryMsg::Config {}).unwrap(); let config = from_json::(&config_data).unwrap(); @@ -296,6 +310,20 @@ mod testing { }), } ); + + msg.old_astro_asset_info = AssetInfo::native("untrn"); + let err = instantiate(deps.as_mut(), mock_env(), info.clone(), msg.clone()).unwrap_err(); + assert_eq!( + err.to_string(), + "Generic error: If old ASTRO is native it must be IBC denom" + ); + + msg.old_astro_asset_info = AssetInfo::cw20_unchecked("terra1xxx_old_astro"); + let err = instantiate(deps.as_mut(), mock_env(), info, msg).unwrap_err(); + assert_eq!( + err.to_string(), + "Generic error: Burn params must be unset on the old Hub (Terra)" + ); } #[test] From 68fc0d3b7263d2d8df435e1c3a7765ef299e9562 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Fri, 1 Mar 2024 17:10:13 +0500 Subject: [PATCH 59/84] remove unused errors --- contracts/pair_astro_converter/src/error.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/contracts/pair_astro_converter/src/error.rs b/contracts/pair_astro_converter/src/error.rs index e056ce587..7f3b47232 100644 --- a/contracts/pair_astro_converter/src/error.rs +++ b/contracts/pair_astro_converter/src/error.rs @@ -16,12 +16,6 @@ pub enum ContractError { #[error("Failed to migrate from {current}. Expected: {expected}")] MigrationError { expected: String, current: String }, - #[error("Unauthorized")] - Unauthorized {}, - - #[error("Invalid CW20 token")] - InvalidCw20Token {}, - #[error("This pair swaps from old ASTRO ({old}) to new ASTRO only ({new})")] AssetMismatch { old: String, new: String }, } From 57e4766ea0539b9603611060eba1bba051458a42 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Fri, 1 Mar 2024 17:16:39 +0500 Subject: [PATCH 60/84] add query for tracker config --- contracts/periphery/tokenfactory_tracker/src/query.rs | 11 +++++++++-- packages/astroport/src/tokenfactory_tracker.rs | 10 ++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/contracts/periphery/tokenfactory_tracker/src/query.rs b/contracts/periphery/tokenfactory_tracker/src/query.rs index b2c58be34..fba34a188 100644 --- a/contracts/periphery/tokenfactory_tracker/src/query.rs +++ b/contracts/periphery/tokenfactory_tracker/src/query.rs @@ -2,9 +2,9 @@ use cosmwasm_std::entry_point; use cosmwasm_std::{to_json_binary, Binary, Deps, Env, StdResult, Uint128}; -use astroport::tokenfactory_tracker::QueryMsg; +use astroport::tokenfactory_tracker::{ConfigResponse, QueryMsg}; -use crate::state::{BALANCES, TOTAL_SUPPLY_HISTORY}; +use crate::state::{BALANCES, CONFIG, TOTAL_SUPPLY_HISTORY}; #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { @@ -15,6 +15,13 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::TotalSupplyAt { timestamp } => { to_json_binary(&total_supply_at(deps, env, timestamp)?) } + QueryMsg::Config {} => { + let config = CONFIG.load(deps.storage)?; + to_json_binary(&ConfigResponse { + tracked_denom: config.d, + token_factory_module: config.m, + }) + } } } diff --git a/packages/astroport/src/tokenfactory_tracker.rs b/packages/astroport/src/tokenfactory_tracker.rs index d9143edf8..a3301d5fc 100644 --- a/packages/astroport/src/tokenfactory_tracker.rs +++ b/packages/astroport/src/tokenfactory_tracker.rs @@ -45,4 +45,14 @@ pub enum QueryMsg { /// Return the total supply at the given timestamp. #[returns(Uint128)] TotalSupplyAt { timestamp: Option }, + #[returns(ConfigResponse)] + Config {}, +} + +#[cw_serde] +pub struct ConfigResponse { + /// Tracked denom + pub tracked_denom: String, + /// Token factory module address + pub token_factory_module: String, } From 8f709ea4c46664595074b2a4abc17cca80a81a1c Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 14 Mar 2024 13:28:47 +0400 Subject: [PATCH 61/84] feat(hub move): adjustments in vesting and incentives contract * WIP: fix incentives contract; add test to check changed astro denom * add vesting migration which converts astro under the hood * feat(incentives): allow to update astro token * fix clippy * fix clippy * feat(incentives): improve contract math (cherry picked from commit 146058aae3383a594fc328c9a6e85ad84ebae638) * add migration --- Cargo.lock | 110 +++++--- contracts/pair_astro_converter/Cargo.toml | 2 +- .../periphery/astro_converter/Cargo.toml | 2 +- .../astro_converter_neutron/Cargo.toml | 4 +- .../astro_converter_neutron/src/contract.rs | 1 - contracts/tokenomics/incentives/Cargo.toml | 4 +- .../incentives/examples/incentives_schema.rs | 10 + contracts/tokenomics/incentives/src/error.rs | 12 +- .../tokenomics/incentives/src/execute.rs | 27 +- contracts/tokenomics/incentives/src/lib.rs | 1 + .../tokenomics/incentives/src/migrate.rs | 27 ++ contracts/tokenomics/incentives/src/query.rs | 2 +- contracts/tokenomics/incentives/src/state.rs | 78 ++--- contracts/tokenomics/incentives/src/traits.rs | 4 +- contracts/tokenomics/incentives/src/utils.rs | 2 +- .../incentives/tests/helper/helper.rs | 97 ++++++- .../tests/incentives_integration_tests.rs | 267 ++++++++++++++---- .../tests/incentives_simulations.rs | 2 +- contracts/tokenomics/vesting/Cargo.toml | 21 +- contracts/tokenomics/vesting/src/contract.rs | 69 ++++- .../tokenomics/vesting/tests/integration.rs | 220 ++++++++++++++- packages/astroport/Cargo.toml | 4 +- packages/astroport/src/incentives.rs | 24 +- packages/astroport/src/vesting.rs | 9 +- 24 files changed, 797 insertions(+), 202 deletions(-) create mode 100644 contracts/tokenomics/incentives/examples/incentives_schema.rs create mode 100644 contracts/tokenomics/incentives/src/migrate.rs diff --git a/Cargo.lock b/Cargo.lock index 4adca2de5..5c3e478ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,9 +40,9 @@ dependencies = [ [[package]] name = "astro-token-converter" -version = "0.1.0" +version = "1.0.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -54,10 +54,10 @@ dependencies = [ [[package]] name = "astro-token-converter-neutron" -version = "0.1.0" +version = "1.0.0" dependencies = [ "astro-token-converter", - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-std", "cw-utils 1.0.3", "cw2 1.1.2", @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "astroport" -version = "3.11.0" +version = "3.11.2" dependencies = [ "astroport-circular-buffer", "cosmwasm-schema", @@ -143,7 +143,7 @@ name = "astroport-factory" version = "1.7.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", @@ -163,7 +163,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", @@ -179,7 +179,7 @@ name = "astroport-generator" version = "2.3.2" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance)", "astroport-mocks", @@ -189,7 +189,7 @@ dependencies = [ "astroport-pair-stable", "astroport-staking", "astroport-token", - "astroport-vesting", + "astroport-vesting 1.4.0", "astroport-whitelist", "cosmwasm-schema", "cosmwasm-std", @@ -214,7 +214,7 @@ dependencies = [ name = "astroport-generator-proxy-template" version = "0.0.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -228,7 +228,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -240,7 +240,7 @@ name = "astroport-governance" version = "1.4.1" source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -253,7 +253,7 @@ name = "astroport-governance" version = "1.4.1" source = "git+https://github.com/astroport-fi/hidden_astroport_governance#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -263,15 +263,17 @@ dependencies = [ [[package]] name = "astroport-incentives" -version = "1.0.0" +version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astro-token-converter", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", "astroport-pair-stable", - "astroport-vesting", + "astroport-vesting 1.3.1", + "astroport-vesting 1.4.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_cozy_fork)", @@ -290,7 +292,7 @@ name = "astroport-liquidity-manager" version = "1.0.3" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -315,7 +317,7 @@ name = "astroport-maker" version = "1.4.0" dependencies = [ "astro-satellite-package", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-escrow-fee-distributor", "astroport-factory 1.7.0", "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", @@ -337,7 +339,7 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -347,7 +349,7 @@ dependencies = [ "astroport-shared-multisig", "astroport-staking", "astroport-token", - "astroport-vesting", + "astroport-vesting 1.4.0", "astroport-whitelist", "astroport-xastro-token", "cosmwasm-schema", @@ -365,7 +367,7 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -379,7 +381,7 @@ dependencies = [ name = "astroport-native-coin-wrapper" version = "0.1.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -409,7 +411,7 @@ name = "astroport-oracle" version = "2.1.1" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -446,7 +448,7 @@ dependencies = [ name = "astroport-pair" version = "1.5.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-mocks", "astroport-token", @@ -467,7 +469,7 @@ dependencies = [ name = "astroport-pair-astro-xastro" version = "1.0.3" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-pair-bonded", "astroport-staking", @@ -486,7 +488,7 @@ dependencies = [ name = "astroport-pair-bonded" version = "1.0.1" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw2 0.15.1", @@ -498,7 +500,7 @@ dependencies = [ name = "astroport-pair-bonded-template" version = "1.0.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "astroport-pair-bonded", "cosmwasm-schema", "cosmwasm-std", @@ -531,7 +533,7 @@ name = "astroport-pair-concentrated" version = "2.3.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-circular-buffer", "astroport-factory 1.7.0", "astroport-mocks", @@ -557,7 +559,7 @@ version = "1.0.0" dependencies = [ "anyhow", "astro-token-converter", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-pair 1.3.3", "astroport-token", @@ -579,7 +581,7 @@ name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-circular-buffer", "astroport-factory 1.7.0", "astroport-mocks", @@ -604,7 +606,7 @@ name = "astroport-pair-transmuter" version = "1.0.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-token", "cosmwasm-schema", @@ -623,7 +625,7 @@ dependencies = [ name = "astroport-pair-xyk-sale-tax" version = "1.6.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-mocks", "astroport-pair 1.3.3", @@ -648,7 +650,7 @@ name = "astroport-pcl-common" version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "cosmwasm-schema", "cosmwasm-std", @@ -663,7 +665,7 @@ name = "astroport-router" version = "1.2.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.11.2", "astroport-factory 1.7.0", "astroport-pair 1.5.0", "astroport-token", @@ -681,7 +683,7 @@ dependencies = [ name = "astroport-shared-multisig" version = "1.0.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "astroport-generator", "astroport-mocks", "astroport-pair 1.5.0", @@ -701,7 +703,7 @@ dependencies = [ name = "astroport-staking" version = "1.1.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "astroport-token", "astroport-xastro-token", "cosmwasm-schema", @@ -719,7 +721,7 @@ dependencies = [ name = "astroport-token" version = "1.1.1" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -730,13 +732,13 @@ dependencies = [ [[package]] name = "astroport-vesting" -version = "1.3.2" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dffce7cf86bf4d4f177ef941145352499e802abc4b898032af7808d16cca6371" dependencies = [ - "astroport 3.11.0", - "astroport-token", + "astroport 2.9.5", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", "cw-storage-plus 0.15.1", "cw-utils 0.15.1", "cw2 0.15.1", @@ -744,11 +746,29 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-vesting" +version = "1.4.0" +dependencies = [ + "astro-token-converter", + "astroport 3.11.2", + "astroport-vesting 1.3.1", + "cosmwasm-schema", + "cosmwasm-std", + "cw-multi-test 0.20.0", + "cw-storage-plus 0.15.1", + "cw-utils 1.0.3", + "cw2 1.1.2", + "cw20 0.15.1", + "cw20-base 0.15.1", + "thiserror", +] + [[package]] name = "astroport-whitelist" version = "1.0.1" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", @@ -760,7 +780,7 @@ dependencies = [ name = "astroport-xastro-outpost-token" version = "1.0.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -775,7 +795,7 @@ dependencies = [ name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -1774,7 +1794,7 @@ version = "0.0.0" source = "git+https://github.com/astroport-fi/astro-generator-proxy-contracts?branch=main#e573a8f8542b99015cac910f024a5f20fd793f3c" dependencies = [ "ap-valkyrie", - "astroport 3.11.0", + "astroport 3.11.2", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", diff --git a/contracts/pair_astro_converter/Cargo.toml b/contracts/pair_astro_converter/Cargo.toml index 331f78267..7fe415b04 100644 --- a/contracts/pair_astro_converter/Cargo.toml +++ b/contracts/pair_astro_converter/Cargo.toml @@ -42,4 +42,4 @@ cw-multi-test = "0.20.0" astroport-token = { path = "../token" } astroport-factory = { path = "../factory" } astroport-pair = "~1.3.3" -astro-token-converter = { path = "../periphery/astro_converter" } +astro-token-converter = { path = "../periphery/astro_converter", version = "1.0" } diff --git a/contracts/periphery/astro_converter/Cargo.toml b/contracts/periphery/astro_converter/Cargo.toml index fe1949dcd..652137dae 100644 --- a/contracts/periphery/astro_converter/Cargo.toml +++ b/contracts/periphery/astro_converter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "astro-token-converter" -version = "0.1.0" +version = "1.0.0" edition = "2021" [lib] diff --git a/contracts/periphery/astro_converter_neutron/Cargo.toml b/contracts/periphery/astro_converter_neutron/Cargo.toml index 1e63c2fdb..85db43025 100644 --- a/contracts/periphery/astro_converter_neutron/Cargo.toml +++ b/contracts/periphery/astro_converter_neutron/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "astro-token-converter-neutron" -version = "0.1.0" +version = "1.0.0" edition = "2021" [lib] @@ -12,7 +12,7 @@ library = [] [dependencies] neutron-sdk = "0.8.0" astroport = { path = "../../../packages/astroport", version = "3" } -astro-token-converter = { path = "../astro_converter", version = "0.1", features = ["library"] } +astro-token-converter = { path = "../astro_converter", version = "1.0", features = ["library"] } cosmwasm-std = "1.5" cw2 = "1.1" cw-utils = "1" diff --git a/contracts/periphery/astro_converter_neutron/src/contract.rs b/contracts/periphery/astro_converter_neutron/src/contract.rs index 39abeaeda..786339eb6 100644 --- a/contracts/periphery/astro_converter_neutron/src/contract.rs +++ b/contracts/periphery/astro_converter_neutron/src/contract.rs @@ -91,7 +91,6 @@ pub fn ibc_transfer_for_burning( .iter() .chain(fee.recv_fee.iter()) .chain(fee.timeout_fee.iter()) - .into_iter() .filter(|a| a.denom == FEE_DENOM) .fold(Uint128::zero(), |acc, coin| acc + coin.amount); diff --git a/contracts/tokenomics/incentives/Cargo.toml b/contracts/tokenomics/incentives/Cargo.toml index 177a18417..0f698b95c 100644 --- a/contracts/tokenomics/incentives/Cargo.toml +++ b/contracts/tokenomics/incentives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "astroport-incentives" -version = "1.0.0" +version = "1.1.0" authors = ["Astroport"] edition = "2021" description = "Astroport Incentives Contract distributing rewards to LP stakers" @@ -27,6 +27,8 @@ itertools = "0.11" [dev-dependencies] cw-multi-test = { git = "https://github.com/astroport-fi/cw-multi-test", branch = "astroport_cozy_fork" } +astroport-vesting_131 = { package = "astroport-vesting", version = "1.3.1", features = ["library"] } +astro-token-converter = { path = "../../periphery/astro_converter", version = "1.0", features = ["library"] } anyhow = "1" astroport-factory = { path = "../../factory" } astroport-pair = { path = "../../pair" } diff --git a/contracts/tokenomics/incentives/examples/incentives_schema.rs b/contracts/tokenomics/incentives/examples/incentives_schema.rs new file mode 100644 index 000000000..e56542319 --- /dev/null +++ b/contracts/tokenomics/incentives/examples/incentives_schema.rs @@ -0,0 +1,10 @@ +use astroport::incentives::{ExecuteMsg, InstantiateMsg, QueryMsg}; +use cosmwasm_schema::write_api; + +fn main() { + write_api! { + instantiate: InstantiateMsg, + query: QueryMsg, + execute: ExecuteMsg, + } +} diff --git a/contracts/tokenomics/incentives/src/error.rs b/contracts/tokenomics/incentives/src/error.rs index 01e511841..0c6d737d4 100644 --- a/contracts/tokenomics/incentives/src/error.rs +++ b/contracts/tokenomics/incentives/src/error.rs @@ -1,8 +1,10 @@ -use astroport::factory::PairType; -use cosmwasm_std::{CheckedFromRatioError, OverflowError, StdError, Uint128}; +use cosmwasm_std::{ + CheckedFromRatioError, ConversionOverflowError, OverflowError, StdError, Uint128, +}; use cw_utils::PaymentError; use thiserror::Error; +use astroport::factory::PairType; use astroport::incentives::MAX_REWARD_TOKENS; #[derive(Error, Debug, PartialEq)] @@ -19,6 +21,9 @@ pub enum ContractError { #[error("{0}")] OverflowError(#[from] OverflowError), + #[error("{0}")] + ConversionOverflowError(#[from] ConversionOverflowError), + #[error("Unauthorized")] Unauthorized {}, @@ -61,4 +66,7 @@ pub enum ContractError { #[error("Failed to set 0 alloc point for pool {lp_token}")] ZeroAllocPoint { lp_token: String }, + + #[error("Failed to migrate contract")] + MigrationError {}, } diff --git a/contracts/tokenomics/incentives/src/execute.rs b/contracts/tokenomics/incentives/src/execute.rs index 47fe6b2d3..7868efecb 100644 --- a/contracts/tokenomics/incentives/src/execute.rs +++ b/contracts/tokenomics/incentives/src/execute.rs @@ -15,7 +15,7 @@ use astroport::asset::{ use astroport::common::{claim_ownership, drop_ownership_proposal, propose_new_owner}; use astroport::factory; use astroport::factory::PairType; -use astroport::incentives::{Cw20Msg, ExecuteMsg, IncentivizationFeeInfo}; +use astroport::incentives::{Cw20Msg, ExecuteMsg, IncentivizationFeeInfo, RewardType}; use crate::error::ContractError; use crate::state::{ @@ -114,6 +114,7 @@ pub fn execute( claim_orphaned_rewards(deps, info, limit, receiver) } ExecuteMsg::UpdateConfig { + astro_token, vesting_contract, generator_controller, guardian, @@ -121,6 +122,7 @@ pub fn execute( } => update_config( deps, info, + astro_token, vesting_contract, generator_controller, guardian, @@ -371,6 +373,7 @@ fn set_tokens_per_second( fn update_config( deps: DepsMut, info: MessageInfo, + astro_token: Option, vesting_contract: Option, generator_controller: Option, guardian: Option, @@ -385,6 +388,28 @@ fn update_config( let mut attrs = vec![attr("action", "update_config")]; + if let Some(astro_token) = astro_token { + astro_token.check(deps.api)?; + attrs.push(attr("new_astro_token", astro_token.to_string())); + config.astro_token = astro_token; + + // Loop through all active pools and update astro asset info + for (lp_token, _) in ACTIVE_POOLS.load(deps.storage)? { + let mut pool_info = PoolInfo::load(deps.storage, &lp_token)?; + let protocol_reward = pool_info + .rewards + .iter_mut() + .find(|r| !r.reward.is_external()) + .ok_or_else(|| { + StdError::generic_err(format!( + "Protocol ASTRO reward not found in active pool {lp_token}", + )) + })?; + protocol_reward.reward = RewardType::Int(config.astro_token.clone()); + pool_info.save(deps.storage, &lp_token)?; + } + } + if let Some(vesting_contract) = vesting_contract { config.vesting_contract = deps.api.addr_validate(&vesting_contract)?; attrs.push(attr("new_vesting_contract", vesting_contract)); diff --git a/contracts/tokenomics/incentives/src/lib.rs b/contracts/tokenomics/incentives/src/lib.rs index 4ac6a50bd..0862d1aeb 100644 --- a/contracts/tokenomics/incentives/src/lib.rs +++ b/contracts/tokenomics/incentives/src/lib.rs @@ -1,6 +1,7 @@ pub mod error; pub mod execute; pub mod instantiate; +pub mod migrate; pub mod query; pub mod reply; pub mod state; diff --git a/contracts/tokenomics/incentives/src/migrate.rs b/contracts/tokenomics/incentives/src/migrate.rs new file mode 100644 index 000000000..885ec2376 --- /dev/null +++ b/contracts/tokenomics/incentives/src/migrate.rs @@ -0,0 +1,27 @@ +#![cfg(not(tarpaulin_include))] + +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{DepsMut, Empty, Env, Response}; + +use crate::error::ContractError; +use crate::instantiate::{CONTRACT_NAME, CONTRACT_VERSION}; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn migrate(deps: DepsMut, _env: Env, _msg: Empty) -> Result { + let contract_version = cw2::get_contract_version(deps.storage)?; + + match contract_version.contract.as_ref() { + "astroport-incentives" => match contract_version.version.as_ref() { + "1.0.0" | "1.0.1" => {} + _ => return Err(ContractError::MigrationError {}), + }, + _ => return Err(ContractError::MigrationError {}), + }; + + Ok(Response::new() + .add_attribute("previous_contract_name", &contract_version.contract) + .add_attribute("previous_contract_version", &contract_version.version) + .add_attribute("new_contract_name", CONTRACT_NAME) + .add_attribute("new_contract_version", CONTRACT_VERSION)) +} diff --git a/contracts/tokenomics/incentives/src/query.rs b/contracts/tokenomics/incentives/src/query.rs index 1ac559737..520c7a6d3 100644 --- a/contracts/tokenomics/incentives/src/query.rs +++ b/contracts/tokenomics/incentives/src/query.rs @@ -173,7 +173,7 @@ pub fn query_pending_rewards( pos.reset_user_index(deps.storage, &lp_asset, &pool_info)?; let active_rewards = pool_info - .calculate_rewards(&mut pos) + .calculate_rewards(&mut pos)? .into_iter() .map(|(_, asset)| asset); diff --git a/contracts/tokenomics/incentives/src/state.rs b/contracts/tokenomics/incentives/src/state.rs index e066113c6..6eca11864 100644 --- a/contracts/tokenomics/incentives/src/state.rs +++ b/contracts/tokenomics/incentives/src/state.rs @@ -1,7 +1,7 @@ use std::collections::{HashMap, HashSet}; use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Addr, Decimal, Env, Order, StdError, StdResult, Storage, Uint128}; +use cosmwasm_std::{Addr, Decimal256, Env, Order, StdError, StdResult, Storage, Uint128, Uint256}; use cw_storage_plus::{Bound, Item, Map}; use itertools::Itertools; @@ -28,7 +28,7 @@ pub const BLOCKED_TOKENS: Map<&[u8], ()> = Map::new("blocked_tokens"); /// Contains reward indexes for finished rewards. They are removed from [`PoolInfo`] and stored here. /// Next time user claims rewards they will be able to claim outstanding rewards from this index. /// key: (LP token asset, deregistration timestamp), value: array of tuples (reward token asset, reward index). -pub const FINISHED_REWARD_INDEXES: Map<(&AssetInfo, u64), Vec<(AssetInfo, Decimal)>> = +pub const FINISHED_REWARD_INDEXES: Map<(&AssetInfo, u64), Vec<(AssetInfo, Decimal256)>> = Map::new("fin_rew_inds"); /// key: lp_token (either cw20 or native), value: pool info @@ -36,7 +36,7 @@ pub const POOLS: Map<&AssetInfo, PoolInfo> = Map::new("pools"); /// key: (lp_token, user_addr), value: user info pub const USER_INFO: Map<(&AssetInfo, &Addr), UserInfo> = Map::new("user_info"); /// key: (LP token asset, reward token asset, schedule end point), value: reward per second -pub const EXTERNAL_REWARD_SCHEDULES: Map<(&AssetInfo, &AssetInfo, u64), Decimal> = +pub const EXTERNAL_REWARD_SCHEDULES: Map<(&AssetInfo, &AssetInfo, u64), Decimal256> = Map::new("reward_schedules"); /// Accumulates all orphaned rewards i.e. those which were added to a pool @@ -51,7 +51,7 @@ impl RewardInfoExt for RewardInfo { /// calculates the reward amount. /// Otherwise it assumes user never claimed this particular reward and their reward index is 0. /// Their position will be synced with pool indexes later on. - fn calculate_reward(&self, user_info: &UserInfo) -> Uint128 { + fn calculate_reward(&self, user_info: &UserInfo) -> StdResult { let user_index_opt = user_info .last_rewards_index .iter() @@ -62,13 +62,16 @@ impl RewardInfoExt for RewardInfo { // rewards from past schedules. // Outstanding rewards from finished schedules are handled in claim_finished_rewards(). // To account current active period properly we need to consider user index as 0. - match user_index_opt { + let user_amount = Uint256::from(user_info.amount); + let u256_result = match user_index_opt { Some((_, user_reward_index)) if *user_reward_index > self.index => { - self.index * user_info.amount + self.index * user_amount } - None => self.index * user_info.amount, - Some((_, user_reward_index)) => (self.index - *user_reward_index) * user_info.amount, - } + None => self.index * user_amount, + Some((_, user_reward_index)) => (self.index - *user_reward_index) * user_amount, + }; + + Ok(u256_result.try_into()?) } } @@ -85,7 +88,7 @@ pub struct PoolInfo { /// Key: reward type, value: (reward index, orphaned rewards) /// NOTE: this is not part of serialized structure in state! #[serde(skip)] - pub rewards_to_remove: HashMap, + pub rewards_to_remove: HashMap, } impl PoolInfo { @@ -106,7 +109,7 @@ impl PoolInfo { } for reward_info in self.rewards.iter_mut() { - let mut collected_rewards = Decimal::zero(); + let mut collected_rewards = Decimal256::zero(); let mut time_passed_inner = time_passed; // Whether we need to remove this reward from pool info. Only applicable for finished external rewards. @@ -122,7 +125,7 @@ impl PoolInfo { if next_update_ts <= block_ts { // Schedule ended. Collect leftovers from the last update time collected_rewards += reward_info.rps - * Decimal::from_ratio(next_update_ts - self.last_update_ts, 1u8); + * Decimal256::from_ratio(next_update_ts - self.last_update_ts, 1u8); // Find which passed schedules should be processed (can be multiple ones) let schedules = EXTERNAL_REWARD_SCHEDULES.prefix((lp_asset, info)).range( @@ -148,7 +151,7 @@ impl PoolInfo { // Process schedules one by one and collect rewards collected_rewards += period_reward_per_sec - * Decimal::from_ratio(update_ts - next_update_ts, 1u8); + * Decimal256::from_ratio(update_ts - next_update_ts, 1u8); next_update_ts = update_ts; } @@ -156,20 +159,20 @@ impl PoolInfo { if next_update_ts <= block_ts { // Remove reward from pool info need_remove = true; - reward_info.rps = Decimal::zero(); + reward_info.rps = Decimal256::zero(); } } } - collected_rewards += reward_info.rps * Decimal::from_ratio(time_passed_inner, 1u8); + collected_rewards += reward_info.rps * Decimal256::from_ratio(time_passed_inner, 1u8); if self.total_lp.is_zero() { reward_info.orphaned += collected_rewards; } else { // Allowing the first depositor to claim orphaned rewards reward_info.index += (reward_info.orphaned + collected_rewards) - / Decimal::from_ratio(self.total_lp, 1u8); - reward_info.orphaned = Decimal::zero(); + / Decimal256::from_ratio(self.total_lp, 1u8); + reward_info.orphaned = Decimal256::zero(); } if need_remove { @@ -191,15 +194,15 @@ impl PoolInfo { /// This function calculates all rewards for a specific user position. /// Converts them to [`Asset`]. Returns array of tuples (is_external_reward, Asset). - pub fn calculate_rewards(&self, user_info: &mut UserInfo) -> Vec<(bool, Asset)> { + pub fn calculate_rewards(&self, user_info: &mut UserInfo) -> StdResult> { self.rewards .iter() .map(|reward_info| { - let amount = reward_info.calculate_reward(user_info); - ( + let amount = reward_info.calculate_reward(user_info)?; + Ok(( reward_info.reward.is_external(), reward_info.reward.asset_info().with_balance(amount), - ) + )) }) .collect() } @@ -207,18 +210,18 @@ impl PoolInfo { /// Set astro per second for this pool according to alloc points and general astro per second value pub fn set_astro_rewards(&mut self, config: &Config, alloc_points: Uint128) { if let Some(astro_reward_info) = self.rewards.iter_mut().find(|r| !r.reward.is_external()) { - astro_reward_info.rps = Decimal::from_ratio( + astro_reward_info.rps = Decimal256::from_ratio( config.astro_per_second * alloc_points, config.total_alloc_points, ); } else { self.rewards.push(RewardInfo { reward: RewardType::Int(config.astro_token.clone()), - rps: Decimal::from_ratio( + rps: Decimal256::from_ratio( config.astro_per_second * alloc_points, config.total_alloc_points, ), - index: Decimal::zero(), + index: Default::default(), orphaned: Default::default(), }); } @@ -236,7 +239,7 @@ impl PoolInfo { /// because users still should be able to claim outstanding rewards according to indexes. pub fn disable_astro_rewards(&mut self) { if let Some(astro_reward_info) = self.rewards.iter_mut().find(|r| !r.reward.is_external()) { - astro_reward_info.rps = Decimal::zero(); + astro_reward_info.rps = Decimal256::zero(); } } @@ -347,7 +350,7 @@ impl PoolInfo { next_update_ts: schedule.end_ts, }, rps: schedule.rps, - index: Decimal::zero(), + index: Default::default(), orphaned: Default::default(), }); } @@ -384,7 +387,7 @@ impl PoolInfo { // Assume update_rewards() was called before let mut remaining = reward_info.rps - * Decimal::from_ratio(next_update_ts.saturating_sub(self.last_update_ts), 1u8); + * Decimal256::from_ratio(next_update_ts.saturating_sub(self.last_update_ts), 1u8); // Remove active schedule from state EXTERNAL_REWARD_SCHEDULES.remove(storage, (lp_asset, reward_asset, next_update_ts)); @@ -407,8 +410,8 @@ impl PoolInfo { .into_iter() .for_each(|(update_ts, period_reward_per_sec)| { if update_ts > next_update_ts { - remaining += - period_reward_per_sec * Decimal::from_ratio(update_ts - prev_time, 1u8); + remaining += period_reward_per_sec + * Decimal256::from_ratio(update_ts - prev_time, 1u8); prev_time = update_ts; } @@ -419,7 +422,7 @@ impl PoolInfo { // Take orphaned rewards as well remaining += reward_info.orphaned; - Ok(remaining.to_uint_floor()) + Ok(remaining.to_uint_floor().try_into()?) } pub fn load(storage: &dyn Storage, lp_token: &AssetInfo) -> StdResult { @@ -457,7 +460,8 @@ impl PoolInfo { storage, &asset_info_key(&reward), |amount| { - Ok(amount.unwrap_or_default() + orphaned_amount.to_uint_floor()) + Ok(amount.unwrap_or_default() + + Uint128::try_from(orphaned_amount.to_uint_floor())?) }, )?; } @@ -510,7 +514,7 @@ pub struct UserInfo { /// Amount of LP tokens staked pub amount: Uint128, /// Last rewards indexes per reward token - pub last_rewards_index: Vec<(RewardType, Decimal)>, + pub last_rewards_index: Vec<(RewardType, Decimal256)>, /// The last time user claimed rewards pub last_claim_time: u64, } @@ -587,7 +591,7 @@ impl UserInfo { for (reward, index) in self.last_rewards_index.iter_mut() { if reward.is_external() && finished.contains(reward.asset_info()) { - *index = Decimal::zero(); + *index = Decimal256::zero(); } } @@ -624,6 +628,8 @@ impl UserInfo { .iter() .map(|(reward, (index, _))| (reward.asset_info().clone(), *index)); + let lp_tokens_amount = Uint256::from(self.amount); + finished_iter .chain(to_remove_iter) .into_group_map_by(|(reward_info, _)| reward_info.clone()) @@ -648,14 +654,14 @@ impl UserInfo { }) .unwrap_or_default(); - (finished_index - user_reward_index) * self.amount + (finished_index - user_reward_index) * lp_tokens_amount } else { // Subsequent finished schedules consider user never claimed rewards // thus their index was 0 - finished_index * self.amount + finished_index * lp_tokens_amount }; - Ok(reward_info.with_balance(amount)) + Ok(reward_info.with_balance(Uint128::try_from(amount)?)) }) }) .collect() diff --git a/contracts/tokenomics/incentives/src/traits.rs b/contracts/tokenomics/incentives/src/traits.rs index 1bdfaf87f..cf9d2fe56 100644 --- a/contracts/tokenomics/incentives/src/traits.rs +++ b/contracts/tokenomics/incentives/src/traits.rs @@ -1,8 +1,8 @@ -use cosmwasm_std::Uint128; +use cosmwasm_std::{StdResult, Uint128}; use crate::state::UserInfo; /// This trait is meant to extend [`astroport::incentives::RewardInfo`]. pub trait RewardInfoExt { - fn calculate_reward(&self, user_info: &UserInfo) -> Uint128; + fn calculate_reward(&self, user_info: &UserInfo) -> StdResult; } diff --git a/contracts/tokenomics/incentives/src/utils.rs b/contracts/tokenomics/incentives/src/utils.rs index 600b6ad64..10ffcc748 100644 --- a/contracts/tokenomics/incentives/src/utils.rs +++ b/contracts/tokenomics/incentives/src/utils.rs @@ -47,7 +47,7 @@ pub fn claim_rewards( // Reset user reward index for all finished schedules pos.reset_user_index(storage, lp_token_asset, pool_info)?; - for (is_external, reward_asset) in pool_info.calculate_rewards(pos) { + for (is_external, reward_asset) in pool_info.calculate_rewards(pos)? { attrs.push(attr("claimed_reward", reward_asset.to_string())); if !reward_asset.amount.is_zero() { diff --git a/contracts/tokenomics/incentives/tests/helper/helper.rs b/contracts/tokenomics/incentives/tests/helper/helper.rs index 4d0806da1..54c66fb78 100644 --- a/contracts/tokenomics/incentives/tests/helper/helper.rs +++ b/contracts/tokenomics/incentives/tests/helper/helper.rs @@ -6,8 +6,9 @@ use std::collections::HashMap; use anyhow::Result as AnyResult; use cosmwasm_std::testing::{mock_env, MockApi, MockStorage}; use cosmwasm_std::{ - to_json_binary, Addr, Api, BlockInfo, CanonicalAddr, Coin, Empty, Env, IbcMsg, IbcQuery, - RecoverPubkeyError, StdError, StdResult, Storage, Timestamp, Uint128, VerificationError, + coin, to_json_binary, Addr, Api, BlockInfo, CanonicalAddr, Coin, Decimal256, Empty, Env, + IbcMsg, IbcQuery, RecoverPubkeyError, StdError, StdResult, Storage, Timestamp, Uint128, + VerificationError, }; use cw20::MinterResponse; use cw_multi_test::{ @@ -18,14 +19,15 @@ use itertools::Itertools; use crate::helper::broken_cw20; use astroport::asset::{Asset, AssetInfo, AssetInfoExt, PairInfo}; +use astroport::astro_converter::OutpostBurnParams; use astroport::factory::{PairConfig, PairType}; use astroport::incentives::{ Config, ExecuteMsg, IncentivesSchedule, IncentivizationFeeInfo, InputSchedule, PoolInfoResponse, QueryMsg, RewardInfo, ScheduleResponse, }; use astroport::pair::StablePoolParams; -use astroport::vesting::{VestingAccount, VestingSchedule, VestingSchedulePoint}; -use astroport::{factory, native_coin_registry, pair, vesting}; +use astroport::vesting::{MigrateMsg, VestingAccount, VestingSchedule, VestingSchedulePoint}; +use astroport::{astro_converter, factory, native_coin_registry, pair, vesting}; fn factory_contract() -> Box> { Box::new( @@ -76,6 +78,25 @@ fn vesting_contract() -> Box> { )) } +fn vesting_contract_v131() -> Box> { + Box::new( + ContractWrapper::new_with_empty( + astroport_vesting_131::contract::execute, + astroport_vesting_131::contract::instantiate, + astroport_vesting_131::contract::query, + ) + .with_migrate_empty(astroport_vesting_131::contract::migrate), + ) +} + +fn astro_converter() -> Box> { + Box::new(ContractWrapper::new_with_empty( + astro_token_converter::contract::execute, + astro_token_converter::contract::instantiate, + astro_token_converter::contract::query, + )) +} + fn token_contract() -> Box> { Box::new(ContractWrapper::new_with_empty( cw20_base::contract::execute, @@ -226,7 +247,7 @@ pub struct Helper { } impl Helper { - pub fn new(owner: &str, astro: &AssetInfo) -> AnyResult { + pub fn new(owner: &str, astro: &AssetInfo, with_old_vesting: bool) -> AnyResult { let mut app = AppBuilder::new() .with_wasm::, WasmKeeper<_, _>>( WasmKeeper::new_with_custom_address_generator(TestAddr), @@ -240,7 +261,11 @@ impl Helper { .build(|_, _, _| {}); let owner = TestAddr::new(owner); - let vesting_code = app.store_code(vesting_contract()); + let vesting_code = if with_old_vesting { + app.store_code(vesting_contract_v131()) + } else { + app.store_code(vesting_contract()) + }; let vesting = app .instantiate_contract( vesting_code, @@ -251,7 +276,7 @@ impl Helper { }, &[], "Astroport Vesting", - None, + Some(owner.to_string()), ) .unwrap(); @@ -1017,6 +1042,60 @@ impl Helper { }) .collect_vec() } + + pub fn migrate_vesting(&mut self, new_astro_denom: &str) -> AnyResult { + let converter_code_id = self.app.store_code(astro_converter()); + + let msg = astro_converter::InstantiateMsg { + old_astro_asset_info: AssetInfo::native(&self.incentivization_fee.denom), + new_astro_denom: new_astro_denom.to_string(), + outpost_burn_params: Some(OutpostBurnParams { + terra_burn_addr: "terra1xxxx".to_string(), + old_astro_transfer_channel: "channel-228".to_string(), + }), + }; + + let converter_contract = self + .app + .instantiate_contract( + converter_code_id, + self.owner.clone(), + &msg, + &[], + "Converter", + None, + ) + .unwrap(); + + self.app.init_modules(|app, _, storage| { + app.bank + .init_balance( + storage, + &converter_contract, + vec![coin(u128::MAX, new_astro_denom)], + ) + .unwrap() + }); + + let vesting_contract = Box::new( + ContractWrapper::new_with_empty( + astroport_vesting::contract::execute, + astroport_vesting::contract::instantiate, + astroport_vesting::contract::query, + ) + .with_migrate(astroport_vesting::contract::migrate), + ); + let vesting_code_id = self.app.store_code(vesting_contract); + + self.app.migrate_contract( + self.owner.clone(), + self.vesting.clone(), + &MigrateMsg { + converter_contract: converter_contract.to_string(), + }, + vesting_code_id, + ) + } } pub fn assert_rewards(bal_before: &[Asset], bal_after: &[Asset], pending_rewards: &[Asset]) { @@ -1040,3 +1119,7 @@ pub fn assert_rewards(bal_before: &[Asset], bal_after: &[Asset], pending_rewards assert_eq!(bal_after, expected); } + +pub fn dec256_to_u128_floor(val: Decimal256) -> u128 { + Uint128::try_from(val.to_uint_floor()).unwrap().u128() +} diff --git a/contracts/tokenomics/incentives/tests/incentives_integration_tests.rs b/contracts/tokenomics/incentives/tests/incentives_integration_tests.rs index bb4b1b915..ff22fd678 100644 --- a/contracts/tokenomics/incentives/tests/incentives_integration_tests.rs +++ b/contracts/tokenomics/incentives/tests/incentives_integration_tests.rs @@ -1,6 +1,6 @@ use std::str::FromStr; -use cosmwasm_std::{coin, coins, Decimal, Timestamp, Uint128}; +use cosmwasm_std::{coin, coins, Decimal256, Timestamp, Uint128}; use cw_multi_test::Executor; use astroport::asset::{native_asset_info, AssetInfo, AssetInfoExt}; @@ -10,14 +10,14 @@ use astroport::incentives::{ }; use astroport_incentives::error::ContractError; -use crate::helper::{assert_rewards, Helper, TestAddr}; +use crate::helper::{assert_rewards, dec256_to_u128_floor, Helper, TestAddr}; mod helper; #[test] fn test_stake_unstake() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let user = TestAddr::new("user"); @@ -117,7 +117,7 @@ fn test_stake_unstake() { #[test] fn test_claim_rewards() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let mut pools = vec![ @@ -293,7 +293,7 @@ fn test_claim_rewards() { #[test] fn test_incentives() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let incentivization_fee = helper.incentivization_fee.clone(); @@ -428,7 +428,7 @@ fn test_incentives() { #[test] fn test_cw20_incentives() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let incentivization_fee = helper.incentivization_fee.clone(); @@ -517,10 +517,71 @@ fn test_cw20_incentives() { } } +#[test] +fn test_large_incentives() { + let astro = native_asset_info("astro".to_string()); + let mut helper = Helper::new("owner", &astro, false).unwrap(); + let owner = helper.owner.clone(); + let incentivization_fee = helper.incentivization_fee.clone(); + + let asset_infos = [AssetInfo::native("foo"), AssetInfo::native("bar")]; + let pair_info = helper.create_pair(&asset_infos).unwrap(); + let lp_token = pair_info.liquidity_token.to_string(); + + let provide_assets = [ + asset_infos[0].with_balance(100000u64), + asset_infos[1].with_balance(100000u64), + ]; + // Owner provides liquidity first just make following calculations easier + // since first depositor gets small cut of LP tokens + helper + .provide_liquidity( + &owner, + &provide_assets, + &pair_info.contract_addr, + false, // Owner doesn't stake in generator + ) + .unwrap(); + + let user = TestAddr::new("user"); + helper + .provide_liquidity(&user, &provide_assets, &pair_info.contract_addr, true) + .unwrap(); + + let bank = TestAddr::new("bank"); + let reward_asset_info = AssetInfo::native("reward"); + let reward = reward_asset_info.with_balance(2839081665193567584256u128); + helper.mint_assets(&bank, &[reward.clone()]); + + let (schedule, internal_sch) = helper.create_schedule(&reward, 1).unwrap(); + helper.mint_coin(&bank, &incentivization_fee); + helper + .incentivize( + &bank, + &lp_token, + schedule.clone(), + &[incentivization_fee.clone()], + ) + .unwrap(); + + // Test claims between short periods + for _ in 0..10 { + helper.next_block(100); + helper.claim_rewards(&user, vec![lp_token.clone()]).unwrap(); + } + + // Jump to the end of the schedule + helper + .app + .update_block(|block| block.time = Timestamp::from_seconds(internal_sch.end_ts)); + + helper.claim_rewards(&user, vec![lp_token.clone()]).unwrap(); +} + #[test] fn test_multiple_schedules_same_reward() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let incentivization_fee = helper.incentivization_fee.clone(); @@ -631,7 +692,7 @@ fn test_multiple_schedules_same_reward() { #[test] fn test_multiple_schedules_different_reward() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let incentivization_fee = helper.incentivization_fee.clone(); @@ -753,7 +814,7 @@ fn test_multiple_schedules_different_reward() { .info .query_pool(&helper.app.wrap(), &user) .unwrap(); - // Total amount is a bit off because of rounding due to Decimal type + // Total amount is a bit off because of rounding due to Decimal256 type assert_eq!( reward_balance.u128(), 999_999980, @@ -773,7 +834,7 @@ fn test_multiple_schedules_different_reward() { #[test] fn test_claim_between_different_periods() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let incentivization_fee = helper.incentivization_fee.clone(); @@ -855,7 +916,7 @@ fn test_claim_between_different_periods() { #[test] fn test_astro_external_reward() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); helper .app .update_block(|block| block.time = Timestamp::from_seconds(EPOCHS_START + EPOCH_LENGTH)); @@ -949,10 +1010,116 @@ fn test_astro_external_reward() { ); } +#[test] +fn test_astro_protocol_reward_if_denom_changed() { + let astro = native_asset_info("ibc/old_cw20_astro".to_string()); + let mut helper = Helper::new("owner", &astro, true).unwrap(); + helper + .app + .update_block(|block| block.time = Timestamp::from_seconds(EPOCHS_START + EPOCH_LENGTH)); + + let owner = helper.owner.clone(); + + let asset_infos = [AssetInfo::native("foo"), AssetInfo::native("bar")]; + let pair_info = helper.create_pair(&asset_infos).unwrap(); + let lp_token = pair_info.liquidity_token.to_string(); + + let provide_assets = [ + asset_infos[0].with_balance(100000u64), + asset_infos[1].with_balance(100000u64), + ]; + // Owner provides liquidity first just to make following calculations easier + // since first depositor gets small cut of LP tokens + helper + .provide_liquidity( + &owner, + &provide_assets, + &pair_info.contract_addr, + false, // Owner doesn't stake in generator + ) + .unwrap(); + + // Incentivize with ASTRO + helper.setup_pools(vec![(lp_token.clone(), 100)]).unwrap(); + helper.set_tokens_per_second(100).unwrap(); + + // Prepare user's liquidity + let user = TestAddr::new("user"); + helper + .provide_liquidity(&user, &provide_assets, &pair_info.contract_addr, true) + .unwrap(); + + let time_before_claims = helper.app.block_info().time.seconds(); + + let cycle_end = helper.app.block_info().time.seconds() + 86400 * 7; + + // Iterate one week by 1 day and claim rewards + loop { + let pending = helper.query_pending_rewards(&user, &lp_token); + let bal_before = helper.snapshot_balances(&user, &pending); + + helper.claim_rewards(&user, vec![lp_token.clone()]).unwrap(); + + let bal_after = helper.snapshot_balances(&user, &pending); + assert_rewards(&bal_before, &bal_after, &pending); + + if helper.app.block_info().time.seconds() > cycle_end { + break; + } else { + helper.next_block(86400); + } + } + + let new_astro = native_asset_info("new_astro".to_string()); + + // Set new astro token. It replaces old astro token for all active pools + let msg = ExecuteMsg::UpdateConfig { + astro_token: Some(new_astro.clone()), + vesting_contract: None, + generator_controller: None, + guardian: None, + incentivization_fee_info: None, + }; + helper + .app + .execute_contract(helper.owner.clone(), helper.generator.clone(), &msg, &[]) + .unwrap(); + + // migrate vesting contract with new astro denom; convert all astro to astro2 under the hood + helper.migrate_vesting(&new_astro.to_string()).unwrap(); + + let cycle_end = helper.app.block_info().time.seconds() + 86400 * 7; + + // Iterate one more week by 1 day and claim rewards (should be in new ASTRO) + loop { + let pending = helper.query_pending_rewards(&user, &lp_token); + let bal_before = helper.snapshot_balances(&user, &pending); + + helper.claim_rewards(&user, vec![lp_token.clone()]).unwrap(); + + let bal_after = helper.snapshot_balances(&user, &pending); + assert_rewards(&bal_before, &bal_after, &pending); + + if helper.app.block_info().time.seconds() > cycle_end { + break; + } else { + helper.next_block(86400); + } + } + + let time_now = helper.app.block_info().time.seconds(); + let astro_reward_balance = astro.query_pool(&helper.app.wrap(), &user).unwrap(); + let new_astro_reward_balance = new_astro.query_pool(&helper.app.wrap(), &user).unwrap(); + assert_eq!( + astro_reward_balance.u128() + new_astro_reward_balance.u128(), + u128::from(time_now - time_before_claims) * 100 + ); +} + #[test] fn test_blocked_tokens() { - let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let astro = native_asset_info("ibc/old_cw20_astro".to_string()); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let guardian = TestAddr::new("guardian"); @@ -1086,20 +1253,20 @@ fn test_blocked_tokens() { // For simplicity we have no stakers in this test. However, all rewards are accrued in 'orphaned_rewards' let reward_info = helper.query_reward_info(norm_pair1_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); // 50 astro * 1000 passed seconds + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); // 50 astro * 1000 passed seconds let reward_info = helper.query_reward_info(norm_pair2_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); let reward_info = helper.query_reward_info(blk_pair_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 0); // This pair was just incentivized in this block + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 0); // This pair was just incentivized in this block helper.next_block(1000); let reward_info = helper.query_reward_info(norm_pair1_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); // deactivated pool didn't get anything + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); // deactivated pool didn't get anything let reward_info = helper.query_reward_info(norm_pair2_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 2000); + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 2000); let reward_info = helper.query_reward_info(blk_pair_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); // Block poor 'blk' token again. It should automatically deactivate blk_pair helper @@ -1109,20 +1276,20 @@ fn test_blocked_tokens() { helper.next_block(1000); let reward_info = helper.query_reward_info(norm_pair1_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); // deactivated pool didn't get anything + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); // deactivated pool didn't get anything let reward_info = helper.query_reward_info(norm_pair2_info.liquidity_token.as_str()); assert_eq!( - reward_info[0].orphaned.to_uint_floor().u128(), + dec256_to_u128_floor(reward_info[0].orphaned), 50 * 2000 + 100 * 1000 ); // this pools is the only active atm let reward_info = helper.query_reward_info(blk_pair_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); // deactivated blk pair didn't get anything + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); // deactivated blk pair didn't get anything } #[test] fn test_blocked_pair_types() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let tokens = [ @@ -1157,12 +1324,12 @@ fn test_blocked_pair_types() { // For simplicity we have no stakers in this test. However, all rewards are accrued in 'orphaned_rewards' let reward_info = helper.query_reward_info(norm_pair1_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); // 50 astro * 1000 passed seconds + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); // 50 astro * 1000 passed seconds let reward_info = helper.query_reward_info(norm_pair2_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); // Although this pair is blocked, it still gets rewards until manually deactivated let reward_info = helper.query_reward_info(blk_pair_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); // Deactivate 'blk' pair helper.deactivate_blocked().unwrap(); @@ -1171,16 +1338,16 @@ fn test_blocked_pair_types() { let reward_info = helper.query_reward_info(norm_pair1_info.liquidity_token.as_str()); assert_eq!( - reward_info[0].orphaned.to_uint_floor().u128(), + dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000 + 75 * 1000 ); let reward_info = helper.query_reward_info(norm_pair2_info.liquidity_token.as_str()); assert_eq!( - reward_info[0].orphaned.to_uint_floor().u128(), + dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000 + 75 * 1000 ); let reward_info = helper.query_reward_info(blk_pair_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); // deactivated blk pair didn't get anything + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); // deactivated blk pair didn't get anything // Next time setup pool won't allow to activate 'blk' pair let err = helper @@ -1233,22 +1400,22 @@ fn test_blocked_pair_types() { let reward_info = helper.query_reward_info(norm_pair1_info.liquidity_token.as_str()); assert_eq!( - reward_info[0].orphaned.to_uint_floor().u128(), + dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000 + 75 * 1000 // deactivated pool gets nothing ); let reward_info = helper.query_reward_info(norm_pair2_info.liquidity_token.as_str()); assert_eq!( - reward_info[0].orphaned.to_uint_floor().u128(), + dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000 + 75 * 1000 + 150 * 1000 ); let reward_info = helper.query_reward_info(blk_pair_info.liquidity_token.as_str()); - assert_eq!(reward_info[0].orphaned.to_uint_floor().u128(), 50 * 1000); // deactivated blk pair still gets nothing + assert_eq!(dec256_to_u128_floor(reward_info[0].orphaned), 50 * 1000); // deactivated blk pair still gets nothing } #[test] fn test_incentives_with_blocked() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let incentivization_fee = helper.incentivization_fee.clone(); @@ -1286,7 +1453,7 @@ fn test_incentives_with_blocked() { fn test_remove_rewards() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); helper .app .update_block(|block| block.time = Timestamp::from_seconds(EPOCHS_START + EPOCH_LENGTH)); @@ -1402,7 +1569,7 @@ fn test_remove_rewards() { fn test_long_unclaimed_rewards() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); helper .app .update_block(|block| block.time = Timestamp::from_seconds(EPOCHS_START + EPOCH_LENGTH)); @@ -1528,7 +1695,7 @@ fn test_long_unclaimed_rewards() { #[test] fn test_queries() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let incentivization_fee = helper.incentivization_fee.clone(); @@ -1626,27 +1793,27 @@ fn test_queries() { res, [ ScheduleResponse { - rps: Decimal::from_str("2398.02426572720408957").unwrap(), + rps: Decimal256::from_str("2398.02426572720408957").unwrap(), start_ts: 1696810000, end_ts: 1698019200, }, ScheduleResponse { - rps: Decimal::from_str("1571.031212468851459733").unwrap(), + rps: Decimal256::from_str("1571.031212468851459733").unwrap(), start_ts: 1698019200, end_ts: 1698624000, }, ScheduleResponse { - rps: Decimal::from_str("1019.76329626157472324").unwrap(), + rps: Decimal256::from_str("1019.76329626157472324").unwrap(), start_ts: 1698624000, end_ts: 1699228800, }, ScheduleResponse { - rps: Decimal::from_str("606.335150073382231096").unwrap(), + rps: Decimal256::from_str("606.335150073382231096").unwrap(), start_ts: 1699228800, end_ts: 1699833600, }, ScheduleResponse { - rps: Decimal::from_str("275.603571822290816888").unwrap(), + rps: Decimal256::from_str("275.603571822290816888").unwrap(), start_ts: 1699833600, end_ts: 1700438400, }, @@ -1668,7 +1835,7 @@ fn test_queries() { #[test] fn test_update_config() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let new_vesting = TestAddr::new("new_vesting"); let new_generator_controller = TestAddr::new("new_generator_controller"); @@ -1679,6 +1846,7 @@ fn test_update_config() { }; let msg = ExecuteMsg::UpdateConfig { + astro_token: Some(AssetInfo::native("new_astro")), vesting_contract: Some(new_vesting.to_string()), generator_controller: Some(new_generator_controller.to_string()), guardian: Some(new_guardian.to_string()), @@ -1700,6 +1868,7 @@ fn test_update_config() { .unwrap(); let config = helper.query_config(); + assert_eq!(config.astro_token, AssetInfo::native("new_astro")); assert_eq!(config.vesting_contract, new_vesting); assert_eq!( config.generator_controller.unwrap(), @@ -1715,7 +1884,7 @@ fn test_update_config() { #[test] fn test_change_ownership() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let new_owner = TestAddr::new("new_owner"); @@ -1818,7 +1987,7 @@ fn test_change_ownership() { fn test_incentive_without_funds() { let astro = native_asset_info("astro".to_string()); let usdc = native_asset_info("usdc".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let asset_infos = [AssetInfo::native("foo"), AssetInfo::native("bar")]; let pair_info = helper.create_pair(&asset_infos).unwrap(); @@ -1863,7 +2032,7 @@ fn test_incentive_without_funds() { #[test] fn test_claim_excess_rewards() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let mut pools = vec![ ("uusd", "eur", "".to_string(), vec!["user1", "user2"], 100), @@ -1951,7 +2120,7 @@ fn test_claim_excess_rewards() { #[test] fn test_user_claim_less() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let incentivization_fee = helper.incentivization_fee.clone(); @@ -2051,7 +2220,7 @@ fn test_user_claim_less() { #[test] fn test_broken_cw20_incentives() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let incentivization_fee = helper.incentivization_fee.clone(); @@ -2147,7 +2316,7 @@ fn test_broken_cw20_incentives() { #[test] fn test_factory_deregisters_any_pool() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let asset_infos = &[AssetInfo::native("usd"), AssetInfo::native("foo")]; // factory contract create pair @@ -2163,7 +2332,7 @@ fn test_factory_deregisters_any_pool() { #[test] fn test_orphaned_rewards() { let astro = native_asset_info("astro".to_string()); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let incentivization_fee = helper.incentivization_fee.clone(); let asset_infos = [AssetInfo::native("foo"), AssetInfo::native("bar")]; diff --git a/contracts/tokenomics/incentives/tests/incentives_simulations.rs b/contracts/tokenomics/incentives/tests/incentives_simulations.rs index f1aa01513..c68638973 100644 --- a/contracts/tokenomics/incentives/tests/incentives_simulations.rs +++ b/contracts/tokenomics/incentives/tests/incentives_simulations.rs @@ -106,7 +106,7 @@ fn update_total_rewards( fn simulate_case(events: Vec<(Event, u64)>) { let astro = AssetInfo::native("astro"); - let mut helper = Helper::new("owner", &astro).unwrap(); + let mut helper = Helper::new("owner", &astro, false).unwrap(); let owner = helper.owner.clone(); let incentivization_fee = helper.incentivization_fee.clone(); diff --git a/contracts/tokenomics/vesting/Cargo.toml b/contracts/tokenomics/vesting/Cargo.toml index 89358b6f9..25eb2d0fb 100644 --- a/contracts/tokenomics/vesting/Cargo.toml +++ b/contracts/tokenomics/vesting/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "astroport-vesting" -version = "1.3.2" +version = "1.4.0" authors = ["Astroport"] edition = "2021" @@ -13,15 +13,18 @@ backtraces = ["cosmwasm-std/backtraces"] library = [] [dependencies] -cw2 = { version = "0.15" } -cw20 = { version = "0.15" } -cosmwasm-std = { version = "1.1" } +cw2 = "1.1" +cw20 = "0.15" +cosmwasm-std = "1.5" cw-storage-plus = "0.15" astroport = { path = "../../../packages/astroport", version = "3" } -thiserror = { version = "1.0" } -cw-utils = "0.15" -cosmwasm-schema = { version = "1.1", default-features = false } +thiserror = "1" +cw-utils = "1" +cosmwasm-schema = "1.5" [dev-dependencies] -cw-multi-test = "0.15" -astroport-token = { path = "../../token" } +cw-multi-test = "0.20" +cw20-base = "0.15" +astro-token-converter = { path = "../../periphery/astro_converter", version = "1", features = ["library"] } +astroport-vesting_131 = { package = "astroport-vesting", version = "1.3.1", features = ["library"] } + diff --git a/contracts/tokenomics/vesting/src/contract.rs b/contracts/tokenomics/vesting/src/contract.rs index 0a2f36c2c..544668f40 100644 --- a/contracts/tokenomics/vesting/src/contract.rs +++ b/contracts/tokenomics/vesting/src/contract.rs @@ -1,21 +1,22 @@ use cosmwasm_std::{ - attr, entry_point, from_json, to_json_binary, Addr, Binary, Deps, DepsMut, Env, MessageInfo, - Response, StdError, StdResult, SubMsg, Uint128, + attr, coins, ensure, entry_point, from_json, to_json_binary, wasm_execute, Addr, Binary, Deps, + DepsMut, Env, MessageInfo, Response, StdError, StdResult, SubMsg, Uint128, }; +use cw2::{get_contract_version, set_contract_version}; +use cw20::Cw20ReceiveMsg; +use cw_utils::must_pay; -use crate::state::{read_vesting_infos, Config, CONFIG, OWNERSHIP_PROPOSAL, VESTING_INFO}; - -use crate::error::ContractError; use astroport::asset::{addr_opt_validate, token_asset_info, AssetInfo, AssetInfoExt}; +use astroport::astro_converter; use astroport::common::{claim_ownership, drop_ownership_proposal, propose_new_owner}; use astroport::vesting::{ ConfigResponse, Cw20HookMsg, ExecuteMsg, InstantiateMsg, MigrateMsg, OrderBy, QueryMsg, VestingAccount, VestingAccountResponse, VestingAccountsResponse, VestingInfo, VestingSchedule, VestingSchedulePoint, }; -use cw2::{get_contract_version, set_contract_version}; -use cw20::Cw20ReceiveMsg; -use cw_utils::must_pay; + +use crate::error::ContractError; +use crate::state::{read_vesting_infos, Config, CONFIG, OWNERSHIP_PROPOSAL, VESTING_INFO}; /// Contract name that is used for migration. const CONTRACT_NAME: &str = "astroport-vesting"; @@ -518,12 +519,58 @@ pub fn query_vesting_available_amount(deps: Deps, env: Env, address: String) -> /// Manages contract migration. #[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { +pub fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Result { let contract_version = get_contract_version(deps.storage)?; + let mut resp = Response::default(); + match contract_version.contract.as_ref() { "astroport-vesting" => match contract_version.version.as_ref() { - "1.1.0" | "1.2.0" | "1.3.0" | "1.3.1" => {} + // injective-888 1.1.0 + // pacific-1, injective-1, pisco-1, atlantic-2 1.2.0 + // phoenix-1 1.3.0 + // neutron-1, pion-1 1.3.1 + "1.1.0" | "1.2.0" | "1.3.0" | "1.3.1" => { + let mut config = CONFIG.load(deps.storage)?; + + let converter_config: astro_converter::Config = deps.querier.query_wasm_smart( + &msg.converter_contract, + &astro_converter::QueryMsg::Config {}, + )?; + + ensure!( + converter_config.old_astro_asset_info == config.vesting_token, + StdError::generic_err(format!( + "Old astro asset info mismatch between vesting {} and converter {}", + config.vesting_token, converter_config.old_astro_asset_info + )) + ); + + let total_amount = config + .vesting_token + .query_pool(&deps.querier, env.contract.address)?; + + let convert_msg = match &config.vesting_token { + AssetInfo::Token { contract_addr } => wasm_execute( + contract_addr, + &cw20::Cw20ExecuteMsg::Send { + contract: msg.converter_contract, + amount: total_amount, + msg: to_json_binary(&astro_converter::Cw20HookMsg { receiver: None })?, + }, + vec![], + )?, + AssetInfo::NativeToken { denom } => wasm_execute( + &msg.converter_contract, + &astro_converter::ExecuteMsg::Convert { receiver: None }, + coins(total_amount.u128(), denom.to_string()), + )?, + }; + resp.messages.push(SubMsg::new(convert_msg)); + + config.vesting_token = AssetInfo::native(&converter_config.new_astro_denom); + CONFIG.save(deps.storage, &config)?; + } _ => return Err(ContractError::MigrationError {}), }, _ => return Err(ContractError::MigrationError {}), @@ -531,7 +578,7 @@ pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result App { fn store_token_code(app: &mut App) -> u64 { let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )); app.store_code(astro_token_contract) @@ -1449,6 +1554,91 @@ fn instantiate_vesting_remote_chain(app: &mut App) -> Addr { .unwrap() } +fn instantiate_vesting_131(app: &mut App) -> Addr { + let vesting_contract = Box::new(ContractWrapper::new_with_empty( + astroport_vesting_131::contract::execute, + astroport_vesting_131::contract::instantiate, + astroport_vesting_131::contract::query, + )); + let owner = Addr::unchecked(OWNER1); + let vesting_code_id = app.store_code(vesting_contract); + + let init_msg = InstantiateMsg { + owner: OWNER1.to_string(), + vesting_token: native_asset_info(IBC_ASTRO.to_string()), + }; + + app.instantiate_contract( + vesting_code_id, + owner.clone(), + &init_msg, + &[], + "Vesting", + Some(OWNER1.to_string()), + ) + .unwrap() +} + +fn migrate_vesting(app: &mut App, vesting: &Addr) { + // Setup converter + let converter_contract = Box::new(ContractWrapper::new_with_empty( + astro_token_converter::contract::execute, + astro_token_converter::contract::instantiate, + astro_token_converter::contract::query, + )); + let converter_code_id = app.store_code(converter_contract); + + let msg = astro_converter::InstantiateMsg { + old_astro_asset_info: AssetInfo::native(IBC_ASTRO), + new_astro_denom: NEW_ASTRO_DENOM.to_string(), + outpost_burn_params: Some(OutpostBurnParams { + terra_burn_addr: "terra1xxxx".to_string(), + old_astro_transfer_channel: "channel-228".to_string(), + }), + }; + + let converter_contract = app + .instantiate_contract( + converter_code_id, + Addr::unchecked(OWNER1), + &msg, + &[], + "Converter", + None, + ) + .unwrap(); + + app.init_modules(|app, _, storage| { + app.bank + .init_balance( + storage, + &converter_contract, + vec![coin(u128::MAX, NEW_ASTRO_DENOM)], + ) + .unwrap() + }); + + let vesting_contract = Box::new( + ContractWrapper::new_with_empty( + astroport_vesting::contract::execute, + astroport_vesting::contract::instantiate, + astroport_vesting::contract::query, + ) + .with_migrate(astroport_vesting::contract::migrate), + ); + let vesting_code_id = app.store_code(vesting_contract); + + app.migrate_contract( + Addr::unchecked(OWNER1), + vesting.clone(), + &MigrateMsg { + converter_contract: converter_contract.to_string(), + }, + vesting_code_id, + ) + .unwrap(); +} + fn mint_tokens(app: &mut App, token: &Addr, recipient: &Addr, amount: u128) { let msg = Cw20ExecuteMsg::Mint { recipient: recipient.to_string(), diff --git a/packages/astroport/Cargo.toml b/packages/astroport/Cargo.toml index 6787ec4a2..cf545a734 100644 --- a/packages/astroport/Cargo.toml +++ b/packages/astroport/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "astroport" -version = "3.11.0" +version = "3.11.2" authors = ["Astroport"] edition = "2021" description = "Common Astroport types, queriers and other utils" -license = "GPL-3.0-only" +license = "Apache-2.0" repository = "https://github.com/astroport-fi/astroport" homepage = "https://astroport.fi" diff --git a/packages/astroport/src/incentives.rs b/packages/astroport/src/incentives.rs index 2134647ab..8805081ca 100644 --- a/packages/astroport/src/incentives.rs +++ b/packages/astroport/src/incentives.rs @@ -1,7 +1,7 @@ use std::hash::{Hash, Hasher}; use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{Addr, Coin, Decimal, Env, StdError, StdResult, Uint128}; +use cosmwasm_std::{Addr, Coin, Decimal256, Env, StdError, StdResult, Uint128}; use cw20::Cw20ReceiveMsg; use crate::asset::{Asset, AssetInfo}; @@ -46,7 +46,7 @@ pub struct IncentivesSchedule { /// Reward asset info pub reward_info: AssetInfo, /// Reward per second for the whole schedule - pub rps: Decimal, + pub rps: Decimal256, } impl IncentivesSchedule { @@ -71,9 +71,9 @@ impl IncentivesSchedule { }; let end_ts = next_epoch_start_ts + input.duration_periods * EPOCH_LENGTH; - let rps = Decimal::from_ratio(input.reward.amount, end_ts - block_ts); + let rps = Decimal256::from_ratio(input.reward.amount, end_ts - block_ts); - if rps < Decimal::one() { + if rps < Decimal256::one() { return Err(StdError::generic_err(format!( "Reward per second must be at least 1 unit but actual is {rps}", ))); @@ -158,6 +158,8 @@ pub enum ExecuteMsg { /// Update config. /// Only the owner can execute it. UpdateConfig { + /// The new ASTRO token info + astro_token: Option, /// The new vesting contract address vesting_contract: Option, /// The new generator controller contract address @@ -328,7 +330,7 @@ impl RewardType { pub fn matches(&self, other: &Self) -> bool { match (&self, other) { - (RewardType::Int(info1), RewardType::Int(info2)) => info1 == info2, + (RewardType::Int(..), RewardType::Int(..)) => true, (RewardType::Ext { info: info1, .. }, RewardType::Ext { info: info2, .. }) => { info1 == info2 } @@ -368,12 +370,12 @@ pub struct RewardInfo { /// Defines [`AssetInfo`] of reward token as well as its type: protocol or external. pub reward: RewardType, /// Reward tokens per second for the whole pool - pub rps: Decimal, + pub rps: Decimal256, /// Last checkpointed reward per LP token - pub index: Decimal, + pub index: Decimal256, /// Orphaned rewards might appear between the time when pool /// gets incentivized and the time when first user stakes - pub orphaned: Decimal, + pub orphaned: Decimal256, } #[cw_serde] @@ -388,7 +390,7 @@ pub struct PoolInfoResponse { #[cw_serde] pub struct ScheduleResponse { - pub rps: Decimal, + pub rps: Decimal256, pub start_ts: u64, pub end_ts: u64, } @@ -418,7 +420,7 @@ mod tests { assert_eq!(schedule.next_epoch_start_ts, EPOCHS_START); assert_eq!(schedule.end_ts, schedule.next_epoch_start_ts + EPOCH_LENGTH); - assert_eq!(schedule.rps, Decimal::one()); + assert_eq!(schedule.rps, Decimal256::one()); let err = IncentivesSchedule::from_input( &env, @@ -481,6 +483,6 @@ mod tests { schedule.end_ts, schedule.next_epoch_start_ts + 3 * EPOCH_LENGTH ); - assert_eq!(schedule.rps, Decimal::one()); + assert_eq!(schedule.rps, Decimal256::one()); } } diff --git a/packages/astroport/src/vesting.rs b/packages/astroport/src/vesting.rs index 85ebbfd64..3fd4b9f8f 100644 --- a/packages/astroport/src/vesting.rs +++ b/packages/astroport/src/vesting.rs @@ -164,10 +164,13 @@ impl Into for OrderBy { } } -/// This structure describes a migration message. -/// We currently take no arguments for migrations. +/// This structure describes migration message. #[cw_serde] -pub struct MigrateMsg {} +pub struct MigrateMsg { + /// Special migration message needed during the Hub move. + /// Cw admin must be very cautious supplying correct converter contract. + pub converter_contract: String, +} /// This structure describes a CW20 hook message. #[cw_serde] From dec0cb9ec07e5b925beecab5753fe81b3bdb89ce Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Fri, 15 Mar 2024 14:12:30 +0400 Subject: [PATCH 62/84] feat(maker): allow updating astro asset info --- Cargo.lock | 86 +++++++++---------- contracts/tokenomics/maker/Cargo.toml | 24 +++--- contracts/tokenomics/maker/src/contract.rs | 9 ++ .../maker/tests/maker_integration.rs | 20 +++-- packages/astroport/Cargo.toml | 2 +- packages/astroport/src/maker.rs | 2 + 6 files changed, 80 insertions(+), 63 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5c3e478ad..3d5c46e08 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -30,8 +30,8 @@ dependencies = [ [[package]] name = "astro-satellite-package" -version = "0.1.0" -source = "git+https://github.com/astroport-fi/astroport_ibc#ffb48ebfd7dbbc010cf86c9b02bad236c456fca0" +version = "1.0.0" +source = "git+https://github.com/astroport-fi/astroport_ibc#1d14593df21408a31a571639a6ca3edb844c7857" dependencies = [ "astroport-governance 1.2.0", "cosmwasm-schema", @@ -42,7 +42,7 @@ dependencies = [ name = "astro-token-converter" version = "1.0.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -57,7 +57,7 @@ name = "astro-token-converter-neutron" version = "1.0.0" dependencies = [ "astro-token-converter", - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-std", "cw-utils 1.0.3", "cw2 1.1.2", @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "astroport" -version = "3.11.2" +version = "3.12.0" dependencies = [ "astroport-circular-buffer", "cosmwasm-schema", @@ -143,7 +143,7 @@ name = "astroport-factory" version = "1.7.0" dependencies = [ "anyhow", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", @@ -163,7 +163,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", @@ -179,7 +179,7 @@ name = "astroport-generator" version = "2.3.2" dependencies = [ "anyhow", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance)", "astroport-mocks", @@ -214,7 +214,7 @@ dependencies = [ name = "astroport-generator-proxy-template" version = "0.0.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -226,9 +226,9 @@ dependencies = [ [[package]] name = "astroport-governance" version = "1.2.0" -source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" +source = "git+https://github.com/astroport-fi/astroport-governance#182dd5bc201dd634995b5e4dc9e2774495693703" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -240,7 +240,7 @@ name = "astroport-governance" version = "1.4.1" source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -253,7 +253,7 @@ name = "astroport-governance" version = "1.4.1" source = "git+https://github.com/astroport-fi/hidden_astroport_governance#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -267,7 +267,7 @@ version = "1.1.0" dependencies = [ "anyhow", "astro-token-converter", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -292,7 +292,7 @@ name = "astroport-liquidity-manager" version = "1.0.3" dependencies = [ "anyhow", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -317,20 +317,20 @@ name = "astroport-maker" version = "1.4.0" dependencies = [ "astro-satellite-package", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-escrow-fee-distributor", "astroport-factory 1.7.0", "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "astroport-native-coin-registry", "astroport-pair 1.5.0", "astroport-pair-stable", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", + "cw-multi-test 0.20.0", "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", + "cw2 1.1.2", + "cw20 1.1.2", + "cw20-base 1.1.0", "thiserror", ] @@ -339,7 +339,7 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -367,7 +367,7 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -381,7 +381,7 @@ dependencies = [ name = "astroport-native-coin-wrapper" version = "0.1.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -411,7 +411,7 @@ name = "astroport-oracle" version = "2.1.1" dependencies = [ "anyhow", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -448,7 +448,7 @@ dependencies = [ name = "astroport-pair" version = "1.5.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-token", @@ -469,7 +469,7 @@ dependencies = [ name = "astroport-pair-astro-xastro" version = "1.0.3" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-pair-bonded", "astroport-staking", @@ -488,7 +488,7 @@ dependencies = [ name = "astroport-pair-bonded" version = "1.0.1" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw2 0.15.1", @@ -500,7 +500,7 @@ dependencies = [ name = "astroport-pair-bonded-template" version = "1.0.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "astroport-pair-bonded", "cosmwasm-schema", "cosmwasm-std", @@ -533,7 +533,7 @@ name = "astroport-pair-concentrated" version = "2.3.0" dependencies = [ "anyhow", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-circular-buffer", "astroport-factory 1.7.0", "astroport-mocks", @@ -559,7 +559,7 @@ version = "1.0.0" dependencies = [ "anyhow", "astro-token-converter", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-pair 1.3.3", "astroport-token", @@ -581,7 +581,7 @@ name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-circular-buffer", "astroport-factory 1.7.0", "astroport-mocks", @@ -606,7 +606,7 @@ name = "astroport-pair-transmuter" version = "1.0.0" dependencies = [ "anyhow", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-token", "cosmwasm-schema", @@ -625,7 +625,7 @@ dependencies = [ name = "astroport-pair-xyk-sale-tax" version = "1.6.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-pair 1.3.3", @@ -650,7 +650,7 @@ name = "astroport-pcl-common" version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "cosmwasm-schema", "cosmwasm-std", @@ -665,7 +665,7 @@ name = "astroport-router" version = "1.2.0" dependencies = [ "anyhow", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-factory 1.7.0", "astroport-pair 1.5.0", "astroport-token", @@ -683,7 +683,7 @@ dependencies = [ name = "astroport-shared-multisig" version = "1.0.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "astroport-generator", "astroport-mocks", "astroport-pair 1.5.0", @@ -703,7 +703,7 @@ dependencies = [ name = "astroport-staking" version = "1.1.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "astroport-token", "astroport-xastro-token", "cosmwasm-schema", @@ -721,7 +721,7 @@ dependencies = [ name = "astroport-token" version = "1.1.1" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -751,7 +751,7 @@ name = "astroport-vesting" version = "1.4.0" dependencies = [ "astro-token-converter", - "astroport 3.11.2", + "astroport 3.12.0", "astroport-vesting 1.3.1", "cosmwasm-schema", "cosmwasm-std", @@ -768,7 +768,7 @@ dependencies = [ name = "astroport-whitelist" version = "1.0.1" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", @@ -780,7 +780,7 @@ dependencies = [ name = "astroport-xastro-outpost-token" version = "1.0.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -795,7 +795,7 @@ dependencies = [ name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -1794,7 +1794,7 @@ version = "0.0.0" source = "git+https://github.com/astroport-fi/astro-generator-proxy-contracts?branch=main#e573a8f8542b99015cac910f024a5f20fd793f3c" dependencies = [ "ap-valkyrie", - "astroport 3.11.2", + "astroport 3.12.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", diff --git a/contracts/tokenomics/maker/Cargo.toml b/contracts/tokenomics/maker/Cargo.toml index 6ca4b9070..c25720ad6 100644 --- a/contracts/tokenomics/maker/Cargo.toml +++ b/contracts/tokenomics/maker/Cargo.toml @@ -5,9 +5,9 @@ authors = ["Astroport"] edition = "2021" exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", ] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -21,20 +21,20 @@ crate-type = ["cdylib", "rlib"] backtraces = ["cosmwasm-std/backtraces"] [dependencies] -cosmwasm-std = "1.1" -cw2 = "0.15" -cw20 = "0.15" +cosmwasm-std = "1.5" +cw2 = "1" +cw20 = "1" cw-storage-plus = "0.15" -astroport = { path = "../../../packages/astroport", version = "3.10" } -thiserror = { version = "1.0" } -cosmwasm-schema = "1.1" -astro-satellite-package = { git = "https://github.com/astroport-fi/astroport_ibc", version = "0.1" } +astroport = { path = "../../../packages/astroport", version = "3.12" } +thiserror = "1" +cosmwasm-schema = "1.5" +astro-satellite-package = { git = "https://github.com/astroport-fi/astroport_ibc", version = "1" } [dev-dependencies] -astroport-token = { path = "../../token" } +cw20-base = "1" astroport-factory = { path = "../../factory" } astroport-pair = { path = "../../pair" } -cw-multi-test = "0.15" +cw-multi-test = "0.20" astroport-pair-stable = { path = "../../pair_stable" } astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", branch = "main" } astroport-escrow-fee-distributor = { git = "https://github.com/astroport-fi/hidden_astroport_governance", branch = "main" } diff --git a/contracts/tokenomics/maker/src/contract.rs b/contracts/tokenomics/maker/src/contract.rs index 5c0750807..37d0bda96 100644 --- a/contracts/tokenomics/maker/src/contract.rs +++ b/contracts/tokenomics/maker/src/contract.rs @@ -189,6 +189,7 @@ pub fn execute( max_spread, second_receiver_params, collect_cooldown, + astro_token, } => update_config( deps, info, @@ -200,6 +201,7 @@ pub fn execute( max_spread, second_receiver_params, collect_cooldown, + astro_token, ), ExecuteMsg::UpdateBridges { add, remove } => update_bridges(deps, info, add, remove), ExecuteMsg::SwapBridgeAssets { assets, depth } => { @@ -695,6 +697,7 @@ fn update_config( max_spread: Option, second_receiver_params: Option, collect_cooldown: Option, + astro_token: Option, ) -> Result { let mut attributes = vec![attr("action", "set_config")]; @@ -780,6 +783,12 @@ fn update_config( attributes.push(attr("collect_cooldown", collect_cooldown.to_string())); } + if let Some(astro_token) = astro_token { + astro_token.check(deps.api)?; + attributes.push(attr("new_astro_token", astro_token.to_string())); + config.astro_token = astro_token; + } + CONFIG.save(deps.storage, &config)?; Ok(Response::new().add_attributes(attributes)) diff --git a/contracts/tokenomics/maker/tests/maker_integration.rs b/contracts/tokenomics/maker/tests/maker_integration.rs index aa33ae4f2..8066cc6e1 100644 --- a/contracts/tokenomics/maker/tests/maker_integration.rs +++ b/contracts/tokenomics/maker/tests/maker_integration.rs @@ -17,8 +17,8 @@ use astroport::maker::{ AssetWithLimit, BalancesResponse, ConfigResponse, ExecuteMsg, InstantiateMsg, QueryMsg, SecondReceiverConfig, SecondReceiverParams, COOLDOWN_LIMITS, }; -use astroport::token::InstantiateMsg as TokenInstantiateMsg; use astroport_maker::error::ContractError; +use cw20_base::msg::InstantiateMsg as TokenInstantiateMsg; const OWNER: &str = "owner"; @@ -99,9 +99,9 @@ fn instantiate_contracts( collect_cooldown: Option, ) -> (Addr, Addr, Addr, Addr) { let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )); let astro_token_code_id = router.store_code(astro_token_contract); @@ -266,9 +266,9 @@ fn instantiate_contracts( fn instantiate_token(router: &mut App, owner: Addr, name: String, symbol: String) -> Addr { let token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )); let token_code_id = router.store_code(token_contract); @@ -516,6 +516,7 @@ fn update_config() { max_spread: Some(new_max_spread), second_receiver_params: None, collect_cooldown: None, + astro_token: None, }; // Assert cannot update with improper owner @@ -558,6 +559,7 @@ fn update_config() { second_receiver_cut: Default::default(), }), collect_cooldown: None, + astro_token: None, }; let err = router @@ -577,6 +579,7 @@ fn update_config() { second_receiver_cut: Uint64::new(10), }), collect_cooldown: None, + astro_token: None, }; router @@ -606,6 +609,7 @@ fn update_config() { max_spread: None, second_receiver_params: None, collect_cooldown: Some(*COOLDOWN_LIMITS.start() - 1), + astro_token: None, }; let err = router @@ -628,6 +632,7 @@ fn update_config() { max_spread: None, second_receiver_params: None, collect_cooldown: Some(*COOLDOWN_LIMITS.end() + 1), + astro_token: None, }; let err = router .execute_contract(owner.clone(), maker_instance.clone(), &msg, &[]) @@ -649,6 +654,7 @@ fn update_config() { max_spread: None, second_receiver_params: None, collect_cooldown: Some((*COOLDOWN_LIMITS.end() - *COOLDOWN_LIMITS.start()) / 2), + astro_token: None, }; router .execute_contract(owner.clone(), maker_instance.clone(), &msg, &[]) diff --git a/packages/astroport/Cargo.toml b/packages/astroport/Cargo.toml index cf545a734..89c35b073 100644 --- a/packages/astroport/Cargo.toml +++ b/packages/astroport/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "astroport" -version = "3.11.2" +version = "3.12.0" authors = ["Astroport"] edition = "2021" description = "Common Astroport types, queriers and other utils" diff --git a/packages/astroport/src/maker.rs b/packages/astroport/src/maker.rs index d999f7c00..e3cfba999 100644 --- a/packages/astroport/src/maker.rs +++ b/packages/astroport/src/maker.rs @@ -93,6 +93,8 @@ pub enum ExecuteMsg { second_receiver_params: Option, /// Defines the period when maker collect can be called collect_cooldown: Option, + /// The ASTRO token asset info + astro_token: Option, }, /// Add bridge tokens used to swap specific fee tokens to ASTRO (effectively declaring a swap route) UpdateBridges { From cb3cce43006661c02299258742782fe00cf3b7ab Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Fri, 15 Mar 2024 14:36:39 +0400 Subject: [PATCH 63/84] bump Cargo.lock --- Cargo.lock | 75 +++++++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3d5c46e08..10e66e96c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -42,7 +42,7 @@ dependencies = [ name = "astro-token-converter" version = "1.0.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -57,7 +57,7 @@ name = "astro-token-converter-neutron" version = "1.0.0" dependencies = [ "astro-token-converter", - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-std", "cw-utils 1.0.3", "cw2 1.1.2", @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "astroport" -version = "3.12.0" +version = "3.13.0" dependencies = [ "astroport-circular-buffer", "cosmwasm-schema", @@ -143,7 +143,7 @@ name = "astroport-factory" version = "1.7.0" dependencies = [ "anyhow", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", @@ -163,7 +163,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", @@ -179,7 +179,7 @@ name = "astroport-generator" version = "2.3.2" dependencies = [ "anyhow", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance)", "astroport-mocks", @@ -214,7 +214,7 @@ dependencies = [ name = "astroport-generator-proxy-template" version = "0.0.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -228,7 +228,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#182dd5bc201dd634995b5e4dc9e2774495693703" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -240,7 +240,7 @@ name = "astroport-governance" version = "1.4.1" source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -253,7 +253,7 @@ name = "astroport-governance" version = "1.4.1" source = "git+https://github.com/astroport-fi/hidden_astroport_governance#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -267,7 +267,7 @@ version = "1.1.0" dependencies = [ "anyhow", "astro-token-converter", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -292,7 +292,7 @@ name = "astroport-liquidity-manager" version = "1.0.3" dependencies = [ "anyhow", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -317,7 +317,7 @@ name = "astroport-maker" version = "1.4.0" dependencies = [ "astro-satellite-package", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-escrow-fee-distributor", "astroport-factory 1.7.0", "astroport-governance 1.4.1 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", @@ -339,7 +339,7 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -367,7 +367,7 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -381,7 +381,7 @@ dependencies = [ name = "astroport-native-coin-wrapper" version = "0.1.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -411,7 +411,7 @@ name = "astroport-oracle" version = "2.1.1" dependencies = [ "anyhow", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -448,7 +448,7 @@ dependencies = [ name = "astroport-pair" version = "1.5.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-token", @@ -469,7 +469,7 @@ dependencies = [ name = "astroport-pair-astro-xastro" version = "1.0.3" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-pair-bonded", "astroport-staking", @@ -488,7 +488,7 @@ dependencies = [ name = "astroport-pair-bonded" version = "1.0.1" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw2 0.15.1", @@ -500,7 +500,7 @@ dependencies = [ name = "astroport-pair-bonded-template" version = "1.0.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "astroport-pair-bonded", "cosmwasm-schema", "cosmwasm-std", @@ -533,7 +533,7 @@ name = "astroport-pair-concentrated" version = "2.3.0" dependencies = [ "anyhow", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-circular-buffer", "astroport-factory 1.7.0", "astroport-mocks", @@ -559,7 +559,7 @@ version = "1.0.0" dependencies = [ "anyhow", "astro-token-converter", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-pair 1.3.3", "astroport-token", @@ -581,7 +581,7 @@ name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-circular-buffer", "astroport-factory 1.7.0", "astroport-mocks", @@ -603,11 +603,12 @@ dependencies = [ [[package]] name = "astroport-pair-transmuter" -version = "1.0.0" +version = "1.1.1" dependencies = [ "anyhow", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", + "astroport-native-coin-registry", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -625,7 +626,7 @@ dependencies = [ name = "astroport-pair-xyk-sale-tax" version = "1.6.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-pair 1.3.3", @@ -650,7 +651,7 @@ name = "astroport-pcl-common" version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "cosmwasm-schema", "cosmwasm-std", @@ -665,7 +666,7 @@ name = "astroport-router" version = "1.2.0" dependencies = [ "anyhow", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-pair 1.5.0", "astroport-token", @@ -683,7 +684,7 @@ dependencies = [ name = "astroport-shared-multisig" version = "1.0.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "astroport-generator", "astroport-mocks", "astroport-pair 1.5.0", @@ -703,7 +704,7 @@ dependencies = [ name = "astroport-staking" version = "1.1.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "astroport-token", "astroport-xastro-token", "cosmwasm-schema", @@ -721,7 +722,7 @@ dependencies = [ name = "astroport-token" version = "1.1.1" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -751,7 +752,7 @@ name = "astroport-vesting" version = "1.4.0" dependencies = [ "astro-token-converter", - "astroport 3.12.0", + "astroport 3.13.0", "astroport-vesting 1.3.1", "cosmwasm-schema", "cosmwasm-std", @@ -768,7 +769,7 @@ dependencies = [ name = "astroport-whitelist" version = "1.0.1" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", @@ -780,7 +781,7 @@ dependencies = [ name = "astroport-xastro-outpost-token" version = "1.0.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -795,7 +796,7 @@ dependencies = [ name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -1794,7 +1795,7 @@ version = "0.0.0" source = "git+https://github.com/astroport-fi/astro-generator-proxy-contracts?branch=main#e573a8f8542b99015cac910f024a5f20fd793f3c" dependencies = [ "ap-valkyrie", - "astroport 3.12.0", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", From 713af340f48c1d86a2738618b1a0908dd0880356 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:39:17 +0100 Subject: [PATCH 64/84] fix astroport-governance deps --- Cargo.lock | 118 ++++++++++++-------------- contracts/tokenomics/maker/Cargo.toml | 4 +- 2 files changed, 56 insertions(+), 66 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9355f96af..0d57784a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -48,7 +48,7 @@ name = "astro-satellite-package" version = "0.1.0" source = "git+https://github.com/astroport-fi/astroport_ibc#ffb48ebfd7dbbc010cf86c9b02bad236c456fca0" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/astroport-governance)", + "astroport-governance 1.2.0", "cosmwasm-schema", "cosmwasm-std", ] @@ -70,26 +70,30 @@ dependencies = [ [[package]] name = "astroport" -version = "3.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "195a7441515817c0d114ec3bebe9faa21393781f796c179c38c75e3cfb9fb4ec" +version = "3.12.1" dependencies = [ - "astroport-circular-buffer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "astroport-circular-buffer 0.1.0", "cosmwasm-schema", "cosmwasm-std", + "cw-asset", "cw-storage-plus 0.15.1", "cw-utils 1.0.3", "cw20 0.15.1", "cw3", + "injective-math", "itertools 0.10.5", + "test-case", + "thiserror", "uint 0.9.5", ] [[package]] name = "astroport" -version = "3.11.0" +version = "3.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdebdf96895f363e121710cb84bbbfa659cea1bb1470260d4976d1a7206b3b16" dependencies = [ - "astroport-circular-buffer 0.1.0", + "astroport-circular-buffer 0.2.0", "cosmwasm-schema", "cosmwasm-std", "cw-asset", @@ -97,10 +101,7 @@ dependencies = [ "cw-utils 1.0.3", "cw20 0.15.1", "cw3", - "injective-math", "itertools 0.10.5", - "test-case", - "thiserror", "uint 0.9.5", ] @@ -116,9 +117,9 @@ dependencies = [ [[package]] name = "astroport-circular-buffer" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac37467245383e7a6baeaaabc22dfd85a7b70ff5d693f757ba63bbc6e39d2c3" +checksum = "31c7369d3c4126804f861620db2221c15b5fa7b7718f12180e265b087c933fb6" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -129,9 +130,9 @@ dependencies = [ [[package]] name = "astroport-escrow-fee-distributor" version = "1.0.2" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.1", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -161,7 +162,7 @@ name = "astroport-factory" version = "1.7.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", @@ -181,7 +182,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", @@ -196,8 +197,8 @@ dependencies = [ name = "astroport-generator" version = "2.3.2" dependencies = [ - "astroport 3.11.0", - "astroport-governance 1.4.0", + "astroport 3.12.1", + "astroport-governance 1.4.1", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -213,7 +214,7 @@ dependencies = [ name = "astroport-generator-proxy-template" version = "0.0.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -225,9 +226,9 @@ dependencies = [ [[package]] name = "astroport-governance" version = "1.2.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/astroport-governance#182dd5bc201dd634995b5e4dc9e2774495693703" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -236,22 +237,10 @@ dependencies = [ [[package]] name = "astroport-governance" -version = "1.2.0" -source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" +version = "1.4.1" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport 3.11.0", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw20 0.15.1", -] - -[[package]] -name = "astroport-governance" -version = "1.4.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance#259fbc78d33f1b76e4213054babc95a1d9202f5c" -dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -261,10 +250,10 @@ dependencies = [ [[package]] name = "astroport-incentives" -version = "1.0.0" +version = "1.0.1" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -288,7 +277,7 @@ name = "astroport-liquidity-manager" version = "1.0.3" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -313,10 +302,10 @@ name = "astroport-maker" version = "1.4.0" dependencies = [ "astro-satellite-package", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-escrow-fee-distributor", "astroport-factory 1.7.0", - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance 1.4.1", "astroport-native-coin-registry", "astroport-pair 1.5.0", "astroport-pair-stable", @@ -335,7 +324,7 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -363,7 +352,7 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -377,7 +366,7 @@ dependencies = [ name = "astroport-native-coin-wrapper" version = "0.1.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -394,7 +383,7 @@ name = "astroport-oracle" version = "2.1.1" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -414,7 +403,7 @@ dependencies = [ name = "astroport-pair" version = "1.5.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "astroport-factory 1.7.0", "astroport-mocks", "astroport-token", @@ -437,7 +426,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd96bc64722440636ed6267a6945ccce076231a08467d6d46a4af4c4ff062c69" dependencies = [ - "astroport 3.6.1", + "astroport 3.12.2", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -453,7 +442,7 @@ dependencies = [ name = "astroport-pair-bonded" version = "1.0.1" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw2 0.15.1", @@ -465,7 +454,7 @@ dependencies = [ name = "astroport-pair-bonded-template" version = "1.0.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "astroport-pair-bonded", "cosmwasm-schema", "cosmwasm-std", @@ -498,7 +487,7 @@ name = "astroport-pair-concentrated" version = "2.3.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-circular-buffer 0.1.0", "astroport-factory 1.7.0", "astroport-mocks", @@ -523,7 +512,7 @@ name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-circular-buffer 0.1.0", "astroport-factory 1.7.0", "astroport-mocks", @@ -545,11 +534,12 @@ dependencies = [ [[package]] name = "astroport-pair-transmuter" -version = "1.0.0" +version = "1.1.1" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-factory 1.7.0", + "astroport-native-coin-registry", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -567,7 +557,7 @@ dependencies = [ name = "astroport-pair-xyk-sale-tax" version = "1.6.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "astroport-factory 1.7.0", "astroport-mocks", "astroport-pair 1.5.0", @@ -592,7 +582,7 @@ name = "astroport-pcl-common" version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-factory 1.7.0", "cosmwasm-schema", "cosmwasm-std", @@ -607,7 +597,7 @@ name = "astroport-router" version = "1.2.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-factory 1.7.0", "astroport-pair 1.5.0", "astroport-token", @@ -625,7 +615,7 @@ dependencies = [ name = "astroport-shared-multisig" version = "1.0.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "astroport-generator", "astroport-mocks", "astroport-pair 1.5.0", @@ -646,7 +636,7 @@ name = "astroport-staking" version = "2.0.0" dependencies = [ "anyhow", - "astroport 3.11.0", + "astroport 3.12.1", "astroport-tokenfactory-tracker", "cosmwasm-schema", "cosmwasm-std", @@ -663,7 +653,7 @@ dependencies = [ name = "astroport-token" version = "1.1.1" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -676,7 +666,7 @@ dependencies = [ name = "astroport-tokenfactory-tracker" version = "1.0.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -691,7 +681,7 @@ dependencies = [ name = "astroport-vesting" version = "1.3.2" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -707,7 +697,7 @@ dependencies = [ name = "astroport-whitelist" version = "1.0.1" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", @@ -719,7 +709,7 @@ dependencies = [ name = "astroport-xastro-outpost-token" version = "1.0.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -734,7 +724,7 @@ dependencies = [ name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport 3.11.0", + "astroport 3.12.1", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", diff --git a/contracts/tokenomics/maker/Cargo.toml b/contracts/tokenomics/maker/Cargo.toml index 6ca4b9070..98f364729 100644 --- a/contracts/tokenomics/maker/Cargo.toml +++ b/contracts/tokenomics/maker/Cargo.toml @@ -36,6 +36,6 @@ astroport-factory = { path = "../../factory" } astroport-pair = { path = "../../pair" } cw-multi-test = "0.15" astroport-pair-stable = { path = "../../pair_stable" } -astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", branch = "main" } -astroport-escrow-fee-distributor = { git = "https://github.com/astroport-fi/hidden_astroport_governance", branch = "main" } +astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "1" } +astroport-escrow-fee-distributor = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "1" } astroport-native-coin-registry = { path = "../../periphery/native_coin_registry" } From 18a69e8561fb713639b5978b065a0cf8d6c1e25f Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 27 Mar 2024 12:06:56 +0100 Subject: [PATCH 65/84] fix vesting version for tests --- Cargo.lock | 320 +++++++++++++++------ contracts/tokenomics/incentives/Cargo.toml | 2 +- contracts/tokenomics/vesting/Cargo.toml | 2 +- 3 files changed, 228 insertions(+), 96 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0d57784a3..696e49d15 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -45,8 +45,8 @@ checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "astro-satellite-package" -version = "0.1.0" -source = "git+https://github.com/astroport-fi/astroport_ibc#ffb48ebfd7dbbc010cf86c9b02bad236c456fca0" +version = "1.0.0" +source = "git+https://github.com/astroport-fi/astroport_ibc#1d14593df21408a31a571639a6ca3edb844c7857" dependencies = [ "astroport-governance 1.2.0", "cosmwasm-schema", @@ -54,72 +54,68 @@ dependencies = [ ] [[package]] -name = "astroport" -version = "2.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d102b618016b3c1f1ebb5750617a73dbd294a3c941e54b12deabc931d771bc6e" +name = "astro-token-converter" +version = "1.0.0" dependencies = [ + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw-utils 0.15.1", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw2 1.1.2", "cw20 0.15.1", - "itertools 0.10.5", - "uint 0.9.5", + "thiserror", ] [[package]] -name = "astroport" -version = "3.12.1" +name = "astro-token-converter-neutron" +version = "1.0.0" dependencies = [ - "astroport-circular-buffer 0.1.0", - "cosmwasm-schema", + "astro-token-converter", + "astroport 3.13.0", "cosmwasm-std", - "cw-asset", - "cw-storage-plus 0.15.1", "cw-utils 1.0.3", - "cw20 0.15.1", - "cw3", - "injective-math", - "itertools 0.10.5", - "test-case", - "thiserror", - "uint 0.9.5", + "cw2 1.1.2", + "neutron-sdk", ] [[package]] name = "astroport" -version = "3.12.2" +version = "2.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdebdf96895f363e121710cb84bbbfa659cea1bb1470260d4976d1a7206b3b16" +checksum = "d102b618016b3c1f1ebb5750617a73dbd294a3c941e54b12deabc931d771bc6e" dependencies = [ - "astroport-circular-buffer 0.2.0", "cosmwasm-schema", "cosmwasm-std", - "cw-asset", "cw-storage-plus 0.15.1", - "cw-utils 1.0.3", + "cw-utils 0.15.1", "cw20 0.15.1", - "cw3", "itertools 0.10.5", "uint 0.9.5", ] [[package]] -name = "astroport-circular-buffer" -version = "0.1.0" +name = "astroport" +version = "3.13.0" dependencies = [ + "astroport-circular-buffer", "cosmwasm-schema", "cosmwasm-std", + "cw-asset", "cw-storage-plus 0.15.1", + "cw-utils 1.0.3", + "cw20 0.15.1", + "cw3", + "injective-math", + "itertools 0.10.5", + "test-case", "thiserror", + "uint 0.9.5", ] [[package]] name = "astroport-circular-buffer" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c7369d3c4126804f861620db2221c15b5fa7b7718f12180e265b087c933fb6" +version = "0.1.0" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -153,7 +149,7 @@ dependencies = [ "cw-storage-plus 0.15.1", "cw2 0.15.1", "itertools 0.10.5", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -162,7 +158,7 @@ name = "astroport-factory" version = "1.7.0" dependencies = [ "anyhow", - "astroport 3.12.1", + "astroport 3.13.0", "astroport-pair 1.5.0", "astroport-token", "cosmwasm-schema", @@ -174,7 +170,7 @@ dependencies = [ "cw20 0.15.1", "itertools 0.10.5", "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -182,7 +178,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", @@ -197,7 +193,7 @@ dependencies = [ name = "astroport-generator" version = "2.3.2" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "astroport-governance 1.4.1", "cosmwasm-schema", "cosmwasm-std", @@ -206,7 +202,7 @@ dependencies = [ "cw1-whitelist", "cw2 0.15.1", "cw20 0.15.1", - "protobuf", + "protobuf 2.28.0", "thiserror", ] @@ -214,7 +210,7 @@ dependencies = [ name = "astroport-generator-proxy-template" version = "0.0.0" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -228,7 +224,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#182dd5bc201dd634995b5e4dc9e2774495693703" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -240,7 +236,7 @@ name = "astroport-governance" version = "1.4.1" source = "git+https://github.com/astroport-fi/hidden_astroport_governance#3071dab091f88fac33594574cf3bdb34d9674189" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -250,15 +246,17 @@ dependencies = [ [[package]] name = "astroport-incentives" -version = "1.0.1" +version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.12.1", + "astro-token-converter", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", "astroport-pair-stable", - "astroport-vesting", + "astroport-vesting 1.3.1", + "astroport-vesting 1.4.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_cozy_fork)", @@ -277,7 +275,7 @@ name = "astroport-liquidity-manager" version = "1.0.3" dependencies = [ "anyhow", - "astroport 3.12.1", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -302,20 +300,20 @@ name = "astroport-maker" version = "1.4.0" dependencies = [ "astro-satellite-package", - "astroport 3.12.1", + "astroport 3.13.0", "astroport-escrow-fee-distributor", "astroport-factory 1.7.0", "astroport-governance 1.4.1", "astroport-native-coin-registry", "astroport-pair 1.5.0", "astroport-pair-stable", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", + "cw-multi-test 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", + "cw2 1.1.2", + "cw20 1.1.2", + "cw20-base 1.1.0", "thiserror", ] @@ -324,7 +322,7 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport 3.12.1", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", @@ -334,7 +332,7 @@ dependencies = [ "astroport-shared-multisig", "astroport-staking", "astroport-token", - "astroport-vesting", + "astroport-vesting 1.4.0", "astroport-whitelist", "astroport-xastro-token", "cosmwasm-schema", @@ -352,7 +350,7 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -366,7 +364,7 @@ dependencies = [ name = "astroport-native-coin-wrapper" version = "0.1.0" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -383,7 +381,7 @@ name = "astroport-oracle" version = "2.1.1" dependencies = [ "anyhow", - "astroport 3.12.1", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.0", @@ -401,32 +399,29 @@ dependencies = [ [[package]] name = "astroport-pair" -version = "1.5.0" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555824ec226c179f27d0e6c7c808c99754c294da2e1843c4a8dcd72d2d0db71a" dependencies = [ - "astroport 3.12.1", - "astroport-factory 1.7.0", - "astroport-mocks", - "astroport-token", + "astroport 2.9.5", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw-utils 1.0.3", "cw2 0.15.1", "cw20 0.15.1", "integer-sqrt", - "proptest", - "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "thiserror", ] [[package]] name = "astroport-pair" version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd96bc64722440636ed6267a6945ccce076231a08467d6d46a4af4c4ff062c69" dependencies = [ - "astroport 3.12.2", + "astroport 3.13.0", + "astroport-factory 1.7.0", + "astroport-mocks", + "astroport-token", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -434,7 +429,9 @@ dependencies = [ "cw2 0.15.1", "cw20 0.15.1", "integer-sqrt", - "protobuf", + "proptest", + "prost 0.11.9", + "protobuf 2.28.0", "thiserror", ] @@ -442,7 +439,7 @@ dependencies = [ name = "astroport-pair-bonded" version = "1.0.1" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw2 0.15.1", @@ -454,7 +451,7 @@ dependencies = [ name = "astroport-pair-bonded-template" version = "1.0.0" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "astroport-pair-bonded", "cosmwasm-schema", "cosmwasm-std", @@ -487,8 +484,8 @@ name = "astroport-pair-concentrated" version = "2.3.0" dependencies = [ "anyhow", - "astroport 3.12.1", - "astroport-circular-buffer 0.1.0", + "astroport 3.13.0", + "astroport-circular-buffer", "astroport-factory 1.7.0", "astroport-mocks", "astroport-native-coin-registry", @@ -507,13 +504,36 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-pair-converter" +version = "1.0.0" +dependencies = [ + "anyhow", + "astro-token-converter", + "astroport 3.13.0", + "astroport-factory 1.7.0", + "astroport-pair 1.3.3", + "astroport-token", + "cosmwasm-schema", + "cosmwasm-std", + "cw-multi-test 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw2 1.1.2", + "cw20 0.15.1", + "derivative", + "itertools 0.12.0", + "serde", + "thiserror", +] + [[package]] name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", - "astroport 3.12.1", - "astroport-circular-buffer 0.1.0", + "astroport 3.13.0", + "astroport-circular-buffer", "astroport-factory 1.7.0", "astroport-mocks", "astroport-native-coin-registry", @@ -537,7 +557,7 @@ name = "astroport-pair-transmuter" version = "1.1.1" dependencies = [ "anyhow", - "astroport 3.12.1", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-token", @@ -557,11 +577,11 @@ dependencies = [ name = "astroport-pair-xyk-sale-tax" version = "1.6.0" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-mocks", + "astroport-pair 1.3.3", "astroport-pair 1.5.0", - "astroport-pair 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -572,7 +592,7 @@ dependencies = [ "integer-sqrt", "proptest", "prost 0.11.9", - "protobuf", + "protobuf 2.28.0", "test-case", "thiserror", ] @@ -582,7 +602,7 @@ name = "astroport-pcl-common" version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.12.1", + "astroport 3.13.0", "astroport-factory 1.7.0", "cosmwasm-schema", "cosmwasm-std", @@ -597,7 +617,7 @@ name = "astroport-router" version = "1.2.0" dependencies = [ "anyhow", - "astroport 3.12.1", + "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-pair 1.5.0", "astroport-token", @@ -615,7 +635,7 @@ dependencies = [ name = "astroport-shared-multisig" version = "1.0.0" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "astroport-generator", "astroport-mocks", "astroport-pair 1.5.0", @@ -636,7 +656,7 @@ name = "astroport-staking" version = "2.0.0" dependencies = [ "anyhow", - "astroport 3.12.1", + "astroport 3.13.0", "astroport-tokenfactory-tracker", "cosmwasm-schema", "cosmwasm-std", @@ -653,7 +673,7 @@ dependencies = [ name = "astroport-token" version = "1.1.1" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -666,7 +686,7 @@ dependencies = [ name = "astroport-tokenfactory-tracker" version = "1.0.0" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -679,13 +699,13 @@ dependencies = [ [[package]] name = "astroport-vesting" -version = "1.3.2" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dffce7cf86bf4d4f177ef941145352499e802abc4b898032af7808d16cca6371" dependencies = [ - "astroport 3.12.1", - "astroport-token", + "astroport 2.9.5", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", "cw-storage-plus 0.15.1", "cw-utils 0.15.1", "cw2 0.15.1", @@ -693,11 +713,29 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-vesting" +version = "1.4.0" +dependencies = [ + "astro-token-converter", + "astroport 3.13.0", + "astroport-vesting 1.3.1", + "cosmwasm-schema", + "cosmwasm-std", + "cw-multi-test 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cw-storage-plus 0.15.1", + "cw-utils 1.0.3", + "cw2 1.1.2", + "cw20 0.15.1", + "cw20-base 0.15.1", + "thiserror", +] + [[package]] name = "astroport-whitelist" version = "1.0.1" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", @@ -709,7 +747,7 @@ dependencies = [ name = "astroport-xastro-outpost-token" version = "1.0.0" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -724,7 +762,7 @@ dependencies = [ name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport 3.12.1", + "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -1108,7 +1146,7 @@ dependencies = [ "hex", "schemars", "serde", - "serde-json-wasm", + "serde-json-wasm 0.5.2", "sha2 0.10.8", "static_assertions 1.1.0", "thiserror", @@ -1996,6 +2034,12 @@ dependencies = [ "winapi", ] +[[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.3.3" @@ -2370,6 +2414,27 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "neutron-sdk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46f60e477bd71007d9ff78ae020ec1c6b3b47798578af6151429434d86472efc" +dependencies = [ + "bech32", + "cosmos-sdk-proto 0.20.0", + "cosmwasm-schema", + "cosmwasm-std", + "prost 0.12.3", + "prost-types 0.12.3", + "protobuf 3.4.0", + "schemars", + "serde", + "serde-json-wasm 1.0.1", + "speedate", + "tendermint-proto 0.34.0", + "thiserror", +] + [[package]] name = "nom" version = "7.1.3" @@ -2837,6 +2902,26 @@ dependencies = [ "bytes", ] +[[package]] +name = "protobuf" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58678a64de2fced2bdec6bca052a6716a0efe692d6e3f53d1bda6a1def64cfc0" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror", +] + +[[package]] +name = "protobuf-support" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1ed294a835b0f30810e13616b1cd34943c6d1e84a8f3b0dcfe466d256c3e7e7" +dependencies = [ + "thiserror", +] + [[package]] name = "pyo3" version = "0.18.3" @@ -3190,6 +3275,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + [[package]] name = "rusty-fork" version = "0.3.0" @@ -3350,6 +3441,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde-json-wasm" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05da0d153dd4595bdffd5099dc0e9ce425b205ee648eb93437ff7302af8c9a5" +dependencies = [ + "serde", +] + [[package]] name = "serde_bytes" version = "0.11.12" @@ -3519,6 +3619,16 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "speedate" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "242f76c50fd18cbf098607090ade73a08d39cfd84ea835f3796a2c855223b19b" +dependencies = [ + "strum", + "strum_macros", +] + [[package]] name = "spin" version = "0.9.8" @@ -3557,6 +3667,28 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.48", +] + [[package]] name = "subtle" version = "2.5.0" diff --git a/contracts/tokenomics/incentives/Cargo.toml b/contracts/tokenomics/incentives/Cargo.toml index 0f698b95c..b6389e7d0 100644 --- a/contracts/tokenomics/incentives/Cargo.toml +++ b/contracts/tokenomics/incentives/Cargo.toml @@ -27,7 +27,7 @@ itertools = "0.11" [dev-dependencies] cw-multi-test = { git = "https://github.com/astroport-fi/cw-multi-test", branch = "astroport_cozy_fork" } -astroport-vesting_131 = { package = "astroport-vesting", version = "1.3.1", features = ["library"] } +astroport-vesting_131 = { package = "astroport-vesting", version = "=1.3.1", features = ["library"] } astro-token-converter = { path = "../../periphery/astro_converter", version = "1.0", features = ["library"] } anyhow = "1" astroport-factory = { path = "../../factory" } diff --git a/contracts/tokenomics/vesting/Cargo.toml b/contracts/tokenomics/vesting/Cargo.toml index 25eb2d0fb..4f0c02ea0 100644 --- a/contracts/tokenomics/vesting/Cargo.toml +++ b/contracts/tokenomics/vesting/Cargo.toml @@ -26,5 +26,5 @@ cosmwasm-schema = "1.5" cw-multi-test = "0.20" cw20-base = "0.15" astro-token-converter = { path = "../../periphery/astro_converter", version = "1", features = ["library"] } -astroport-vesting_131 = { package = "astroport-vesting", version = "1.3.1", features = ["library"] } +astroport-vesting_131 = { package = "astroport-vesting", version = "=1.3.1", features = ["library"] } From 9310e15bfd6501e9b5d33a3fdaf2ae4cfca4b88c Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 12:00:35 +0100 Subject: [PATCH 66/84] feat(whitelist): customize whitelist (treasury) for Neutron * feat(whitelist): customize whitelist (treasury) for Neutron * allow neutron capability in CI * update Cargo.lock --- .github/workflows/check_artifacts.yml | 2 +- Cargo.lock | 52 +++--------- Cargo.toml | 5 +- .../periphery/liquidity_manager/Cargo.toml | 2 +- .../liquidity_manager/tests/helper.rs | 6 +- contracts/tokenomics/generator/Cargo.toml | 2 +- .../tokenomics/generator/tests/integration.rs | 1 + contracts/whitelist/Cargo.toml | 16 ++-- .../whitelist/examples/whitelist_schema.rs | 3 +- contracts/whitelist/src/contract.rs | 83 ++++++++++++++----- contracts/whitelist/src/ibc.rs | 56 +++++++++++++ contracts/whitelist/src/lib.rs | 4 + packages/astroport_mocks/Cargo.toml | 2 +- packages/astroport_mocks/src/whitelist.rs | 2 +- 14 files changed, 155 insertions(+), 81 deletions(-) create mode 100644 contracts/tokenomics/generator/tests/integration.rs create mode 100644 contracts/whitelist/src/ibc.rs diff --git a/.github/workflows/check_artifacts.yml b/.github/workflows/check_artifacts.yml index b2696331a..5a6e1f51a 100644 --- a/.github/workflows/check_artifacts.yml +++ b/.github/workflows/check_artifacts.yml @@ -115,4 +115,4 @@ jobs: run: cargo install --debug --version 1.4.0 cosmwasm-check - name: Cosmwasm check run: | - cosmwasm-check $GITHUB_WORKSPACE/artifacts/*.wasm --available-capabilities staking,cosmwasm_1_1,injective,iterator,stargate,neutron + cosmwasm-check $GITHUB_WORKSPACE/artifacts/*.wasm --available-capabilities staking,cosmwasm_1_1,injective,neutron,iterator,stargate diff --git a/Cargo.lock b/Cargo.lock index 696e49d15..76408d5ed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -67,18 +67,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astro-token-converter-neutron" -version = "1.0.0" -dependencies = [ - "astro-token-converter", - "astroport 3.13.0", - "cosmwasm-std", - "cw-utils 1.0.3", - "cw2 1.1.2", - "neutron-sdk", -] - [[package]] name = "astroport" version = "2.9.5" @@ -282,11 +270,11 @@ dependencies = [ "astroport-pair 1.5.0", "astroport-pair-stable", "astroport-token", - "astroport-whitelist", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", "cw-storage-plus 1.2.0", + "cw1-whitelist", "cw20 0.15.1", "cw20-base 0.15.1", "derivative", @@ -333,12 +321,12 @@ dependencies = [ "astroport-staking", "astroport-token", "astroport-vesting 1.4.0", - "astroport-whitelist", "astroport-xastro-token", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", "cw-utils 1.0.3", + "cw1-whitelist", "cw20 0.15.1", "cw3", "injective-cosmwasm", @@ -360,22 +348,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-native-coin-wrapper" -version = "0.1.0" -dependencies = [ - "astroport 3.13.0", - "astroport-token", - "cosmwasm-schema", - "cosmwasm-std", - "cw-multi-test 0.15.1", - "cw-storage-plus 0.15.1", - "cw-utils 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", - "thiserror", -] - [[package]] name = "astroport-oracle" version = "2.1.1" @@ -733,13 +705,13 @@ dependencies = [ [[package]] name = "astroport-whitelist" -version = "1.0.1" +version = "2.0.0" dependencies = [ - "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", - "cw2 0.15.1", + "cw2 1.1.2", + "neutron-sdk", "thiserror", ] @@ -1414,9 +1386,9 @@ dependencies = [ [[package]] name = "cw1" -version = "0.15.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe0783ec4210ba4e0cdfed9874802f469c6db0880f742ad427cb950e940b21c" +checksum = "f1605722190afd93bfea6384b88224d1cfe50ebf70d2e10641535da79fa70e83" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1426,16 +1398,16 @@ dependencies = [ [[package]] name = "cw1-whitelist" -version = "0.15.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233dd13f61495f1336da57c8bdca0536fa9f8dd59c12d2bbfc59928ea580e478" +checksum = "81bb3e9dc87f4ff26547f4e27e0ba3c82034372f21b2f55527fb52b542637d8d" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw-utils 0.15.1", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", "cw1", - "cw2 0.15.1", + "cw2 1.1.2", "schemars", "serde", "thiserror", diff --git a/Cargo.toml b/Cargo.toml index e95f5cb30..1947731ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,10 @@ members = [ "contracts/whitelist", "templates/*", "contracts/tokenomics/*", - "contracts/periphery/*", + "contracts/periphery/fee_granter", + "contracts/periphery/liquidity_manager", + "contracts/periphery/native_coin_registry", + "contracts/periphery/oracle", ] [profile.release] diff --git a/contracts/periphery/liquidity_manager/Cargo.toml b/contracts/periphery/liquidity_manager/Cargo.toml index 6a8f0b79c..92e6492e0 100644 --- a/contracts/periphery/liquidity_manager/Cargo.toml +++ b/contracts/periphery/liquidity_manager/Cargo.toml @@ -26,7 +26,7 @@ cw-multi-test = "0.16.4" astroport-token = { path = "../../token" } astroport-native-coin-registry = { path = "../../periphery/native_coin_registry" } astroport-generator = { path = "../../tokenomics/generator" } -astroport-whitelist = { path = "../../whitelist" } +cw1-whitelist = { version = "1.1.2", features = ["library"] } serde_json = "1.0.96" anyhow = "1" derivative = "2.2" diff --git a/contracts/periphery/liquidity_manager/tests/helper.rs b/contracts/periphery/liquidity_manager/tests/helper.rs index a8e570f06..39a023e85 100644 --- a/contracts/periphery/liquidity_manager/tests/helper.rs +++ b/contracts/periphery/liquidity_manager/tests/helper.rs @@ -142,9 +142,9 @@ fn factory_contract() -> Box> { fn whitelist_contract() -> Box> { Box::new(ContractWrapper::new_with_empty( - astroport_whitelist::contract::execute, - astroport_whitelist::contract::instantiate, - astroport_whitelist::contract::query, + cw1_whitelist::contract::execute, + cw1_whitelist::contract::instantiate, + cw1_whitelist::contract::query, )) } diff --git a/contracts/tokenomics/generator/Cargo.toml b/contracts/tokenomics/generator/Cargo.toml index defd0d878..bc096d74b 100644 --- a/contracts/tokenomics/generator/Cargo.toml +++ b/contracts/tokenomics/generator/Cargo.toml @@ -21,7 +21,7 @@ backtraces = ["cosmwasm-std/backtraces"] [dependencies] cw-storage-plus = "0.15" -cw1-whitelist = { version = "0.15", features = ["library"] } +cw1-whitelist = { version = "1.1.2", features = ["library"] } thiserror = { version = "1.0" } astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "1" } protobuf = { version = "2", features = ["with-bytes"] } diff --git a/contracts/tokenomics/generator/tests/integration.rs b/contracts/tokenomics/generator/tests/integration.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/contracts/tokenomics/generator/tests/integration.rs @@ -0,0 +1 @@ + diff --git a/contracts/whitelist/Cargo.toml b/contracts/whitelist/Cargo.toml index 817511b77..4bcf01c56 100644 --- a/contracts/whitelist/Cargo.toml +++ b/contracts/whitelist/Cargo.toml @@ -1,9 +1,9 @@ [package] name = "astroport-whitelist" -version = "1.0.1" +version = "2.0.0" authors = ["Ethan Frey ", "Astroport"] edition = "2021" -description = "Implementation of an proxy contract using a whitelist" +description = "Implementation of proxy contract using a whitelist. Supports general IBC and Neutron IbcTransfer messages" license = "Apache-2.0" repository = "https://github.com/CosmWasm/cw-plus" homepage = "https://cosmwasm.com" @@ -18,9 +18,9 @@ backtraces = ["cosmwasm-std/backtraces"] library = [] [dependencies] -astroport = { path = "../../packages/astroport", version = "3" } -cw1-whitelist = { version = "0.15", features = ["library"] } -cw2 = "0.15" -cosmwasm-std = "1.1" -thiserror = { version = "1.0" } -cosmwasm-schema = { version = "1.1" } +cw1-whitelist = { version = "1.1", features = ["library"] } +cw2 = "1" +cosmwasm-std = { version = "1.5", features = ["stargate"] } +neutron-sdk = "0.8.0" +thiserror = "1" +cosmwasm-schema = "1.5" diff --git a/contracts/whitelist/examples/whitelist_schema.rs b/contracts/whitelist/examples/whitelist_schema.rs index 7b23e0016..6fe9e33cf 100644 --- a/contracts/whitelist/examples/whitelist_schema.rs +++ b/contracts/whitelist/examples/whitelist_schema.rs @@ -1,10 +1,11 @@ use cosmwasm_schema::write_api; use cw1_whitelist::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; +use neutron_sdk::bindings::msg::NeutronMsg; fn main() { write_api! { instantiate: InstantiateMsg, query: QueryMsg, - execute: ExecuteMsg + execute: ExecuteMsg } } diff --git a/contracts/whitelist/src/contract.rs b/contracts/whitelist/src/contract.rs index eff34d90a..26040a4ad 100644 --- a/contracts/whitelist/src/contract.rs +++ b/contracts/whitelist/src/contract.rs @@ -1,33 +1,29 @@ -use cosmwasm_std::{ - entry_point, Binary, Deps, DepsMut, Empty, Env, MessageInfo, Response, StdResult, +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{Binary, CustomMsg, Deps, DepsMut, Env, MessageInfo, Response, StdResult}; +use cw1_whitelist::contract::{ + execute_execute, instantiate as cw1_instantiate, map_validate, query as cw1_query, }; - -use astroport::common::validate_addresses; -use cw1_whitelist::contract::{execute as cw1_execute, query as cw1_query}; use cw1_whitelist::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; -use cw1_whitelist::state::{AdminList, ADMIN_LIST}; +use cw1_whitelist::state::ADMIN_LIST; use cw1_whitelist::ContractError; -use cw2::set_contract_version; +use neutron_sdk::bindings::msg::NeutronMsg; +use neutron_sdk::sudo::msg::TransferSudoMsg; -// Version info for contract migration. -const CONTRACT_NAME: &str = "astroport-cw1-whitelist"; +const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( - deps: DepsMut, - _env: Env, - _info: MessageInfo, + mut deps: DepsMut, + env: Env, + info: MessageInfo, msg: InstantiateMsg, ) -> StdResult { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - let cfg = AdminList { - admins: validate_addresses(deps.api, &msg.admins)?, - mutable: msg.mutable, - }; - ADMIN_LIST.save(deps.storage, &cfg)?; - Ok(Response::default()) + let resp = cw1_instantiate(deps.branch(), env, info, msg); + cw2::set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + + resp } #[cfg_attr(not(feature = "library"), entry_point)] @@ -35,12 +31,53 @@ pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, - msg: ExecuteMsg, -) -> Result, ContractError> { - cw1_execute(deps, env, info, msg) + msg: ExecuteMsg, +) -> Result, ContractError> { + match msg { + ExecuteMsg::Execute { msgs } => execute_execute(deps, env, info, msgs), + ExecuteMsg::Freeze {} => execute_freeze(deps, info), + ExecuteMsg::UpdateAdmins { admins } => execute_update_admins(deps, info, admins), + } +} + +pub fn execute_freeze( + deps: DepsMut, + info: MessageInfo, +) -> Result, ContractError> { + let mut cfg = ADMIN_LIST.load(deps.storage)?; + if !cfg.can_modify(info.sender.as_ref()) { + Err(ContractError::Unauthorized {}) + } else { + cfg.mutable = false; + ADMIN_LIST.save(deps.storage, &cfg)?; + + Ok(Response::default().add_attribute("action", "freeze")) + } +} + +pub fn execute_update_admins( + deps: DepsMut, + info: MessageInfo, + admins: Vec, +) -> Result, ContractError> { + let mut cfg = ADMIN_LIST.load(deps.storage)?; + if !cfg.can_modify(info.sender.as_ref()) { + Err(ContractError::Unauthorized {}) + } else { + cfg.admins = map_validate(deps.api, &admins)?; + ADMIN_LIST.save(deps.storage, &cfg)?; + + Ok(Response::default().add_attribute("action", "update_admins")) + } } #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { cw1_query(deps, env, msg) } + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn sudo(_deps: DepsMut, _env: Env, _msg: TransferSudoMsg) -> StdResult { + // Whitelist doesn't need any custom callback logic for IBC transfer messages + Ok(Response::new()) +} diff --git a/contracts/whitelist/src/ibc.rs b/contracts/whitelist/src/ibc.rs new file mode 100644 index 000000000..5d4172b8c --- /dev/null +++ b/contracts/whitelist/src/ibc.rs @@ -0,0 +1,56 @@ +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{ + DepsMut, Env, IbcBasicResponse, IbcChannelCloseMsg, IbcChannelConnectMsg, IbcChannelOpenMsg, + IbcPacketAckMsg, IbcPacketReceiveMsg, IbcPacketTimeoutMsg, IbcReceiveResponse, StdResult, +}; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn ibc_channel_open(_deps: DepsMut, _env: Env, _msg: IbcChannelOpenMsg) -> StdResult<()> { + unimplemented!() +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn ibc_channel_connect( + _deps: DepsMut, + _env: Env, + _msg: IbcChannelConnectMsg, +) -> StdResult { + unimplemented!() +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn ibc_channel_close( + _deps: DepsMut, + _env: Env, + _channel: IbcChannelCloseMsg, +) -> StdResult { + unimplemented!() +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn ibc_packet_receive( + _deps: DepsMut, + _env: Env, + _msg: IbcPacketReceiveMsg, +) -> StdResult { + unimplemented!() +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn ibc_packet_ack( + _deps: DepsMut, + _env: Env, + _msg: IbcPacketAckMsg, +) -> StdResult { + unimplemented!() +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn ibc_packet_timeout( + _deps: DepsMut, + _env: Env, + _msg: IbcPacketTimeoutMsg, +) -> StdResult { + unimplemented!() +} diff --git a/contracts/whitelist/src/lib.rs b/contracts/whitelist/src/lib.rs index 2943dbb50..c933cfee3 100644 --- a/contracts/whitelist/src/lib.rs +++ b/contracts/whitelist/src/lib.rs @@ -1 +1,5 @@ +#![cfg(not(tarpaulin_include))] pub mod contract; +/// Exclusively to obtain IBC port and bypass Neutron IbcTransfer callbacks limitation. +/// Whitelist doesn't have IBC features. +pub mod ibc; diff --git a/packages/astroport_mocks/Cargo.toml b/packages/astroport_mocks/Cargo.toml index f60b1c294..96befdf4b 100644 --- a/packages/astroport_mocks/Cargo.toml +++ b/packages/astroport_mocks/Cargo.toml @@ -22,7 +22,6 @@ astroport-pair-concentrated = { path = "../../contracts/pair_concentrated" } astroport-staking = { path = "../../contracts/tokenomics/staking" } astroport-token = { path = "../../contracts/token" } astroport-vesting = { path = "../../contracts/tokenomics/vesting" } -astroport-whitelist = { path = "../../contracts/whitelist" } astroport-xastro-token = { path = "../../contracts/tokenomics/xastro_token" } cosmwasm-schema = "1.2.5" cosmwasm-std = "1.2.5" @@ -34,3 +33,4 @@ cw-utils = "1.0" cw20 = "0.15" anyhow = "1.0" cw3 = "1.0" +cw1-whitelist = { version = "1.1.2", features = ["library"] } diff --git a/packages/astroport_mocks/src/whitelist.rs b/packages/astroport_mocks/src/whitelist.rs index 747e361f7..41ab97b3b 100644 --- a/packages/astroport_mocks/src/whitelist.rs +++ b/packages/astroport_mocks/src/whitelist.rs @@ -20,7 +20,7 @@ where C::ExecT: Clone + Debug + PartialEq + JsonSchema + DeserializeOwned + 'static, C::QueryT: CustomQuery + DeserializeOwned + 'static, { - use astroport_whitelist as cnt; + use cw1_whitelist as cnt; let contract = Box::new(ContractWrapper::new_with_empty( cnt::contract::execute, cnt::contract::instantiate, From 6bb9ae372265a6bddbaeac20a29166404b830c9c Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 12:45:54 +0100 Subject: [PATCH 67/84] post-merge fixes --- .github/workflows/check_artifacts.yml | 48 +- .github/workflows/code_coverage.yml | 7 + .github/workflows/tests_and_checks.yml | 12 +- Cargo.lock | 420 +++++------------- Cargo.toml | 3 + .../tokenomics/generator/tests/integration.rs | 0 .../tokenomics/staking/tests/integration.rs | 0 packages/astroport_mocks/src/staking.rs | 0 8 files changed, 176 insertions(+), 314 deletions(-) delete mode 100644 contracts/tokenomics/generator/tests/integration.rs delete mode 100644 contracts/tokenomics/staking/tests/integration.rs delete mode 100644 packages/astroport_mocks/src/staking.rs diff --git a/.github/workflows/check_artifacts.yml b/.github/workflows/check_artifacts.yml index 6f7e279f5..5a6e1f51a 100644 --- a/.github/workflows/check_artifacts.yml +++ b/.github/workflows/check_artifacts.yml @@ -8,17 +8,59 @@ on: env: CARGO_TERM_COLOR: always + CARGO_NET_GIT_FETCH_WITH_CLI: true jobs: - check-artifacts-size: + fetch_deps: + name: Fetch cargo dependencies runs-on: ubuntu-latest - name: Check Artifacts Size + steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.11.0 with: access_token: ${{ github.token }} + - uses: actions/checkout@v3 + - uses: webfactory/ssh-agent@v0.7.0 + with: + ssh-private-key: | + ${{ secrets.GOV_PRIVATE_KEY }} + + - uses: actions/cache@v3 + if: always() + with: + path: | + ~/.cargo/bin + ~/.cargo/git/checkouts + ~/.cargo/git/db + ~/.cargo/registry/cache + ~/.cargo/registry/index + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + ${{ runner.os }}-cargo- + + - run: | + git config url."ssh://git@github.com/astroport-fi/hidden_astroport_governance.git".insteadOf "https://github.com/astroport-fi/hidden_astroport_governance" + + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: 1.68.0 + override: true + + - name: Fetch cargo deps + uses: actions-rs/cargo@v1 + with: + command: fetch + args: --locked + + check-artifacts-size: + runs-on: ubuntu-latest + name: Check Artifacts Size + needs: fetch_deps + steps: - name: Checkout sources uses: actions/checkout@v3 @@ -31,6 +73,8 @@ jobs: ~/.cargo/registry/cache ~/.cargo/registry/index key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + # docker can't pull private sources, so we fail if cache is missing + fail-on-cache-miss: true - name: Build Artifacts run: | diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index 62be80c85..cde8807c0 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -23,6 +23,11 @@ jobs: with: access_token: ${{ github.token }} + - uses: webfactory/ssh-agent@v0.7.0 + with: + ssh-private-key: | + ${{ secrets.GOV_PRIVATE_KEY }} + - name: Checkout repository uses: actions/checkout@v2 - uses: actions/cache@v3 @@ -35,6 +40,8 @@ jobs: ~/.cargo/registry/index target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + - run: | + git config url."ssh://git@github.com/astroport-fi/hidden_astroport_governance.git".insteadOf "https://github.com/astroport-fi/hidden_astroport_governance" - name: Install stable toolchain uses: actions-rs/toolchain@v1 diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index 9914d6557..4a71b4df0 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -8,6 +8,7 @@ on: env: CARGO_TERM_COLOR: always + CARGO_NET_GIT_FETCH_WITH_CLI: true jobs: test_and_check: @@ -20,8 +21,12 @@ jobs: with: access_token: ${{ github.token }} - - name: Checkout sources - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + - uses: webfactory/ssh-agent@v0.7.0 + with: + ssh-private-key: | + ${{ secrets.GOV_PRIVATE_KEY }} + - uses: actions/cache@v3 if: always() with: @@ -36,6 +41,9 @@ jobs: restore-keys: | ${{ runner.os }}-cargo- + - run: | + git config url."ssh://git@github.com/astroport-fi/hidden_astroport_governance.git".insteadOf "https://github.com/astroport-fi/hidden_astroport_governance" + - name: Install stable toolchain uses: actions-rs/toolchain@v1 with: diff --git a/Cargo.lock b/Cargo.lock index 76408d5ed..16e780a8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,9 +39,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" [[package]] name = "astro-satellite-package" @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "astroport-circular-buffer" -version = "0.1.0" +version = "0.2.0" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -147,11 +147,11 @@ version = "1.7.0" dependencies = [ "anyhow", "astroport 3.13.0", - "astroport-pair 1.5.0", + "astroport-pair 1.5.1", "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", + "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", "cw-utils 1.0.3", "cw2 0.15.1", @@ -170,7 +170,7 @@ dependencies = [ "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", + "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", "cw-utils 1.0.3", "cw2 1.1.2", @@ -182,7 +182,7 @@ name = "astroport-generator" version = "2.3.2" dependencies = [ "astroport 3.13.0", - "astroport-governance 1.4.1", + "astroport-governance 1.2.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -241,13 +241,13 @@ dependencies = [ "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", - "astroport-pair 1.5.0", + "astroport-pair 1.5.1", "astroport-pair-stable", "astroport-vesting 1.3.1", "astroport-vesting 1.4.0", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_cozy_fork)", + "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", "cw-utils 1.0.3", "cw2 1.1.2", @@ -260,19 +260,19 @@ dependencies = [ [[package]] name = "astroport-liquidity-manager" -version = "1.0.3" +version = "1.1.0" dependencies = [ "anyhow", "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", - "astroport-pair 1.5.0", + "astroport-pair 1.5.1", "astroport-pair-stable", "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", + "cw-multi-test 1.0.0", "cw-storage-plus 1.2.0", "cw1-whitelist", "cw20 0.15.1", @@ -293,11 +293,11 @@ dependencies = [ "astroport-factory 1.7.0", "astroport-governance 1.4.1", "astroport-native-coin-registry", - "astroport-pair 1.5.0", + "astroport-pair 1.5.1", "astroport-pair-stable", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", "cw2 1.1.2", "cw20 1.1.2", @@ -314,8 +314,8 @@ dependencies = [ "astroport-factory 1.7.0", "astroport-generator", "astroport-native-coin-registry", - "astroport-pair 1.5.0", - "astroport-pair-concentrated 2.3.0", + "astroport-pair 1.5.1", + "astroport-pair-concentrated 3.0.0", "astroport-pair-stable", "astroport-shared-multisig", "astroport-staking", @@ -324,7 +324,7 @@ dependencies = [ "astroport-xastro-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.16.5 (git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb)", + "cw-multi-test 1.0.0", "cw-utils 1.0.3", "cw1-whitelist", "cw20 0.15.1", @@ -342,7 +342,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", - "cw-multi-test 0.15.1", + "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", "cw2 0.15.1", "thiserror", @@ -350,18 +350,18 @@ dependencies = [ [[package]] name = "astroport-oracle" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "astroport 3.13.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", - "astroport-pair 1.5.0", + "astroport-pair 1.5.1", "astroport-pair-stable", "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", + "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", "cw2 0.15.1", "cw20 0.15.1", @@ -388,7 +388,7 @@ dependencies = [ [[package]] name = "astroport-pair" -version = "1.5.0" +version = "1.5.1" dependencies = [ "astroport 3.13.0", "astroport-factory 1.7.0", @@ -453,7 +453,7 @@ dependencies = [ [[package]] name = "astroport-pair-concentrated" -version = "2.3.0" +version = "3.0.0" dependencies = [ "anyhow", "astroport 3.13.0", @@ -494,14 +494,14 @@ dependencies = [ "cw2 1.1.2", "cw20 0.15.1", "derivative", - "itertools 0.12.0", + "itertools 0.12.1", "serde", "thiserror", ] [[package]] name = "astroport-pair-stable" -version = "3.4.0" +version = "3.5.0" dependencies = [ "anyhow", "astroport 3.13.0", @@ -535,13 +535,13 @@ dependencies = [ "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cw-multi-test 1.0.0", "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw2 1.1.2", "cw20 0.15.1", "derivative", - "itertools 0.12.0", + "itertools 0.12.1", "thiserror", ] @@ -553,7 +553,7 @@ dependencies = [ "astroport-factory 1.7.0", "astroport-mocks", "astroport-pair 1.3.3", - "astroport-pair 1.5.0", + "astroport-pair 1.5.1", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -571,7 +571,7 @@ dependencies = [ [[package]] name = "astroport-pcl-common" -version = "1.1.0" +version = "2.0.0" dependencies = [ "anyhow", "astroport 3.13.0", @@ -586,16 +586,16 @@ dependencies = [ [[package]] name = "astroport-router" -version = "1.2.0" +version = "1.2.1" dependencies = [ "anyhow", "astroport 3.13.0", "astroport-factory 1.7.0", - "astroport-pair 1.5.0", + "astroport-pair 1.5.1", "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", + "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", "cw2 0.15.1", "cw20 0.15.1", @@ -610,8 +610,8 @@ dependencies = [ "astroport 3.13.0", "astroport-generator", "astroport-mocks", - "astroport-pair 1.5.0", - "astroport-pair-concentrated 2.3.0", + "astroport-pair 1.5.1", + "astroport-pair-concentrated 3.0.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -636,7 +636,7 @@ dependencies = [ "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw2 1.1.2", - "itertools 0.12.0", + "itertools 0.12.1", "osmosis-std", "thiserror", ] @@ -694,7 +694,7 @@ dependencies = [ "astroport-vesting 1.3.1", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", "cw-utils 1.0.3", "cw2 1.1.2", @@ -722,7 +722,7 @@ dependencies = [ "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", + "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", "cw2 0.15.1", "cw20 0.15.1", @@ -737,7 +737,7 @@ dependencies = [ "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", - "cw-multi-test 0.15.1", + "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", "cw2 0.15.1", "cw20 0.15.1", @@ -777,12 +777,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base16ct" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" - [[package]] name = "base16ct" version = "0.2.0" @@ -807,6 +801,12 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +[[package]] +name = "bech32" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" + [[package]] name = "bigint" version = "4.4.3" @@ -848,7 +848,7 @@ checksum = "7e141fb0f8be1c7b45887af94c88b182472b57c96b56773250ae00cd6a14a164" dependencies = [ "bs58", "hmac", - "k256 0.13.2", + "k256", "rand_core 0.6.4", "ripemd", "sha2 0.10.8", @@ -903,9 +903,9 @@ dependencies = [ [[package]] name = "bnum" -version = "0.8.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab9008b6bb9fc80b5277f2fe481c09e828743d9151203e804583eb4c9e15b31d" +checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f" [[package]] name = "bs58" @@ -1042,13 +1042,13 @@ checksum = "47126f5364df9387b9d8559dcef62e99010e1d4098f39eb3f7ee4b5c254e40ea" dependencies = [ "bip32", "cosmos-sdk-proto 0.20.0", - "ecdsa 0.16.9", + "ecdsa", "eyre", - "k256 0.13.2", + "k256", "rand_core 0.6.4", "serde", "serde_json", - "signature 2.2.0", + "signature", "subtle-encoding", "tendermint", "tendermint-rpc", @@ -1057,23 +1057,23 @@ dependencies = [ [[package]] name = "cosmwasm-crypto" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8bb3c77c3b7ce472056968c745eb501c440fbc07be5004eba02782c35bfbbe3" +checksum = "9934c79e58d9676edfd592557dee765d2a6ef54c09d5aa2edb06156b00148966" dependencies = [ "digest 0.10.7", - "ecdsa 0.16.9", + "ecdsa", "ed25519-zebra", - "k256 0.13.2", + "k256", "rand_core 0.6.4", "thiserror", ] [[package]] name = "cosmwasm-derive" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea73e9162e6efde00018d55ed0061e93a108b5d6ec4548b4f8ce3c706249687" +checksum = "bc5e72e330bd3bdab11c52b5ecbdeb6a8697a004c57964caeb5d876f0b088b3c" dependencies = [ "syn 1.0.109", ] @@ -1104,12 +1104,12 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d6864742e3a7662d024b51a94ea81c9af21db6faea2f9a6d2232bb97c6e53e" +checksum = "ef8666e572a3a2519010dde88c04d16e9339ae751b56b2bb35081fe3f7d6be74" dependencies = [ "base64", - "bech32", + "bech32 0.9.1", "bnum", "cosmwasm-crypto", "cosmwasm-derive", @@ -1155,18 +1155,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-bigint" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - [[package]] name = "crypto-bigint" version = "0.5.5" @@ -1240,72 +1228,36 @@ dependencies = [ [[package]] name = "cw-multi-test" -version = "0.15.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8e81b4a7821d5eeba0d23f737c16027b39a600742ca8c32eb980895ffd270f4" -dependencies = [ - "anyhow", - "cosmwasm-std", - "cosmwasm-storage", - "cw-storage-plus 0.15.1", - "cw-utils 0.15.1", - "derivative", - "itertools 0.10.5", - "prost 0.9.0", - "schemars", - "serde", - "thiserror", -] - -[[package]] -name = "cw-multi-test" -version = "0.16.5" -source = "git+https://github.com/astroport-fi/cw-multi-test?branch=astroport_cozy_fork#08a11aa26f9f35b41f707e803d4cdec38fd2e78d" +checksum = "67fff029689ae89127cf6d7655809a68d712f3edbdb9686c70b018ba438b26ca" dependencies = [ "anyhow", + "bech32 0.9.1", "cosmwasm-std", "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "derivative", - "itertools 0.11.0", - "prost 0.11.9", + "itertools 0.12.1", + "prost 0.12.3", "schemars", "serde", "sha2 0.10.8", "thiserror", ] -[[package]] -name = "cw-multi-test" -version = "0.16.5" -source = "git+https://github.com/astroport-fi/cw-multi-test.git?rev=269a2c829d1ad25d67caa4600f72d2a21fb8fdeb#269a2c829d1ad25d67caa4600f72d2a21fb8fdeb" -dependencies = [ - "anyhow", - "cosmwasm-std", - "cw-storage-plus 1.2.0", - "cw-utils 1.0.3", - "derivative", - "itertools 0.10.5", - "k256 0.11.6", - "prost 0.9.0", - "schemars", - "serde", - "thiserror", -] - [[package]] name = "cw-multi-test" version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fff029689ae89127cf6d7655809a68d712f3edbdb9686c70b018ba438b26ca" +source = "git+https://github.com/astroport-fi/cw-multi-test?branch=feat/bank_with_send_hooks#80ebf1aff909d5438fff093b6243c5d7cbf924b3" dependencies = [ "anyhow", - "bech32", + "bech32 0.9.1", "cosmwasm-std", "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "derivative", - "itertools 0.12.0", + "itertools 0.12.1", "prost 0.12.3", "schemars", "serde", @@ -1315,16 +1267,17 @@ dependencies = [ [[package]] name = "cw-multi-test" -version = "0.20.0" -source = "git+https://github.com/astroport-fi/cw-multi-test?branch=feat/bank_with_send_hooks#80ebf1aff909d5438fff093b6243c5d7cbf924b3" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c6c2f2ee4b29e03fd709f4278a70a11c816690f2c992a9c980303ebda574f8" dependencies = [ "anyhow", - "bech32", + "bech32 0.11.0", "cosmwasm-std", "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "derivative", - "itertools 0.12.0", + "itertools 0.12.1", "prost 0.12.3", "schemars", "serde", @@ -1518,16 +1471,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "der" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" -dependencies = [ - "const-oid", - "zeroize", -] - [[package]] name = "der" version = "0.7.8" @@ -1588,30 +1531,18 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272" -[[package]] -name = "ecdsa" -version = "0.14.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" -dependencies = [ - "der 0.6.1", - "elliptic-curve 0.12.3", - "rfc6979 0.3.1", - "signature 1.6.4", -] - [[package]] name = "ecdsa" version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "der 0.7.8", + "der", "digest 0.10.7", - "elliptic-curve 0.13.8", - "rfc6979 0.4.0", - "signature 2.2.0", - "spki 0.7.3", + "elliptic-curve", + "rfc6979", + "signature", + "spki", ] [[package]] @@ -1620,8 +1551,8 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8 0.10.2", - "signature 2.2.0", + "pkcs8", + "signature", ] [[package]] @@ -1658,41 +1589,21 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" -[[package]] -name = "elliptic-curve" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" -dependencies = [ - "base16ct 0.1.1", - "crypto-bigint 0.4.9", - "der 0.6.1", - "digest 0.10.7", - "ff 0.12.1", - "generic-array", - "group 0.12.1", - "pkcs8 0.9.0", - "rand_core 0.6.4", - "sec1 0.3.0", - "subtle", - "zeroize", -] - [[package]] name = "elliptic-curve" version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.5", + "base16ct", + "crypto-bigint", "digest 0.10.7", - "ff 0.13.0", + "ff", "generic-array", - "group 0.13.0", - "pkcs8 0.10.2", + "group", + "pkcs8", "rand_core 0.6.4", - "sec1 0.7.3", + "sec1", "subtle", "zeroize", ] @@ -1774,16 +1685,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" -[[package]] -name = "ff" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "ff" version = "0.13.0" @@ -1941,24 +1842,13 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" -[[package]] -name = "group" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" -dependencies = [ - "ff 0.12.1", - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "group" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff 0.13.0", + "ff", "rand_core 0.6.4", "subtle", ] @@ -2235,9 +2125,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] @@ -2259,28 +2149,16 @@ dependencies = [ [[package]] name = "k256" -version = "0.11.6" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" +checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" dependencies = [ "cfg-if", - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.8", -] - -[[package]] -name = "k256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f01b677d82ef7a676aa37e099defd83a28e15687112cafdd112d60236b6115b" -dependencies = [ - "cfg-if", - "ecdsa 0.16.9", - "elliptic-curve 0.13.8", + "ecdsa", + "elliptic-curve", "once_cell", "sha2 0.10.8", - "signature 2.2.0", + "signature", ] [[package]] @@ -2392,7 +2270,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46f60e477bd71007d9ff78ae020ec1c6b3b47798578af6151429434d86472efc" dependencies = [ - "bech32", + "bech32 0.9.1", "cosmos-sdk-proto 0.20.0", "cosmwasm-schema", "cosmwasm-std", @@ -2689,24 +2567,14 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pkcs8" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" -dependencies = [ - "der 0.6.1", - "spki 0.6.0", -] - [[package]] name = "pkcs8" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.8", - "spki 0.7.3", + "der", + "spki", ] [[package]] @@ -2778,16 +2646,6 @@ dependencies = [ "unarray", ] -[[package]] -name = "prost" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" -dependencies = [ - "bytes", - "prost-derive 0.9.0", -] - [[package]] name = "prost" version = "0.11.9" @@ -2808,19 +2666,6 @@ dependencies = [ "prost-derive 0.12.3", ] -[[package]] -name = "prost-derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" -dependencies = [ - "anyhow", - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "prost-derive" version = "0.11.9" @@ -3120,17 +2965,6 @@ dependencies = [ "winreg", ] -[[package]] -name = "rfc6979" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" -dependencies = [ - "crypto-bigint 0.4.9", - "hmac", - "zeroize", -] - [[package]] name = "rfc6979" version = "0.4.0" @@ -3329,30 +3163,16 @@ dependencies = [ "untrusted", ] -[[package]] -name = "sec1" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" -dependencies = [ - "base16ct 0.1.1", - "der 0.6.1", - "generic-array", - "pkcs8 0.9.0", - "subtle", - "zeroize", -] - [[package]] name = "sec1" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ - "base16ct 0.2.0", - "der 0.7.8", + "base16ct", + "der", "generic-array", - "pkcs8 0.10.2", + "pkcs8", "subtle", "zeroize", ] @@ -3388,9 +3208,9 @@ checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "serde" -version = "1.0.195" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -3433,9 +3253,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.195" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", @@ -3517,16 +3337,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - [[package]] name = "signature" version = "2.2.0" @@ -3607,16 +3417,6 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -[[package]] -name = "spki" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" -dependencies = [ - "base64ct", - "der 0.6.1", -] - [[package]] name = "spki" version = "0.7.3" @@ -3624,7 +3424,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", - "der 0.7.8", + "der", ] [[package]] @@ -3756,7 +3556,7 @@ dependencies = [ "ed25519-consensus", "flex-error", "futures", - "k256 0.13.2", + "k256", "num-traits", "once_cell", "prost 0.12.3", @@ -3767,7 +3567,7 @@ dependencies = [ "serde_json", "serde_repr", "sha2 0.10.8", - "signature 2.2.0", + "signature", "subtle", "subtle-encoding", "tendermint-proto 0.34.0", @@ -3910,18 +3710,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 1d09c9c08..cd1306ed5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,5 +34,8 @@ incremental = false overflow-checks = true strip = true +[patch.'https://github.com/astroport-fi/hidden_astroport_core'] +astroport = { path = "packages/astroport" } + [patch.'https://github.com/astroport-fi/astroport-core'] astroport = { path = "packages/astroport" } diff --git a/contracts/tokenomics/generator/tests/integration.rs b/contracts/tokenomics/generator/tests/integration.rs deleted file mode 100644 index e69de29bb..000000000 diff --git a/contracts/tokenomics/staking/tests/integration.rs b/contracts/tokenomics/staking/tests/integration.rs deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/astroport_mocks/src/staking.rs b/packages/astroport_mocks/src/staking.rs deleted file mode 100644 index e69de29bb..000000000 From 4d82da60496b8b62794975564e09e32cdb6db213 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 12:49:51 +0100 Subject: [PATCH 68/84] revert README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b14c31bb8..00d83f2ed 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Astroport Core -[![codecov](https://codecov.io/gh/astroport-fi/astroport-core/branch/main/graph/badge.svg?token=ROOLZTGZMM)](https://codecov.io/gh/astroport-fi/astroport-core) +[![codecov](https://codecov.io/gh/astroport-fi/hidden_astroport_core/branch/main/graph/badge.svg?token=D8539UWBST)](https://codecov.io/gh/astroport-fi/hidden_astroport_core) Multi pool type automated market-maker (AMM) protocol powered by smart contracts on the [Terra](https://terra.money) blockchain. From aa7b7285fb8fc30e291b1dd1fdcf98174c31e756 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 17:32:30 +0100 Subject: [PATCH 69/84] chore: remove unused contracts; bump deps --- Cargo.lock | 339 +-- Cargo.toml | 17 +- contracts/factory/Cargo.toml | 21 +- contracts/factory/src/contract.rs | 2 +- contracts/factory/tests/factory_helper.rs | 6 +- contracts/pair/Cargo.toml | 21 +- contracts/pair/src/contract.rs | 2 +- contracts/pair/tests/integration.rs | 63 +- contracts/pair_astro_converter/Cargo.toml | 26 +- .../pair_astro_converter/tests/helper.rs | 6 +- contracts/pair_astro_xastro/.cargo/config | 6 - contracts/pair_astro_xastro/.editorconfig | 11 - contracts/pair_astro_xastro/Cargo.toml | 41 - contracts/pair_astro_xastro/README.md | 102 - .../examples/pair_astro_xastro_schema.rs | 12 - contracts/pair_astro_xastro/rustfmt.toml | 15 - contracts/pair_astro_xastro/src/contract.rs | 228 -- contracts/pair_astro_xastro/src/lib.rs | 81 - contracts/pair_astro_xastro/src/state.rs | 40 - .../pair_astro_xastro/tests/integration.rs | 719 ------ contracts/pair_concentrated/Cargo.toml | 22 +- contracts/pair_concentrated/tests/helper.rs | 6 +- .../tests/pair_concentrated_integration.rs | 53 +- contracts/pair_concentrated_inj/Cargo.toml | 2 +- contracts/pair_stable/Cargo.toml | 20 +- contracts/pair_stable/src/utils.rs | 2 +- contracts/pair_stable/tests/helper.rs | 6 +- contracts/pair_stable/tests/integration.rs | 77 +- contracts/pair_transmuter/Cargo.toml | 14 +- contracts/pair_transmuter/tests/helper.rs | 6 +- contracts/pair_xyk_sale_tax/Cargo.toml | 21 +- contracts/pair_xyk_sale_tax/src/contract.rs | 2 +- .../pair_xyk_sale_tax/tests/integration.rs | 65 +- .../periphery/astro_converter/Cargo.toml | 16 +- .../astro_converter_neutron/Cargo.toml | 2 +- contracts/periphery/fee_granter/Cargo.toml | 12 +- .../periphery/liquidity_manager/Cargo.toml | 20 +- .../periphery/liquidity_manager/src/utils.rs | 2 +- .../liquidity_manager/tests/helper.rs | 36 +- .../native-coin-wrapper/.cargo/config | 5 - .../native-coin-wrapper/.editorconfig | 11 - .../periphery/native-coin-wrapper/Cargo.toml | 38 - .../periphery/native-coin-wrapper/README.md | 78 - .../src/bin/native_coin_wrapper_schema.rs | 11 - .../native-coin-wrapper/src/contract.rs | 186 -- .../native-coin-wrapper/src/error.rs | 18 - .../periphery/native-coin-wrapper/src/lib.rs | 3 - .../native-coin-wrapper/src/state.rs | 5 - .../native-coin-wrapper/tests/integration.rs | 379 --- .../periphery/native_coin_registry/Cargo.toml | 11 +- contracts/periphery/oracle/Cargo.toml | 12 +- .../periphery/oracle/tests/integration.rs | 12 +- .../periphery/shared_multisig/.cargo/config | 6 - .../periphery/shared_multisig/Cargo.toml | 31 - contracts/periphery/shared_multisig/README.md | 393 --- .../shared_multisig/src/bin/schema.rs | 11 - .../periphery/shared_multisig/src/contract.rs | 1088 -------- .../periphery/shared_multisig/src/error.rs | 104 - .../periphery/shared_multisig/src/lib.rs | 6 - .../periphery/shared_multisig/src/state.rs | 107 - .../periphery/shared_multisig/src/utils.rs | 208 -- .../shared_multisig/tests/integration.rs | 2291 ----------------- .../periphery/tokenfactory_tracker/Cargo.toml | 12 +- contracts/router/Cargo.toml | 12 +- contracts/router/tests/factory_helper.rs | 6 +- contracts/router/tests/router_integration.rs | 10 +- contracts/token/.cargo/config | 6 - contracts/token/Cargo.toml | 27 - contracts/token/README.md | 9 - contracts/token/examples/token_schema.rs | 12 - contracts/token/src/contract.rs | 334 --- contracts/token/src/lib.rs | 1 - contracts/tokenomics/generator/.cargo/config | 6 - contracts/tokenomics/generator/.editorconfig | 11 - contracts/tokenomics/generator/Cargo.toml | 37 - contracts/tokenomics/generator/README.md | 461 ---- .../generator/assets/migrate_reward_proxy.png | Bin 64918 -> 0 bytes .../generator/examples/generator_schema.rs | 11 - .../tokenomics/generator/src/contract.rs | 2077 --------------- contracts/tokenomics/generator/src/error.rs | 57 - contracts/tokenomics/generator/src/lib.rs | 4 - .../tokenomics/generator/src/migration.rs | 93 - contracts/tokenomics/generator/src/state.rs | 305 --- contracts/tokenomics/incentives/Cargo.toml | 16 +- contracts/tokenomics/maker/Cargo.toml | 15 +- .../maker/tests/maker_integration.rs | 41 +- contracts/tokenomics/staking/Cargo.toml | 18 +- contracts/tokenomics/vesting/Cargo.toml | 18 +- contracts/tokenomics/vesting/NOTICE | 14 - .../xastro_outpost_token/.cargo/config | 5 - .../xastro_outpost_token/Cargo.toml | 31 - .../tokenomics/xastro_outpost_token/README.md | 10 - .../examples/xastro_outpost_token_schema.rs | 12 - .../xastro_outpost_token/src/contract.rs | 839 ------ .../xastro_outpost_token/src/lib.rs | 5 - .../xastro_outpost_token/src/state.rs | 53 - .../xastro_outpost_token/src/testing.rs | 990 ------- contracts/tokenomics/xastro_token/Cargo.toml | 2 +- packages/astroport/Cargo.toml | 17 +- packages/astroport/src/generator.rs | 425 --- packages/astroport/src/generator_proxy.rs | 90 - packages/astroport/src/lib.rs | 22 +- packages/astroport/src/native_coin_wrapper.rs | 54 - packages/astroport/src/outpost_handler.rs | 23 - packages/astroport/src/pair_bonded.rs | 88 - packages/astroport/src/shared_multisig.rs | 292 --- .../astroport/src/xastro_outpost_token.rs | 76 - packages/astroport_mocks/Cargo.toml | 4 +- packages/astroport_mocks/src/generator.rs | 280 -- packages/astroport_mocks/src/lib.rs | 3 - .../astroport_mocks/src/shared_multisig.rs | 444 ---- packages/astroport_mocks/src/token.rs | 2 +- packages/astroport_pcl_common/Cargo.toml | 12 +- packages/astroport_pcl_common/src/utils.rs | 6 +- packages/circular_buffer/Cargo.toml | 8 +- packages/pair_bonded/Cargo.toml | 33 - packages/pair_bonded/README.md | 172 -- packages/pair_bonded/src/base.rs | 406 --- packages/pair_bonded/src/error.rs | 42 - packages/pair_bonded/src/lib.rs | 3 - packages/pair_bonded/src/state.rs | 5 - .../generator_proxy_template/.cargo/config | 5 - templates/generator_proxy_template/Cargo.toml | 30 - templates/generator_proxy_template/README.md | 157 -- .../generator_proxy_template_schema.rs | 11 - .../generator_proxy_template/src/contract.rs | 365 --- .../generator_proxy_template/src/error.rs | 15 - templates/generator_proxy_template/src/lib.rs | 5 - .../generator_proxy_template/src/state.rs | 22 - templates/pair_bonded_template/.cargo/config | 6 - templates/pair_bonded_template/Cargo.toml | 34 - templates/pair_bonded_template/README.md | 172 -- .../examples/pair_bonded_template_schema.rs | 12 - .../pair_bonded_template/src/contract.rs | 75 - templates/pair_bonded_template/src/lib.rs | 59 - templates/pair_bonded_template/src/state.rs | 11 - 136 files changed, 437 insertions(+), 15765 deletions(-) delete mode 100644 contracts/pair_astro_xastro/.cargo/config delete mode 100644 contracts/pair_astro_xastro/.editorconfig delete mode 100644 contracts/pair_astro_xastro/Cargo.toml delete mode 100644 contracts/pair_astro_xastro/README.md delete mode 100644 contracts/pair_astro_xastro/examples/pair_astro_xastro_schema.rs delete mode 100644 contracts/pair_astro_xastro/rustfmt.toml delete mode 100644 contracts/pair_astro_xastro/src/contract.rs delete mode 100644 contracts/pair_astro_xastro/src/lib.rs delete mode 100644 contracts/pair_astro_xastro/src/state.rs delete mode 100644 contracts/pair_astro_xastro/tests/integration.rs delete mode 100644 contracts/periphery/native-coin-wrapper/.cargo/config delete mode 100644 contracts/periphery/native-coin-wrapper/.editorconfig delete mode 100644 contracts/periphery/native-coin-wrapper/Cargo.toml delete mode 100644 contracts/periphery/native-coin-wrapper/README.md delete mode 100644 contracts/periphery/native-coin-wrapper/src/bin/native_coin_wrapper_schema.rs delete mode 100644 contracts/periphery/native-coin-wrapper/src/contract.rs delete mode 100644 contracts/periphery/native-coin-wrapper/src/error.rs delete mode 100644 contracts/periphery/native-coin-wrapper/src/lib.rs delete mode 100644 contracts/periphery/native-coin-wrapper/src/state.rs delete mode 100644 contracts/periphery/native-coin-wrapper/tests/integration.rs delete mode 100644 contracts/periphery/shared_multisig/.cargo/config delete mode 100644 contracts/periphery/shared_multisig/Cargo.toml delete mode 100644 contracts/periphery/shared_multisig/README.md delete mode 100644 contracts/periphery/shared_multisig/src/bin/schema.rs delete mode 100644 contracts/periphery/shared_multisig/src/contract.rs delete mode 100644 contracts/periphery/shared_multisig/src/error.rs delete mode 100644 contracts/periphery/shared_multisig/src/lib.rs delete mode 100644 contracts/periphery/shared_multisig/src/state.rs delete mode 100644 contracts/periphery/shared_multisig/src/utils.rs delete mode 100644 contracts/periphery/shared_multisig/tests/integration.rs delete mode 100644 contracts/token/.cargo/config delete mode 100644 contracts/token/Cargo.toml delete mode 100644 contracts/token/README.md delete mode 100644 contracts/token/examples/token_schema.rs delete mode 100644 contracts/token/src/contract.rs delete mode 100644 contracts/token/src/lib.rs delete mode 100644 contracts/tokenomics/generator/.cargo/config delete mode 100644 contracts/tokenomics/generator/.editorconfig delete mode 100644 contracts/tokenomics/generator/Cargo.toml delete mode 100644 contracts/tokenomics/generator/README.md delete mode 100644 contracts/tokenomics/generator/assets/migrate_reward_proxy.png delete mode 100644 contracts/tokenomics/generator/examples/generator_schema.rs delete mode 100644 contracts/tokenomics/generator/src/contract.rs delete mode 100644 contracts/tokenomics/generator/src/error.rs delete mode 100644 contracts/tokenomics/generator/src/lib.rs delete mode 100644 contracts/tokenomics/generator/src/migration.rs delete mode 100644 contracts/tokenomics/generator/src/state.rs delete mode 100644 contracts/tokenomics/vesting/NOTICE delete mode 100644 contracts/tokenomics/xastro_outpost_token/.cargo/config delete mode 100644 contracts/tokenomics/xastro_outpost_token/Cargo.toml delete mode 100644 contracts/tokenomics/xastro_outpost_token/README.md delete mode 100644 contracts/tokenomics/xastro_outpost_token/examples/xastro_outpost_token_schema.rs delete mode 100644 contracts/tokenomics/xastro_outpost_token/src/contract.rs delete mode 100644 contracts/tokenomics/xastro_outpost_token/src/lib.rs delete mode 100644 contracts/tokenomics/xastro_outpost_token/src/state.rs delete mode 100644 contracts/tokenomics/xastro_outpost_token/src/testing.rs delete mode 100644 packages/astroport/src/generator.rs delete mode 100644 packages/astroport/src/generator_proxy.rs delete mode 100644 packages/astroport/src/native_coin_wrapper.rs delete mode 100644 packages/astroport/src/outpost_handler.rs delete mode 100644 packages/astroport/src/pair_bonded.rs delete mode 100644 packages/astroport/src/shared_multisig.rs delete mode 100644 packages/astroport/src/xastro_outpost_token.rs delete mode 100644 packages/astroport_mocks/src/generator.rs delete mode 100644 packages/astroport_mocks/src/shared_multisig.rs delete mode 100644 packages/pair_bonded/Cargo.toml delete mode 100644 packages/pair_bonded/README.md delete mode 100644 packages/pair_bonded/src/base.rs delete mode 100644 packages/pair_bonded/src/error.rs delete mode 100644 packages/pair_bonded/src/lib.rs delete mode 100644 packages/pair_bonded/src/state.rs delete mode 100644 templates/generator_proxy_template/.cargo/config delete mode 100644 templates/generator_proxy_template/Cargo.toml delete mode 100644 templates/generator_proxy_template/README.md delete mode 100644 templates/generator_proxy_template/examples/generator_proxy_template_schema.rs delete mode 100644 templates/generator_proxy_template/src/contract.rs delete mode 100644 templates/generator_proxy_template/src/error.rs delete mode 100644 templates/generator_proxy_template/src/lib.rs delete mode 100644 templates/generator_proxy_template/src/state.rs delete mode 100644 templates/pair_bonded_template/.cargo/config delete mode 100644 templates/pair_bonded_template/Cargo.toml delete mode 100644 templates/pair_bonded_template/README.md delete mode 100644 templates/pair_bonded_template/examples/pair_bonded_template_schema.rs delete mode 100644 templates/pair_bonded_template/src/contract.rs delete mode 100644 templates/pair_bonded_template/src/lib.rs delete mode 100644 templates/pair_bonded_template/src/state.rs diff --git a/Cargo.lock b/Cargo.lock index 16e780a8e..e49a1e407 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -57,16 +57,28 @@ dependencies = [ name = "astro-token-converter" version = "1.0.0" dependencies = [ - "astroport 3.13.0", + "astroport 4.0.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw2 1.1.2", - "cw20 0.15.1", + "cw20 1.1.2", "thiserror", ] +[[package]] +name = "astro-token-converter-neutron" +version = "1.0.0" +dependencies = [ + "astro-token-converter", + "astroport 4.0.0", + "cosmwasm-std", + "cw-utils 1.0.3", + "cw2 1.1.2", + "neutron-sdk", +] + [[package]] name = "astroport" version = "2.9.5" @@ -82,11 +94,30 @@ dependencies = [ "uint 0.9.5", ] +[[package]] +name = "astroport" +version = "3.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdebdf96895f363e121710cb84bbbfa659cea1bb1470260d4976d1a7206b3b16" +dependencies = [ + "astroport-circular-buffer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cosmwasm-schema", + "cosmwasm-std", + "cw-asset", + "cw-storage-plus 0.15.1", + "cw-utils 1.0.3", + "cw20 0.15.1", + "cw3", + "itertools 0.10.5", + "uint 0.9.5", +] + [[package]] name = "astroport" version = "3.13.0" +source = "git+https://github.com/astroport-fi/hidden_astroport_core#f8720e20192d47d6e7a4c3058d368954d9c9df2d" dependencies = [ - "astroport-circular-buffer", + "astroport-circular-buffer 0.2.0 (git+https://github.com/astroport-fi/hidden_astroport_core)", "cosmwasm-schema", "cosmwasm-std", "cw-asset", @@ -94,8 +125,23 @@ dependencies = [ "cw-utils 1.0.3", "cw20 0.15.1", "cw3", - "injective-math", "itertools 0.10.5", + "uint 0.9.5", +] + +[[package]] +name = "astroport" +version = "4.0.0" +dependencies = [ + "astroport-circular-buffer 0.2.0", + "cosmwasm-schema", + "cosmwasm-std", + "cw-asset", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw20 1.1.2", + "injective-math", + "itertools 0.12.1", "test-case", "thiserror", "uint 0.9.5", @@ -104,6 +150,18 @@ dependencies = [ [[package]] name = "astroport-circular-buffer" version = "0.2.0" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 1.2.0", + "thiserror", +] + +[[package]] +name = "astroport-circular-buffer" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31c7369d3c4126804f861620db2221c15b5fa7b7718f12180e265b087c933fb6" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -112,16 +170,13 @@ dependencies = [ ] [[package]] -name = "astroport-escrow-fee-distributor" -version = "1.0.2" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance#3071dab091f88fac33594574cf3bdb34d9674189" +name = "astroport-circular-buffer" +version = "0.2.0" +source = "git+https://github.com/astroport-fi/hidden_astroport_core#f8720e20192d47d6e7a4c3058d368954d9c9df2d" dependencies = [ - "astroport-governance 1.4.1", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", "thiserror", ] @@ -146,17 +201,17 @@ name = "astroport-factory" version = "1.7.0" dependencies = [ "anyhow", - "astroport 3.13.0", + "astroport 4.0.0", "astroport-pair 1.5.1", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 1.0.0", - "cw-storage-plus 0.15.1", + "cw-storage-plus 1.2.0", "cw-utils 1.0.3", - "cw2 0.15.1", - "cw20 0.15.1", - "itertools 0.10.5", + "cw2 1.1.2", + "cw20 1.1.2", + "cw20-base 1.1.0", + "itertools 0.12.1", "prost 0.11.9", "protobuf 2.28.0", "thiserror", @@ -166,7 +221,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport 3.13.0", + "astroport 3.12.2", "cosmos-sdk-proto 0.19.0", "cosmwasm-schema", "cosmwasm-std", @@ -177,42 +232,12 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-generator" -version = "2.3.2" -dependencies = [ - "astroport 3.13.0", - "astroport-governance 1.2.0", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw-utils 1.0.3", - "cw1-whitelist", - "cw2 0.15.1", - "cw20 0.15.1", - "protobuf 2.28.0", - "thiserror", -] - -[[package]] -name = "astroport-generator-proxy-template" -version = "0.0.0" -dependencies = [ - "astroport 3.13.0", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", - "thiserror", -] - [[package]] name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#182dd5bc201dd634995b5e4dc9e2774495693703" dependencies = [ - "astroport 3.13.0", + "astroport 4.0.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -221,14 +246,14 @@ dependencies = [ [[package]] name = "astroport-governance" -version = "1.4.1" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance#3071dab091f88fac33594574cf3bdb34d9674189" +version = "2.0.0" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance#1a39c2d985138f9c293b82a9ba8a6088a9d21ff0" dependencies = [ "astroport 3.13.0", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw20 0.15.1", + "cw-storage-plus 1.2.0", + "cw20 1.1.2", "thiserror", ] @@ -238,7 +263,7 @@ version = "1.1.0" dependencies = [ "anyhow", "astro-token-converter", - "astroport 3.13.0", + "astroport 4.0.0", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.1", @@ -248,12 +273,12 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 1.0.0", - "cw-storage-plus 0.15.1", + "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw2 1.1.2", "cw20 1.1.2", "cw20-base 1.1.0", - "itertools 0.11.0", + "itertools 0.12.1", "proptest", "thiserror", ] @@ -263,22 +288,20 @@ name = "astroport-liquidity-manager" version = "1.1.0" dependencies = [ "anyhow", - "astroport 3.13.0", + "astroport 4.0.0", "astroport-factory 1.7.0", - "astroport-generator", + "astroport-incentives", "astroport-native-coin-registry", "astroport-pair 1.5.1", "astroport-pair-stable", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 1.0.0", "cw-storage-plus 1.2.0", - "cw1-whitelist", - "cw20 0.15.1", - "cw20-base 0.15.1", + "cw20 1.1.2", + "cw20-base 1.1.0", "derivative", - "itertools 0.10.5", + "itertools 0.12.1", "serde_json", "thiserror", ] @@ -288,17 +311,16 @@ name = "astroport-maker" version = "1.4.0" dependencies = [ "astro-satellite-package", - "astroport 3.13.0", - "astroport-escrow-fee-distributor", + "astroport 4.0.0", "astroport-factory 1.7.0", - "astroport-governance 1.4.1", + "astroport-governance 2.0.0", "astroport-native-coin-registry", "astroport-pair 1.5.1", "astroport-pair-stable", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 1.0.0", - "cw-storage-plus 0.15.1", + "cw-storage-plus 1.2.0", "cw2 1.1.2", "cw20 1.1.2", "cw20-base 1.1.0", @@ -310,16 +332,13 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport 3.13.0", + "astroport 4.0.0", "astroport-factory 1.7.0", - "astroport-generator", "astroport-native-coin-registry", "astroport-pair 1.5.1", "astroport-pair-concentrated 3.0.0", "astroport-pair-stable", - "astroport-shared-multisig", "astroport-staking", - "astroport-token", "astroport-vesting 1.4.0", "astroport-xastro-token", "cosmwasm-schema", @@ -328,6 +347,7 @@ dependencies = [ "cw-utils 1.0.3", "cw1-whitelist", "cw20 0.15.1", + "cw20-base 1.1.0", "cw3", "injective-cosmwasm", "schemars", @@ -338,13 +358,12 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport 3.13.0", + "astroport 3.12.2", "cosmwasm-schema", "cosmwasm-std", - "cosmwasm-storage", "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", - "cw2 0.15.1", + "cw2 1.1.2", "thiserror", ] @@ -353,18 +372,18 @@ name = "astroport-oracle" version = "2.1.2" dependencies = [ "anyhow", - "astroport 3.13.0", + "astroport 3.12.2", "astroport-factory 1.7.0", "astroport-native-coin-registry", "astroport-pair 1.5.1", "astroport-pair-stable", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", - "cw2 0.15.1", + "cw2 1.1.2", "cw20 0.15.1", + "cw20-base 1.1.0", "itertools 0.10.5", "thiserror", ] @@ -390,16 +409,16 @@ dependencies = [ name = "astroport-pair" version = "1.5.1" dependencies = [ - "astroport 3.13.0", + "astroport 4.0.0", "astroport-factory 1.7.0", "astroport-mocks", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.15.1", + "cw-storage-plus 1.2.0", "cw-utils 1.0.3", - "cw2 0.15.1", - "cw20 0.15.1", + "cw2 1.1.2", + "cw20 1.1.2", + "cw20-base 1.1.0", "integer-sqrt", "proptest", "prost 0.11.9", @@ -407,32 +426,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-pair-bonded" -version = "1.0.1" -dependencies = [ - "astroport 3.13.0", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", - "thiserror", -] - -[[package]] -name = "astroport-pair-bonded-template" -version = "1.0.0" -dependencies = [ - "astroport 3.13.0", - "astroport-pair-bonded", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", - "thiserror", -] - [[package]] name = "astroport-pair-concentrated" version = "1.2.13" @@ -456,22 +449,22 @@ name = "astroport-pair-concentrated" version = "3.0.0" dependencies = [ "anyhow", - "astroport 3.13.0", - "astroport-circular-buffer", + "astroport 4.0.0", + "astroport-circular-buffer 0.2.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-native-coin-registry", "astroport-pair-concentrated 1.2.13", "astroport-pcl-common", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw-utils 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw2 1.1.2", + "cw20 1.1.2", + "cw20-base 1.1.0", "derivative", - "itertools 0.10.5", + "itertools 0.12.1", "proptest", "thiserror", ] @@ -482,17 +475,17 @@ version = "1.0.0" dependencies = [ "anyhow", "astro-token-converter", - "astroport 3.13.0", + "astroport 4.0.0", "astroport-factory 1.7.0", "astroport-pair 1.3.3", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw2 1.1.2", - "cw20 0.15.1", + "cw20 1.1.2", + "cw20-base 1.1.0", "derivative", "itertools 0.12.1", "serde", @@ -504,20 +497,20 @@ name = "astroport-pair-stable" version = "3.5.0" dependencies = [ "anyhow", - "astroport 3.13.0", - "astroport-circular-buffer", + "astroport 4.0.0", + "astroport-circular-buffer 0.2.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-native-coin-registry", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.15.1", + "cw-storage-plus 1.2.0", "cw-utils 1.0.3", - "cw2 0.15.1", - "cw20 0.15.1", + "cw2 1.1.2", + "cw20 1.1.2", + "cw20-base 1.1.0", "derivative", - "itertools 0.10.5", + "itertools 0.12.1", "proptest", "prost 0.11.9", "sim", @@ -529,10 +522,9 @@ name = "astroport-pair-transmuter" version = "1.1.1" dependencies = [ "anyhow", - "astroport 3.13.0", + "astroport 3.12.2", "astroport-factory 1.7.0", "astroport-native-coin-registry", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 1.0.0", @@ -540,6 +532,7 @@ dependencies = [ "cw-utils 1.0.3", "cw2 1.1.2", "cw20 0.15.1", + "cw20-base 1.1.0", "derivative", "itertools 0.12.1", "thiserror", @@ -549,18 +542,18 @@ dependencies = [ name = "astroport-pair-xyk-sale-tax" version = "1.6.0" dependencies = [ - "astroport 3.13.0", + "astroport 4.0.0", "astroport-factory 1.7.0", "astroport-mocks", "astroport-pair 1.3.3", "astroport-pair 1.5.1", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.15.1", + "cw-storage-plus 1.2.0", "cw-utils 1.0.3", - "cw2 0.15.1", - "cw20 0.15.1", + "cw2 1.1.2", + "cw20 1.1.2", + "cw20-base 1.1.0", "integer-sqrt", "proptest", "prost 0.11.9", @@ -574,13 +567,13 @@ name = "astroport-pcl-common" version = "2.0.0" dependencies = [ "anyhow", - "astroport 3.13.0", + "astroport 4.0.0", "astroport-factory 1.7.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", "cw20 1.1.2", - "itertools 0.11.0", + "itertools 0.12.1", "thiserror", ] @@ -589,37 +582,17 @@ name = "astroport-router" version = "1.2.1" dependencies = [ "anyhow", - "astroport 3.13.0", + "astroport 3.12.2", "astroport-factory 1.7.0", "astroport-pair 1.5.1", - "astroport-token", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 1.0.0", "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", - "integer-sqrt", - "thiserror", -] - -[[package]] -name = "astroport-shared-multisig" -version = "1.0.0" -dependencies = [ - "astroport 3.13.0", - "astroport-generator", - "astroport-mocks", - "astroport-pair 1.5.1", - "astroport-pair-concentrated 3.0.0", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw-utils 1.0.3", "cw2 1.1.2", "cw20 0.15.1", - "cw3", - "itertools 0.10.5", + "cw20-base 1.1.0", + "integer-sqrt", "thiserror", ] @@ -628,7 +601,7 @@ name = "astroport-staking" version = "2.0.0" dependencies = [ "anyhow", - "astroport 3.13.0", + "astroport 4.0.0", "astroport-tokenfactory-tracker", "cosmwasm-schema", "cosmwasm-std", @@ -641,24 +614,11 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-token" -version = "1.1.1" -dependencies = [ - "astroport 3.13.0", - "cosmwasm-schema", - "cosmwasm-std", - "cw2 0.15.1", - "cw20 0.15.1", - "cw20-base 0.15.1", - "snafu", -] - [[package]] name = "astroport-tokenfactory-tracker" version = "1.0.0" dependencies = [ - "astroport 3.13.0", + "astroport 4.0.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", @@ -690,16 +650,16 @@ name = "astroport-vesting" version = "1.4.0" dependencies = [ "astro-token-converter", - "astroport 3.13.0", + "astroport 4.0.0", "astroport-vesting 1.3.1", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 1.0.0", - "cw-storage-plus 0.15.1", + "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw2 1.1.2", - "cw20 0.15.1", - "cw20-base 0.15.1", + "cw20 1.1.2", + "cw20-base 1.1.0", "thiserror", ] @@ -715,26 +675,11 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-xastro-outpost-token" -version = "1.0.0" -dependencies = [ - "astroport 3.13.0", - "cosmwasm-schema", - "cosmwasm-std", - "cw-multi-test 1.0.0", - "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "cw20 0.15.1", - "cw20-base 0.15.1", - "snafu", -] - [[package]] name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport 3.13.0", + "astroport 3.12.2", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 1.0.0", @@ -1124,16 +1069,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cosmwasm-storage" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "800aaddd70ba915e19bf3d2d992aa3689d8767857727fdd3b414df4fd52d2aa1" -dependencies = [ - "cosmwasm-std", - "serde", -] - [[package]] name = "cpufeatures" version = "0.2.9" diff --git a/Cargo.toml b/Cargo.toml index cd1306ed5..8be955423 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,19 +9,22 @@ members = [ "contracts/pair_astro_converter", "contracts/pair_transmuter", # "contracts/pair_concentrated_inj", TODO: rewrite OB liquidity deployment - # "contracts/pair_astro_xastro", # unused "contracts/pair_xyk_sale_tax", "contracts/router", - "contracts/token", "contracts/whitelist", - "templates/*", "contracts/tokenomics/*", - "contracts/periphery/fee_granter", - "contracts/periphery/liquidity_manager", - "contracts/periphery/native_coin_registry", - "contracts/periphery/oracle", + "contracts/periphery/*" ] +[workspace.dependencies] +cosmwasm-std = "1.5" +cw-storage-plus = "1.2" +cw2 = "1" +thiserror = "1.0" +itertools = "0.12" +cosmwasm-schema = "1.5" +cw-utils = "1" + [profile.release] opt-level = "z" debug = false diff --git a/contracts/factory/Cargo.toml b/contracts/factory/Cargo.toml index 771cefa7b..6f1809495 100644 --- a/contracts/factory/Cargo.toml +++ b/contracts/factory/Cargo.toml @@ -26,20 +26,21 @@ backtraces = ["cosmwasm-std/backtraces"] library = [] [dependencies] -cosmwasm-std = "1.1" -astroport = { path = "../../packages/astroport", version = "3.10" } -cw-storage-plus = "0.15" -cw2 = "0.15" -thiserror = "1.0" +cosmwasm-std.workspace = true +astroport = { path = "../../packages/astroport", version = "4" } +cw-storage-plus.workspace = true +cw2.workspace = true +thiserror.workspace = true +itertools.workspace = true +cosmwasm-schema.workspace = true +cw-utils.workspace = true +# TODO: remove it protobuf = { version = "2", features = ["with-bytes"] } -itertools = "0.10" -cosmwasm-schema = "1.1" -cw-utils = "1.0.1" [dev-dependencies] cw-multi-test = "1.0.0" -astroport-token = { path = "../token" } +cw20-base = { version = "1.1", features = ["library"] } astroport-pair = { path = "../pair" } -cw20 = "0.15" +cw20 = "1.1" anyhow = "1.0" prost = "0.11.5" diff --git a/contracts/factory/src/contract.rs b/contracts/factory/src/contract.rs index 7755be1e9..2c19bd516 100644 --- a/contracts/factory/src/contract.rs +++ b/contracts/factory/src/contract.rs @@ -16,7 +16,7 @@ use astroport::factory::{ Config, ConfigResponse, ExecuteMsg, FeeInfoResponse, InstantiateMsg, PairConfig, PairType, PairsResponse, QueryMsg, }; -use astroport::generator::ExecuteMsg::DeactivatePool; +use astroport::incentives::ExecuteMsg::DeactivatePool; use astroport::pair::InstantiateMsg as PairInstantiateMsg; use crate::error::ContractError; diff --git a/contracts/factory/tests/factory_helper.rs b/contracts/factory/tests/factory_helper.rs index ac2a42af2..cf58707cc 100644 --- a/contracts/factory/tests/factory_helper.rs +++ b/contracts/factory/tests/factory_helper.rs @@ -17,9 +17,9 @@ pub struct FactoryHelper { impl FactoryHelper { pub fn init(router: &mut App, owner: &Addr) -> Self { let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )); let cw20_token_code_id = router.store_code(astro_token_contract); diff --git a/contracts/pair/Cargo.toml b/contracts/pair/Cargo.toml index 048315b3f..5fc760ac4 100644 --- a/contracts/pair/Cargo.toml +++ b/contracts/pair/Cargo.toml @@ -27,19 +27,20 @@ library = [] [dependencies] integer-sqrt = "0.1" -astroport = { path = "../../packages/astroport", version = "3" } -cw2 = "0.15" -cw20 = "0.15" -cosmwasm-std = "1.1" -cw-storage-plus = "0.15" -thiserror = { version = "1.0" } +astroport = { path = "../../packages/astroport", version = "4" } +cw2.workspace = true +cw20 = "1.1" +cosmwasm-std.workspace = true +cw-storage-plus.workspace = true +thiserror.workspace = true +cosmwasm-schema.workspace = true +cw-utils.workspace = true +# TODO: remove it protobuf = { version = "2", features = ["with-bytes"] } -cosmwasm-schema = "1.1" -cw-utils = "1.0.1" [dev-dependencies] -astroport-token = { path = "../token" } +cw20-base = { version="1.1", features = ["library"] } astroport-factory = { path = "../factory" } proptest = "1.0" prost = "0.11.5" -astroport-mocks = { path = "../../packages/astroport_mocks/" } +astroport-mocks = { path = "../../packages/astroport_mocks" } diff --git a/contracts/pair/src/contract.rs b/contracts/pair/src/contract.rs index 15b358b94..5225c28be 100644 --- a/contracts/pair/src/contract.rs +++ b/contracts/pair/src/contract.rs @@ -17,7 +17,7 @@ use astroport::asset::{ PairInfo, MINIMUM_LIQUIDITY_AMOUNT, }; use astroport::factory::PairType; -use astroport::generator::Cw20HookMsg as GeneratorHookMsg; +use astroport::incentives::Cw20Msg as GeneratorHookMsg; use astroport::pair::{ ConfigResponse, FeeShareConfig, XYKPoolConfig, XYKPoolParams, XYKPoolUpdateParams, DEFAULT_SLIPPAGE, MAX_ALLOWED_SLIPPAGE, MAX_FEE_SHARE_BPS, diff --git a/contracts/pair/tests/integration.rs b/contracts/pair/tests/integration.rs index 83df4c647..a2d01c1a0 100644 --- a/contracts/pair/tests/integration.rs +++ b/contracts/pair/tests/integration.rs @@ -1,9 +1,9 @@ #![cfg(not(tarpaulin_include))] -use std::cell::RefCell; -use std::rc::Rc; +use cosmwasm_std::{attr, to_json_binary, Addr, Coin, Decimal, Uint128, Uint64}; +use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; -use astroport::asset::{native_asset_info, Asset, AssetInfo, AssetInfoExt, PairInfo}; +use astroport::asset::{native_asset_info, Asset, AssetInfo, PairInfo}; use astroport::factory::{ ExecuteMsg as FactoryExecuteMsg, InstantiateMsg as FactoryInstantiateMsg, PairConfig, PairType, QueryMsg as FactoryQueryMsg, @@ -14,11 +14,8 @@ use astroport::pair::{ MAX_FEE_SHARE_BPS, TWAP_PRECISION, }; use astroport::token::InstantiateMsg as TokenInstantiateMsg; -use astroport_mocks::cw_multi_test::{App, BasicApp, ContractWrapper, Executor}; -use astroport_mocks::{astroport_address, MockGeneratorBuilder, MockXykPairBuilder}; +use astroport_mocks::cw_multi_test::{App, ContractWrapper, Executor}; use astroport_pair::error::ContractError; -use cosmwasm_std::{attr, to_json_binary, Addr, Coin, Decimal, Uint128, Uint64}; -use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; const OWNER: &str = "owner"; @@ -31,9 +28,9 @@ fn mock_app(owner: Addr, coins: Vec) -> App { fn store_token_code(app: &mut App) -> u64 { let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )); app.store_code(astro_token_contract) @@ -1701,52 +1698,6 @@ fn enable_disable_fee_sharing() { ); } -#[test] -fn provide_liquidity_with_autostaking_to_generator() { - let astroport = astroport_address(); - - let app = Rc::new(RefCell::new(BasicApp::new(|router, _, storage| { - router - .bank - .init_balance( - storage, - &astroport, - vec![Coin { - denom: "ustake".to_owned(), - amount: Uint128::new(1_000_000_000000), - }], - ) - .unwrap(); - }))); - - let generator = MockGeneratorBuilder::new(&app).instantiate(); - - let factory = generator.factory(); - - let astro_token_info = generator.astro_token_info(); - let ustake = native_asset_info("ustake".to_owned()); - - let pair = MockXykPairBuilder::new(&app) - .with_factory(&factory) - .with_asset(&astro_token_info) - .with_asset(&ustake) - .instantiate(); - - pair.mint_allow_provide_and_stake( - &astroport, - &[ - astro_token_info.with_balance(1_000_000000u128), - ustake.with_balance(1_000_000000u128), - ], - ); - - assert_eq!(pair.lp_token().balance(&pair.address), Uint128::new(1000)); - assert_eq!( - generator.query_deposit(&pair.lp_token(), &astroport), - Uint128::new(999_999000), - ); -} - #[test] fn test_imbalanced_withdraw_is_disabled() { let owner = Addr::unchecked("owner"); diff --git a/contracts/pair_astro_converter/Cargo.toml b/contracts/pair_astro_converter/Cargo.toml index 7fe415b04..525a6d551 100644 --- a/contracts/pair_astro_converter/Cargo.toml +++ b/contracts/pair_astro_converter/Cargo.toml @@ -7,9 +7,9 @@ description = "Astroport old cw20 ASTRO -> new tf ASTRO converter virtual pair" license = "GPL-3" exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", ] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -24,22 +24,22 @@ backtraces = ["cosmwasm-std/backtraces"] library = [] [dependencies] -astroport = { path = "../../packages/astroport", version = "3" } -cw2 = "1" -cw20 = "0.15.1" -cosmwasm-std = "1.5" -cw-storage-plus = "1" -thiserror = { version = "1.0" } -cosmwasm-schema = "1.1" -cw-utils = "1.0.1" +astroport = { path = "../../packages/astroport", version = "4" } +cw2.workspace = true +cw20 = "1.1" +cosmwasm-std.workspace = true +cw-storage-plus.workspace = true +thiserror.workspace = true +cosmwasm-schema.workspace = true +cw-utils.workspace = true serde = { version = "1.0.193", features = ["derive"] } [dev-dependencies] anyhow = "1" derivative = "2.2" -itertools = "0.12" +itertools.workspace = true cw-multi-test = "0.20.0" -astroport-token = { path = "../token" } +cw20-base = "1.1" astroport-factory = { path = "../factory" } astroport-pair = "~1.3.3" astro-token-converter = { path = "../periphery/astro_converter", version = "1.0" } diff --git a/contracts/pair_astro_converter/tests/helper.rs b/contracts/pair_astro_converter/tests/helper.rs index 38130a6ad..48db1e801 100644 --- a/contracts/pair_astro_converter/tests/helper.rs +++ b/contracts/pair_astro_converter/tests/helper.rs @@ -87,9 +87,9 @@ pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { pub fn token_contract() -> Box> { Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )) } diff --git a/contracts/pair_astro_xastro/.cargo/config b/contracts/pair_astro_xastro/.cargo/config deleted file mode 100644 index 4222280f7..000000000 --- a/contracts/pair_astro_xastro/.cargo/config +++ /dev/null @@ -1,6 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --example pair_astro_xastro" diff --git a/contracts/pair_astro_xastro/.editorconfig b/contracts/pair_astro_xastro/.editorconfig deleted file mode 100644 index 3d36f20b1..000000000 --- a/contracts/pair_astro_xastro/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.rs] -indent_size = 4 diff --git a/contracts/pair_astro_xastro/Cargo.toml b/contracts/pair_astro_xastro/Cargo.toml deleted file mode 100644 index ef5c36ba7..000000000 --- a/contracts/pair_astro_xastro/Cargo.toml +++ /dev/null @@ -1,41 +0,0 @@ -[package] -name = "astroport-pair-astro-xastro" -version = "1.0.3" -authors = ["Astroport"] -edition = "2021" -description = "The Astroport ASTRO-xASTRO pair contract implementation" -license = "MIT" - -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -# for quicker tests, cargo test --lib -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] -library = [] - -[dependencies] -astroport = { path = "../../packages/astroport", version = "3" } -astroport-pair-bonded = { path = "../../packages/pair_bonded" } -cw2 = { version = "0.15" } -cw20 = { version = "0.15" } -cosmwasm-std = { version = "1.1" } -cw-storage-plus = "0.15" -thiserror = { version = "1.0" } -cosmwasm-schema = "1.1" - -[dev-dependencies] -astroport-token = { path = "../token" } -astroport-factory = { path = "../factory" } -cw-multi-test = "1.0.0" -astroport-staking = { path = "../tokenomics/staking" } -astroport-xastro-token = { path = "../tokenomics/xastro_token" } diff --git a/contracts/pair_astro_xastro/README.md b/contracts/pair_astro_xastro/README.md deleted file mode 100644 index a9b4c8022..000000000 --- a/contracts/pair_astro_xastro/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# Astroport ASTRO-xASTRO pair - -This pool is implementation of pair bonded template. It allows to process ASTRO-xASTRO swap operations via Astroport Staking. - ---- - -## InstantiateMsg - -Initializes a new stableswap pair. - -```json -{ - "token_code_id": 123, - "factory_addr": "terra...", - "asset_infos": [ - { - "token": { - "contract_addr": "terra..." - } - }, - { - "token": { - "contract_addr": "terra..." - } - } - ], - "init_params": "" -} -``` - -Init params(should be base64 encoded) - -```json -{ - "astro_addr": "terra...", - "xastro_addr": "terra...", - "staking_addr": "terra..." -} -``` - -## Implemented methods - -### `swap` - -Perform a swap via Astroport Staking contract. - -```json - { - "swap": { - "offer_asset": { - "info": { - "native_token": { - "denom": "uluna" - } - }, - "amount": "123" - }, - "belief_price": "123", - "max_spread": "123", - "to": "terra..." - } - } -``` - - -### `simulation` - -Simulates a swap and returns the spread and commission amounts. - -```json -{ - "simulation": { - "offer_asset": { - "info": { - "native_token": { - "denom": "uusd" - } - }, - "amount": "1000000" - } - } -} -``` - -### `reverse_simulation` - -Reverse simulates a swap (specifies the ask instead of the offer) and returns the offer amount, spread and commission. - -```json -{ - "reverse_simulation": { - "ask_asset": { - "info": { - "token": { - "contract_addr": "terra..." - } - }, - "amount": "1000000" - } - } -} -``` diff --git a/contracts/pair_astro_xastro/examples/pair_astro_xastro_schema.rs b/contracts/pair_astro_xastro/examples/pair_astro_xastro_schema.rs deleted file mode 100644 index 729d53213..000000000 --- a/contracts/pair_astro_xastro/examples/pair_astro_xastro_schema.rs +++ /dev/null @@ -1,12 +0,0 @@ -use cosmwasm_schema::write_api; - -use astroport::pair::InstantiateMsg; -use astroport::pair_bonded::{ExecuteMsg, QueryMsg}; - -fn main() { - write_api! { - instantiate: InstantiateMsg, - query: QueryMsg, - execute: ExecuteMsg, - } -} diff --git a/contracts/pair_astro_xastro/rustfmt.toml b/contracts/pair_astro_xastro/rustfmt.toml deleted file mode 100644 index 11a85e6a9..000000000 --- a/contracts/pair_astro_xastro/rustfmt.toml +++ /dev/null @@ -1,15 +0,0 @@ -# stable -newline_style = "unix" -hard_tabs = false -tab_spaces = 4 - -# unstable... should we require `rustup run nightly cargo fmt` ? -# or just update the style guide when they are stable? -#fn_single_line = true -#format_code_in_doc_comments = true -#overflow_delimited_expr = true -#reorder_impl_items = true -#struct_field_align_threshold = 20 -#struct_lit_single_line = true -#report_todo = "Always" - diff --git a/contracts/pair_astro_xastro/src/contract.rs b/contracts/pair_astro_xastro/src/contract.rs deleted file mode 100644 index 9450a7add..000000000 --- a/contracts/pair_astro_xastro/src/contract.rs +++ /dev/null @@ -1,228 +0,0 @@ -use crate::state::Params; -use cosmwasm_std::{ - to_json_binary, Addr, CosmosMsg, Decimal, Deps, DepsMut, Env, MessageInfo, Response, StdError, - StdResult, Uint128, WasmMsg, -}; - -use astroport::asset::{Asset, AssetInfo}; - -use astroport::pair::{ReverseSimulationResponse, SimulationResponse}; -use astroport::pair_bonded::{Config, ExecuteMsg}; -use astroport::querier::{query_supply, query_token_balance}; -use astroport::staking::Cw20HookMsg as StakingCw20HookMsg; -use astroport_pair_bonded::base::PairBonded; -use astroport_pair_bonded::error::ContractError; -use astroport_pair_bonded::state::CONFIG; -use cw20::Cw20ExecuteMsg; -use cw_storage_plus::Item; - -/// This structure stores contract params. -pub(crate) struct Contract<'a> { - pub params: Item<'a, Params>, -} - -impl<'a> Contract<'a> { - pub(crate) fn new(params_key: &'a str) -> Self { - Contract { - params: Item::::new(params_key), - } - } -} - -/// Implementation of the bonded pair template. Performs ASTRO-xASTRO swap operations. -impl<'a> PairBonded<'a> for Contract<'a> { - const CONTRACT_NAME: &'a str = "astroport-pair-astro-xastro"; - - fn swap( - &self, - deps: DepsMut, - env: Env, - _info: MessageInfo, - sender: Addr, - offer_asset: Asset, - _belief_price: Option, - _max_spread: Option, - to: Option, - ) -> Result { - let config = CONFIG.load(deps.storage)?; - - // If the asset balance already increased - // We should subtract the user deposit from the pool offer asset amount - let pools = config - .pair_info - .query_pools(&deps.querier, &env.contract.address)? - .into_iter() - .map(|mut p| { - if p.info.equal(&offer_asset.info) { - p.amount = p.amount.checked_sub(offer_asset.amount)?; - } - Ok(p) - }) - .collect::>>()?; - - let offer_pool: Asset; - let ask_pool: Asset; - - if offer_asset.info.equal(&pools[0].info) { - offer_pool = pools[0].clone(); - ask_pool = pools[1].clone(); - } else if offer_asset.info.equal(&pools[1].info) { - offer_pool = pools[1].clone(); - ask_pool = pools[0].clone(); - } else { - return Err(ContractError::AssetMismatch {}); - } - - let mut messages = vec![]; - - let params = self.params.load(deps.storage)?; - - if offer_asset.info.equal(&AssetInfo::Token { - contract_addr: params.astro_addr.clone(), - }) { - messages.push(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: params.astro_addr.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Send { - contract: params.staking_addr.to_string(), - amount: offer_asset.amount, - msg: to_json_binary(&StakingCw20HookMsg::Enter {})?, - })?, - funds: vec![], - })) - } else { - messages.push(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: params.xastro_addr.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Send { - contract: params.staking_addr.to_string(), - amount: offer_asset.amount, - msg: to_json_binary(&StakingCw20HookMsg::Leave {})?, - })?, - funds: vec![], - })) - } - - let receiver = to.unwrap_or_else(|| sender.clone()); - - messages.push(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: env.contract.address.to_string(), - funds: vec![], - msg: to_json_binary(&ExecuteMsg::AssertAndSend { - offer_asset: Asset { - amount: offer_asset.amount, - info: offer_pool.info, - }, - ask_asset_info: ask_pool.info, - sender, - receiver, - })?, - })); - - Ok(Response::new().add_messages(messages)) - } - - /// Simulation swap using Astroport Staking contract. - fn query_simulation( - &self, - deps: Deps, - _env: Env, - offer_asset: Asset, - ) -> StdResult { - let config: Config = CONFIG.load(deps.storage)?; - let pools = config.pair_info.asset_infos; - - if !offer_asset.info.equal(&pools[0]) && !offer_asset.info.equal(&pools[1]) { - return Err(StdError::generic_err( - "Given offer asset doesn't belong to pair", - )); - } - - let params = self.params.load(deps.storage)?; - - let total_deposit = - query_token_balance(&deps.querier, ¶ms.astro_addr, ¶ms.staking_addr)?; - let total_shares = query_supply(&deps.querier, ¶ms.xastro_addr)?; - - let return_amount = if offer_asset.info.equal(&AssetInfo::Token { - contract_addr: params.astro_addr, - }) { - if total_shares.is_zero() || total_deposit.is_zero() { - offer_asset.amount - } else { - offer_asset - .amount - .checked_mul(total_shares)? - .checked_div(total_deposit)? - } - } else { - offer_asset - .amount - .checked_mul(total_deposit)? - .checked_div(total_shares)? - }; - - Ok(SimulationResponse { - return_amount, - spread_amount: Uint128::zero(), - commission_amount: Uint128::zero(), - }) - } - - /// Reverse simulation swap using Astroport Staking contract. - fn query_reverse_simulation( - &self, - deps: Deps, - _env: Env, - ask_asset: Asset, - ) -> StdResult { - let config: Config = CONFIG.load(deps.storage)?; - let pools = config.pair_info.asset_infos; - - if !ask_asset.info.equal(&pools[0]) && !ask_asset.info.equal(&pools[1]) { - return Err(StdError::generic_err( - "Given ask asset doesn't belong to pairs", - )); - } - - let params = self.params.load(deps.storage)?; - - let total_deposit = - query_token_balance(&deps.querier, ¶ms.astro_addr, ¶ms.staking_addr)?; - let total_shares = query_supply(&deps.querier, ¶ms.xastro_addr)?; - - let offer_amount = if ask_asset.info.equal(&AssetInfo::Token { - contract_addr: params.astro_addr, - }) { - ask_asset - .amount - .checked_mul(total_shares)? - .checked_div(total_deposit)? - } else if total_shares.is_zero() || total_deposit.is_zero() { - ask_asset.amount - } else { - ask_asset - .amount - .checked_mul(total_deposit)? - .checked_div(total_shares)? - }; - - Ok(ReverseSimulationResponse { - offer_amount, - spread_amount: Uint128::zero(), - commission_amount: Uint128::zero(), - }) - } - - /// Not supported due to absence of native token in the pair. - fn execute_swap( - &self, - _deps: DepsMut, - _env: Env, - _info: MessageInfo, - _offer_asset: Asset, - _belief_price: Option, - _max_spread: Option, - _to: Option, - ) -> Result { - Err(ContractError::NotSupported {}) - } -} diff --git a/contracts/pair_astro_xastro/src/lib.rs b/contracts/pair_astro_xastro/src/lib.rs deleted file mode 100644 index 76808db19..000000000 --- a/contracts/pair_astro_xastro/src/lib.rs +++ /dev/null @@ -1,81 +0,0 @@ -use crate::contract::Contract; - -pub mod contract; -pub mod state; - -use crate::state::{InitParams, MigrateMsg}; -use astroport::pair::InstantiateMsg; -use astroport::pair_bonded::{ExecuteMsg, QueryMsg}; -use astroport_pair_bonded::base::PairBonded; -use astroport_pair_bonded::error::ContractError; -use cosmwasm_std::{ - entry_point, from_json, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult, -}; -use cw2::{get_contract_version, set_contract_version}; - -/// Creates a new contract with the specified parameters in [`InstantiateMsg`]. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - if let Some(ser_init_params) = &msg.init_params { - let init_params: InitParams = from_json(ser_init_params)?; - let contract = Contract::new("params"); - contract - .params - .save(deps.storage, &init_params.try_into_params(deps.api)?)?; - contract.instantiate(deps, env, info, msg) - } else { - Err(ContractError::InitParamsNotFound {}) - } -} - -/// Exposes all the execute functions available in the contract via a pair-bonded template. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - let contract = Contract::new("params"); - contract.execute(deps, env, info, msg) -} - -/// Exposes all the queries available in the contract via a pair-bonded template. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { - let contract = Contract::new("params"); - contract.query(deps, env, msg) -} - -/// Manages contract migration -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { - let contract_version = get_contract_version(deps.storage)?; - - match contract_version.contract.as_ref() { - Contract::CONTRACT_NAME => match contract_version.version.as_ref() { - "1.0.0" => {} - "1.0.1" => {} - "1.0.2" => {} - _ => return Err(ContractError::MigrationError {}), - }, - _ => return Err(ContractError::MigrationError {}), - } - - set_contract_version( - deps.storage, - Contract::CONTRACT_NAME, - Contract::CONTRACT_VERSION, - )?; - - Ok(Response::new() - .add_attribute("previous_contract_name", &contract_version.contract) - .add_attribute("previous_contract_version", &contract_version.version) - .add_attribute("new_contract_name", Contract::CONTRACT_NAME) - .add_attribute("new_contract_version", Contract::CONTRACT_VERSION)) -} diff --git a/contracts/pair_astro_xastro/src/state.rs b/contracts/pair_astro_xastro/src/state.rs deleted file mode 100644 index 0d0e13986..000000000 --- a/contracts/pair_astro_xastro/src/state.rs +++ /dev/null @@ -1,40 +0,0 @@ -use astroport_pair_bonded::error::ContractError; -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Addr, Api}; - -/// This structure stores a ASTRO-xASTRO pool's params. -#[cw_serde] -pub struct Params { - /// ASTRO token contract address. - pub astro_addr: Addr, - /// xASTRO token contract address. - pub xastro_addr: Addr, - /// Astroport Staking contract address. - pub staking_addr: Addr, -} - -/// This structure stores a ASTRO-xASTRO pool's init params. -#[cw_serde] -pub struct InitParams { - /// ASTRO token contract address. - pub astro_addr: String, - /// xASTRO token contract address. - pub xastro_addr: String, - /// Astroport Staking contract address. - pub staking_addr: String, -} - -impl InitParams { - pub fn try_into_params(self, api: &dyn Api) -> Result { - Ok(Params { - astro_addr: api.addr_validate(&self.astro_addr)?, - xastro_addr: api.addr_validate(&self.xastro_addr)?, - staking_addr: api.addr_validate(&self.staking_addr)?, - }) - } -} - -/// This structure describes a migration message. -/// We currently take no arguments for migrations. -#[cw_serde] -pub struct MigrateMsg {} diff --git a/contracts/pair_astro_xastro/tests/integration.rs b/contracts/pair_astro_xastro/tests/integration.rs deleted file mode 100644 index a80e0409d..000000000 --- a/contracts/pair_astro_xastro/tests/integration.rs +++ /dev/null @@ -1,719 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -use astroport::asset::{Asset, AssetInfo, PairInfo}; -use astroport::factory::{InstantiateMsg as FactoryInstantiateMsg, PairConfig, PairType}; -use astroport::pair::{ - ConfigResponse, Cw20HookMsg, InstantiateMsg as PairInstantiateMsg, ReverseSimulationResponse, - SimulationResponse, -}; -use astroport::staking::{ - ConfigResponse as StakingConfigResponse, InstantiateMsg as StakingInstantiateMsg, - QueryMsg as StakingQueryMsg, -}; - -use astroport::pair_bonded::{ExecuteMsg, QueryMsg}; -use astroport::token::InstantiateMsg as TokenInstantiateMsg; -use astroport_pair_astro_xastro::state::Params; -use cosmwasm_std::{to_json_binary, Addr, Coin, Uint128}; -use cw20::{Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; -use cw_multi_test::{App, ContractWrapper, Executor}; - -struct AstroportContracts { - factory_instance: Addr, - pair_instance: Addr, - astro_instance: Addr, - xastro_instance: Addr, -} - -fn mock_app(owner: Addr, coins: Vec) -> App { - App::new(|router, _, storage| router.bank.init_balance(storage, &owner, coins).unwrap()) -} - -fn store_pair_code(app: &mut App) -> u64 { - let pair_contract = Box::new(ContractWrapper::new_with_empty( - astroport_pair_astro_xastro::execute, - astroport_pair_astro_xastro::instantiate, - astroport_pair_astro_xastro::query, - )); - - app.store_code(pair_contract) -} - -fn store_staking_code(app: &mut App) -> u64 { - let staking_contract = Box::new( - ContractWrapper::new_with_empty( - astroport_staking::contract::execute, - astroport_staking::contract::instantiate, - astroport_staking::contract::query, - ) - .with_reply_empty(astroport_staking::contract::reply), - ); - - app.store_code(staking_contract) -} - -fn store_astro_code(app: &mut App) -> u64 { - let astro_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, - )); - - app.store_code(astro_contract) -} - -fn store_xastro_code(app: &mut App) -> u64 { - let xastro_contract = Box::new(ContractWrapper::new_with_empty( - astroport_xastro_token::contract::execute, - astroport_xastro_token::contract::instantiate, - astroport_xastro_token::contract::query, - )); - - app.store_code(xastro_contract) -} - -fn store_factory_code(app: &mut App) -> u64 { - let factory_contract = Box::new(ContractWrapper::new_with_empty( - astroport_factory::contract::execute, - astroport_factory::contract::instantiate, - astroport_factory::contract::query, - )); - - app.store_code(factory_contract) -} - -fn instantiate_factory_contract(app: &mut App, owner: Addr, pair_code_id: u64) -> Addr { - let code = store_factory_code(app); - - let msg = FactoryInstantiateMsg { - pair_configs: vec![PairConfig { - code_id: pair_code_id, - maker_fee_bps: 0, - total_fee_bps: 0, - pair_type: PairType::Custom("bonded".to_string()), - is_disabled: false, - is_generator_disabled: false, - permissioned: false, - }], - token_code_id: 0, - fee_address: None, - generator_address: None, - owner: owner.to_string(), - whitelist_code_id: 234u64, - coin_registry_address: "coin_registry".to_owned(), - }; - - app.instantiate_contract( - code, - owner, - &msg, - &[], - String::from("Astroport Factory"), - None, - ) - .unwrap() -} - -fn instantiate_token(app: &mut App, owner: Addr) -> Addr { - let token_code_id = store_astro_code(app); - - let msg = TokenInstantiateMsg { - name: "Astroport Token".to_string(), - symbol: "ASTRO".to_string(), - decimals: 6, - initial_balances: vec![], - mint: Some(MinterResponse { - minter: owner.to_string(), - cap: None, - }), - marketing: None, - }; - - app.instantiate_contract( - token_code_id, - owner.clone(), - &msg, - &[], - String::from("Astroport Token"), - None, - ) - .unwrap() -} - -fn instantiate_staking(app: &mut App, owner: Addr, token_instance: &Addr) -> (Addr, Addr) { - let xastro_code_id = store_xastro_code(app); - let staking_code_id = store_staking_code(app); - - let msg = StakingInstantiateMsg { - owner: owner.to_string(), - token_code_id: xastro_code_id, - deposit_token_addr: token_instance.to_string(), - marketing: None, - }; - - let staking_instance = app - .instantiate_contract( - staking_code_id, - owner.clone(), - &msg, - &[], - String::from("Astroport Staking"), - None, - ) - .unwrap(); - - let resp: StakingConfigResponse = app - .wrap() - .query_wasm_smart(&staking_instance, &StakingQueryMsg::Config {}) - .unwrap(); - - (staking_instance, resp.share_token_addr) -} - -fn instantiate_astroport(mut router: &mut App, owner: &Addr) -> AstroportContracts { - let pair_code_id = store_pair_code(&mut router); - - let factory_instance = instantiate_factory_contract(router, owner.clone(), pair_code_id); - let token_instance = instantiate_token(router, owner.clone()); - - let (staking_instance, xastro_instance) = - instantiate_staking(router, owner.clone(), &token_instance); - - let msg = PairInstantiateMsg { - asset_infos: vec![ - AssetInfo::Token { - contract_addr: token_instance.clone(), - }, - AssetInfo::Token { - contract_addr: xastro_instance.clone(), - }, - ], - token_code_id: 123, - factory_addr: factory_instance.to_string(), - init_params: Some( - to_json_binary(&Params { - astro_addr: token_instance.clone(), - xastro_addr: xastro_instance.clone(), - staking_addr: staking_instance.clone(), - }) - .unwrap(), - ), - }; - - let pair_instance = router - .instantiate_contract( - pair_code_id, - owner.clone(), - &msg, - &[], - String::from("ASTRO-xASTRO pair"), - None, - ) - .unwrap(); - - AstroportContracts { - pair_instance, - astro_instance: token_instance, - xastro_instance, - factory_instance, - } -} - -fn mint_tokens(router: &mut App, owner: Addr, token_addr: Addr, amount: Uint128, to: Addr) { - router - .execute_contract( - owner, - token_addr, - &Cw20ExecuteMsg::Mint { - recipient: to.to_string(), - amount, - }, - &[], - ) - .unwrap(); -} - -fn assert_user_balance(router: &mut App, token: &Addr, user: &Addr, expected_balance: u64) { - let balance: cw20::BalanceResponse = router - .wrap() - .query_wasm_smart( - token, - &Cw20QueryMsg::Balance { - address: user.to_string(), - }, - ) - .unwrap(); - assert_eq!(balance.balance, Uint128::from(expected_balance)); -} - -#[test] -fn test_pair_instantiation() { - let owner = Addr::unchecked("owner"); - - let mut router = mock_app(owner.clone(), vec![]); - - let pair_code_id = store_pair_code(&mut router); - - let factory_instance = instantiate_factory_contract(&mut router, owner.clone(), pair_code_id); - let token_instance = instantiate_token(&mut router, owner.clone()); - - let (staking_instance, xastro_instance) = - instantiate_staking(&mut router, owner.clone(), &token_instance); - - let msg = PairInstantiateMsg { - asset_infos: vec![ - AssetInfo::Token { - contract_addr: token_instance.clone(), - }, - AssetInfo::Token { - contract_addr: xastro_instance.clone(), - }, - ], - token_code_id: 123, - factory_addr: factory_instance.to_string(), - init_params: None, - }; - - let err = router - .instantiate_contract( - pair_code_id, - owner.clone(), - &msg, - &[], - String::from("ASTRO-xASTRO pair"), - None, - ) - .unwrap_err(); - - assert_eq!( - err.root_cause().to_string(), - "You need to provide init params".to_string() - ); - - let msg = PairInstantiateMsg { - asset_infos: vec![ - AssetInfo::Token { - contract_addr: token_instance.clone(), - }, - AssetInfo::Token { - contract_addr: xastro_instance.clone(), - }, - ], - token_code_id: 123, - factory_addr: factory_instance.to_string(), - init_params: Some( - to_json_binary(&Params { - astro_addr: token_instance.clone(), - xastro_addr: xastro_instance.clone(), - staking_addr: staking_instance.clone(), - }) - .unwrap(), - ), - }; - - let pair_instance = router - .instantiate_contract( - pair_code_id, - owner.clone(), - &msg, - &[], - String::from("ASTRO-xASTRO pair"), - None, - ) - .unwrap(); - - assert_eq!(factory_instance.to_string(), "contract0"); - assert_eq!(token_instance.to_string(), "contract1"); - assert_eq!(staking_instance.to_string(), "contract2"); - assert_eq!(xastro_instance.to_string(), "contract3"); - assert_eq!(pair_instance.to_string(), "contract4"); -} - -#[test] -fn test_pair_swap() { - let owner = Addr::unchecked("owner"); - - let user1 = Addr::unchecked("user1"); - let user2 = Addr::unchecked("user2"); - - let mut router = mock_app(owner.clone(), vec![]); - - let contracts = instantiate_astroport(&mut router, &owner); - - // Mint ASTRO - mint_tokens( - &mut router, - owner.clone(), - contracts.astro_instance.clone(), - Uint128::from(10_000u64), - user1.clone(), - ); - mint_tokens( - &mut router, - owner.clone(), - contracts.astro_instance.clone(), - Uint128::from(30_000u64), - user2.clone(), - ); - - // Test simulate and reverse simulate with empty staking (ASTRO->xASTRO) - let res: SimulationResponse = router - .wrap() - .query_wasm_smart( - &contracts.pair_instance, - &QueryMsg::Simulation { - offer_asset: Asset { - info: AssetInfo::Token { - contract_addr: contracts.astro_instance.clone(), - }, - amount: Uint128::from(10_000u64), - }, - }, - ) - .unwrap(); - assert_eq!( - res, - SimulationResponse { - return_amount: Uint128::from(10000u64), - spread_amount: Uint128::zero(), - commission_amount: Uint128::zero() - } - ); - let res: ReverseSimulationResponse = router - .wrap() - .query_wasm_smart( - &contracts.pair_instance, - &QueryMsg::ReverseSimulation { - ask_asset: Asset { - info: AssetInfo::Token { - contract_addr: contracts.xastro_instance.clone(), - }, - amount: Uint128::from(10_000u64), - }, - }, - ) - .unwrap(); - assert_eq!( - res, - ReverseSimulationResponse { - offer_amount: Uint128::from(10000u64), - spread_amount: Uint128::zero(), - commission_amount: Uint128::zero() - } - ); - - // Test Swap operation ASTRO->xASTRO - router - .execute_contract( - user1.clone(), - contracts.astro_instance.clone(), - &Cw20ExecuteMsg::Send { - contract: contracts.pair_instance.clone().to_string(), - amount: Uint128::from(10_000u64), - msg: to_json_binary(&Cw20HookMsg::Swap { - ask_asset_info: None, - belief_price: None, - max_spread: None, - to: None, - }) - .unwrap(), - }, - &[], - ) - .unwrap(); - assert_user_balance(&mut router, &contracts.xastro_instance, &user1, 9_000u64); - - router - .execute_contract( - user2.clone(), - contracts.astro_instance.clone(), - &Cw20ExecuteMsg::Send { - contract: contracts.pair_instance.clone().to_string(), - amount: Uint128::from(30_000u64), - msg: to_json_binary(&Cw20HookMsg::Swap { - ask_asset_info: None, - belief_price: None, - max_spread: None, - to: None, - }) - .unwrap(), - }, - &[], - ) - .unwrap(); - assert_user_balance(&mut router, &contracts.xastro_instance, &user2, 30_000u64); - - // Test simulate and reverse simulate (ASTRO->xASTRO) - let res: SimulationResponse = router - .wrap() - .query_wasm_smart( - &contracts.pair_instance, - &QueryMsg::Simulation { - offer_asset: Asset { - info: AssetInfo::Token { - contract_addr: contracts.astro_instance.clone(), - }, - amount: Uint128::from(10_000u64), - }, - }, - ) - .unwrap(); - assert_eq!( - res, - SimulationResponse { - return_amount: Uint128::from(10000u64), - spread_amount: Uint128::zero(), - commission_amount: Uint128::zero() - } - ); - let res: ReverseSimulationResponse = router - .wrap() - .query_wasm_smart( - &contracts.pair_instance, - &QueryMsg::ReverseSimulation { - ask_asset: Asset { - info: AssetInfo::Token { - contract_addr: contracts.xastro_instance.clone(), - }, - amount: Uint128::from(10_000u64), - }, - }, - ) - .unwrap(); - assert_eq!( - res, - ReverseSimulationResponse { - offer_amount: Uint128::from(10000u64), - spread_amount: Uint128::zero(), - commission_amount: Uint128::zero() - } - ); - - // Test simulate and reverse simulate (xASTRO->ASTRO) - let res: SimulationResponse = router - .wrap() - .query_wasm_smart( - &contracts.pair_instance, - &QueryMsg::Simulation { - offer_asset: Asset { - info: AssetInfo::Token { - contract_addr: contracts.xastro_instance.clone(), - }, - amount: Uint128::from(10_000u64), - }, - }, - ) - .unwrap(); - assert_eq!( - res, - SimulationResponse { - return_amount: Uint128::from(10000u64), - spread_amount: Uint128::zero(), - commission_amount: Uint128::zero() - } - ); - let res: ReverseSimulationResponse = router - .wrap() - .query_wasm_smart( - &contracts.pair_instance, - &QueryMsg::ReverseSimulation { - ask_asset: Asset { - info: AssetInfo::Token { - contract_addr: contracts.astro_instance.clone(), - }, - amount: Uint128::from(10_000u64), - }, - }, - ) - .unwrap(); - assert_eq!( - res, - ReverseSimulationResponse { - offer_amount: Uint128::from(10000u64), - spread_amount: Uint128::zero(), - commission_amount: Uint128::zero() - } - ); - - // Test Swap operation ASTRO->xASTRO - router - .execute_contract( - user1.clone(), - contracts.xastro_instance.clone(), - &Cw20ExecuteMsg::Send { - contract: contracts.pair_instance.clone().to_string(), - amount: Uint128::from(9_000u64), - msg: to_json_binary(&Cw20HookMsg::Swap { - ask_asset_info: None, - belief_price: None, - max_spread: None, - to: None, - }) - .unwrap(), - }, - &[], - ) - .unwrap(); - assert_user_balance(&mut router, &contracts.astro_instance, &user1, 9_000u64); - - router - .execute_contract( - user2.clone(), - contracts.xastro_instance.clone(), - &Cw20ExecuteMsg::Send { - contract: contracts.pair_instance.clone().to_string(), - amount: Uint128::from(30_000u64), - msg: to_json_binary(&Cw20HookMsg::Swap { - ask_asset_info: None, - belief_price: None, - max_spread: None, - to: None, - }) - .unwrap(), - }, - &[], - ) - .unwrap(); - assert_user_balance(&mut router, &contracts.astro_instance, &user2, 30_000u64); -} - -#[test] -fn test_unsupported_methods() { - let owner = Addr::unchecked("owner"); - - let mut router = mock_app(owner.clone(), vec![]); - - let contracts = instantiate_astroport(&mut router, &owner); - - // Test provide liquidity - let err = router - .execute_contract( - owner.clone(), - contracts.pair_instance.clone(), - &ExecuteMsg::ProvideLiquidity { - assets: [ - Asset { - info: AssetInfo::Token { - contract_addr: contracts.astro_instance.clone(), - }, - amount: Uint128::from(100u64), - }, - Asset { - info: AssetInfo::Token { - contract_addr: contracts.xastro_instance.clone(), - }, - amount: Uint128::from(100u64), - }, - ], - slippage_tolerance: None, - auto_stake: None, - receiver: None, - }, - &[], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is not supported for this pool." - ); - - // Test update config - let err = router - .execute_contract( - owner.clone(), - contracts.pair_instance.clone(), - &ExecuteMsg::UpdateConfig { - params: Default::default(), - }, - &[], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is not supported for this pool." - ); - - // Test update config - let err = router - .execute_contract( - owner.clone(), - contracts.pair_instance.clone(), - &ExecuteMsg::UpdateConfig { - params: Default::default(), - }, - &[], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is not supported for this pool." - ); - - // Test native-swap - let err = router - .execute_contract( - owner.clone(), - contracts.pair_instance.clone(), - &ExecuteMsg::Swap { - offer_asset: Asset { - info: AssetInfo::Token { - contract_addr: contracts.astro_instance.clone(), - }, - amount: Uint128::from(10u8), - }, - belief_price: None, - max_spread: None, - to: None, - }, - &[], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is not supported for this pool." - ); -} - -#[test] -fn test_queries() { - let owner = Addr::unchecked("owner"); - - let mut router = mock_app(owner.clone(), vec![]); - - let contracts = instantiate_astroport(&mut router, &owner); - - let res: ConfigResponse = router - .wrap() - .query_wasm_smart(&contracts.pair_instance, &QueryMsg::Config {}) - .unwrap(); - assert_eq!( - res, - ConfigResponse { - block_time_last: 0u64, - params: None, - owner, - factory_addr: contracts.factory_instance - } - ); - - let res: PairInfo = router - .wrap() - .query_wasm_smart(&contracts.pair_instance, &QueryMsg::Pair {}) - .unwrap(); - assert_eq!( - res, - PairInfo { - asset_infos: vec![ - AssetInfo::Token { - contract_addr: contracts.astro_instance.clone() - }, - AssetInfo::Token { - contract_addr: contracts.xastro_instance.clone() - } - ], - contract_addr: contracts.pair_instance.clone(), - liquidity_token: Addr::unchecked(""), - pair_type: PairType::Custom("Bonded".to_string()) - } - ); -} diff --git a/contracts/pair_concentrated/Cargo.toml b/contracts/pair_concentrated/Cargo.toml index fd4710bba..45ba58a68 100644 --- a/contracts/pair_concentrated/Cargo.toml +++ b/contracts/pair_concentrated/Cargo.toml @@ -26,23 +26,23 @@ backtraces = ["cosmwasm-std/backtraces"] library = [] [dependencies] -astroport = { path = "../../packages/astroport", version = "3" } +astroport = { path = "../../packages/astroport", version = "4" } astroport-factory = { path = "../factory", features = ["library"], version = "1" } astroport-circular-buffer = { path = "../../packages/circular_buffer", version = "0.2" } astroport-pcl-common = { path = "../../packages/astroport_pcl_common", version = "2" } -cw2 = "0.15" -cw20 = "0.15" -cosmwasm-std = "1.1" -cw-storage-plus = "0.15" -thiserror = "1.0" -cosmwasm-schema = "1.1" -itertools = "0.10" -cw-utils = "0.15" +cw2.workspace = true +cw20 = "1.1" +cosmwasm-std.workspace = true +cw-storage-plus.workspace = true +thiserror.workspace = true +cosmwasm-schema.workspace = true +itertools.workspace = true +cw-utils.workspace = true astroport-pair-concentrated_v1 = { package = "astroport-pair-concentrated", version = "1.2.13", features = ["library"] } [dev-dependencies] -astroport-token = { path = "../token" } -astroport-mocks = { path = "../../packages/astroport_mocks/" } +cw20-base = "1.1" +astroport-mocks = { path = "../../packages/astroport_mocks" } astroport-factory = { path = "../factory" } proptest = "1.0" anyhow = "1.0" diff --git a/contracts/pair_concentrated/tests/helper.rs b/contracts/pair_concentrated/tests/helper.rs index 74a5baae1..db6832471 100644 --- a/contracts/pair_concentrated/tests/helper.rs +++ b/contracts/pair_concentrated/tests/helper.rs @@ -110,9 +110,9 @@ pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { fn token_contract() -> Box> { Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )) } diff --git a/contracts/pair_concentrated/tests/pair_concentrated_integration.rs b/contracts/pair_concentrated/tests/pair_concentrated_integration.rs index 28330a412..1a94114e1 100644 --- a/contracts/pair_concentrated/tests/pair_concentrated_integration.rs +++ b/contracts/pair_concentrated/tests/pair_concentrated_integration.rs @@ -1,10 +1,8 @@ #![cfg(not(tarpaulin_include))] -use std::cell::RefCell; -use std::rc::Rc; use std::str::FromStr; -use cosmwasm_std::{Addr, Coin, Decimal, Decimal256, Uint128}; +use cosmwasm_std::{Addr, Decimal, Decimal256, Uint128}; use itertools::{max, Itertools}; use astroport::asset::{ @@ -16,8 +14,7 @@ use astroport::pair::{ExecuteMsg, PoolResponse, MAX_FEE_SHARE_BPS}; use astroport::pair_concentrated::{ ConcentratedPoolParams, ConcentratedPoolUpdateParams, PromoteParams, QueryMsg, UpdatePoolParams, }; -use astroport_mocks::cw_multi_test::{next_block, BasicApp, Executor}; -use astroport_mocks::{astroport_address, MockConcentratedPairBuilder, MockGeneratorBuilder}; +use astroport_mocks::cw_multi_test::{next_block, Executor}; use astroport_pair_concentrated::error::ContractError; use astroport_pcl_common::consts::{AMP_MAX, AMP_MIN, MA_HALF_TIME_LIMITS}; use astroport_pcl_common::error::PclError; @@ -1329,52 +1326,6 @@ fn provides_and_swaps_and_withdraw() { assert_eq!(res.total_share.u128(), 1000u128); } -#[test] -fn provide_liquidity_with_autostaking_to_generator() { - let astroport = astroport_address(); - - let app = Rc::new(RefCell::new(BasicApp::new(|router, _, storage| { - router - .bank - .init_balance( - storage, - &astroport, - vec![Coin { - denom: "ustake".to_owned(), - amount: Uint128::new(1_000_000_000000), - }], - ) - .unwrap(); - }))); - - let generator = MockGeneratorBuilder::new(&app).instantiate(); - - let factory = generator.factory(); - - let astro_token_info = generator.astro_token_info(); - let ustake = native_asset_info("ustake".to_owned()); - - let pair = MockConcentratedPairBuilder::new(&app) - .with_factory(&factory) - .with_asset(&astro_token_info) - .with_asset(&ustake) - .instantiate(None); - - pair.mint_allow_provide_and_stake( - &astroport, - &[ - astro_token_info.with_balance(1_000_000000u128), - ustake.with_balance(1_000_000000u128), - ], - ); - - assert_eq!(pair.lp_token().balance(&pair.address), Uint128::new(1000)); - assert_eq!( - generator.query_deposit(&pair.lp_token(), &astroport), - Uint128::new(999_999000), - ); -} - #[test] fn provide_withdraw_provide() { let owner = Addr::unchecked("owner"); diff --git a/contracts/pair_concentrated_inj/Cargo.toml b/contracts/pair_concentrated_inj/Cargo.toml index 2832fa854..a47640d9c 100644 --- a/contracts/pair_concentrated_inj/Cargo.toml +++ b/contracts/pair_concentrated_inj/Cargo.toml @@ -42,7 +42,7 @@ tiny-keccak = { version = "2.0.2", features = ["keccak"] } hex = "0.4.3" [dev-dependencies] -astroport-token = { path = "../token" } +cw20-base = "1.1 astroport-mocks = { path = "../../packages/astroport_mocks" } astroport-factory = { path = "../factory" } proptest = "1.0" diff --git a/contracts/pair_stable/Cargo.toml b/contracts/pair_stable/Cargo.toml index c51ea7bb4..a329a9b32 100644 --- a/contracts/pair_stable/Cargo.toml +++ b/contracts/pair_stable/Cargo.toml @@ -26,22 +26,22 @@ backtraces = ["cosmwasm-std/backtraces"] library = [] [dependencies] -astroport = { path = "../../packages/astroport", version = "3.8" } -cw2 = { version = "0.15" } -cw20 = { version = "0.15" } -cosmwasm-std = { version = "1.1" } -cw-storage-plus = "0.15" -thiserror = { version = "1.0" } -itertools = "0.10" -cosmwasm-schema = "1.1" -cw-utils = "1.0.1" +astroport = { path = "../../packages/astroport", version = "4" } +cw2.workspace = true +cw20 = "1.1" +cosmwasm-std.workspace = true +cw-storage-plus.workspace = true +thiserror.workspace = true +itertools.workspace = true +cosmwasm-schema.workspace = true +cw-utils.workspace = true astroport-circular-buffer = { path = "../../packages/circular_buffer", version = "0.2" } [dev-dependencies] anyhow = "1.0" proptest = "1.0.0" sim = { git = "https://github.com/astroport-fi/astroport-sims", branch = "main", package = "sim" } -astroport-token = { path = "../token" } +cw20-base = "1.1" astroport-factory = { path = "../factory" } derivative = "2.2" prost = "0.11.5" diff --git a/contracts/pair_stable/src/utils.rs b/contracts/pair_stable/src/utils.rs index 447e9da83..55a4a26ec 100644 --- a/contracts/pair_stable/src/utils.rs +++ b/contracts/pair_stable/src/utils.rs @@ -207,7 +207,7 @@ pub(crate) fn mint_liquidity_token_message( &Cw20ExecuteMsg::Send { contract: generator.to_string(), amount, - msg: to_json_binary(&astroport::generator::Cw20HookMsg::DepositFor( + msg: to_json_binary(&astroport::incentives::Cw20Msg::DepositFor( recipient.to_string(), ))?, }, diff --git a/contracts/pair_stable/tests/helper.rs b/contracts/pair_stable/tests/helper.rs index eb6b1eb5b..440c1db8e 100644 --- a/contracts/pair_stable/tests/helper.rs +++ b/contracts/pair_stable/tests/helper.rs @@ -74,9 +74,9 @@ pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { fn token_contract() -> Box> { Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )) } diff --git a/contracts/pair_stable/tests/integration.rs b/contracts/pair_stable/tests/integration.rs index 05a55d8da..9be489b2f 100644 --- a/contracts/pair_stable/tests/integration.rs +++ b/contracts/pair_stable/tests/integration.rs @@ -1,30 +1,27 @@ #![cfg(not(tarpaulin_include))] -use astroport::asset::{native_asset_info, Asset, AssetInfo, AssetInfoExt, PairInfo}; +use std::str::FromStr; + +use cosmwasm_std::{ + attr, from_json, to_json_binary, Addr, Coin, Decimal, QueryRequest, Uint128, WasmQuery, +}; +use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; + +use astroport::asset::{Asset, AssetInfo, PairInfo}; use astroport::factory::{ ExecuteMsg as FactoryExecuteMsg, InstantiateMsg as FactoryInstantiateMsg, PairConfig, PairType, QueryMsg as FactoryQueryMsg, }; +use astroport::observation::OracleObservation; use astroport::pair::{ ConfigResponse, CumulativePricesResponse, Cw20HookMsg, ExecuteMsg, InstantiateMsg, PoolResponse, QueryMsg, StablePoolConfig, StablePoolParams, StablePoolUpdateParams, MAX_FEE_SHARE_BPS, TWAP_PRECISION, }; -use astroport_pair_stable::error::ContractError; -use std::cell::RefCell; -use std::rc::Rc; -use std::str::FromStr; - -use astroport::observation::OracleObservation; use astroport::token::InstantiateMsg as TokenInstantiateMsg; -use astroport_mocks::cw_multi_test::{App, BasicApp, ContractWrapper, Executor}; -use astroport_mocks::pair_stable::MockStablePairBuilder; -use astroport_mocks::{astroport_address, MockGeneratorBuilder}; +use astroport_mocks::cw_multi_test::{App, ContractWrapper, Executor}; +use astroport_pair_stable::error::ContractError; use astroport_pair_stable::math::{MAX_AMP, MAX_AMP_CHANGE, MIN_AMP_CHANGING_TIME}; -use cosmwasm_std::{ - attr, from_json, to_json_binary, Addr, Coin, Decimal, QueryRequest, Uint128, WasmQuery, -}; -use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; const OWNER: &str = "owner"; @@ -37,9 +34,9 @@ fn mock_app(owner: Addr, coins: Vec) -> App { fn store_token_code(app: &mut App) -> u64 { let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )); app.store_code(astro_token_contract) @@ -1620,52 +1617,6 @@ fn check_observe_queries() { ); } -#[test] -fn provide_liquidity_with_autostaking_to_generator() { - let astroport = astroport_address(); - - let app = Rc::new(RefCell::new(BasicApp::new(|router, _, storage| { - router - .bank - .init_balance( - storage, - &astroport, - vec![Coin { - denom: "ustake".to_owned(), - amount: Uint128::new(1_000_000_000000), - }], - ) - .unwrap(); - }))); - - let generator = MockGeneratorBuilder::new(&app).instantiate(); - - let factory = generator.factory(); - - let astro_token_info = generator.astro_token_info(); - let ustake = native_asset_info("ustake".to_owned()); - - let pair = MockStablePairBuilder::new(&app) - .with_factory(&factory) - .with_asset(&astro_token_info) - .with_asset(&ustake) - .instantiate(None); - - pair.mint_allow_provide_and_stake( - &astroport, - &[ - astro_token_info.with_balance(1_000_000000u128), - ustake.with_balance(1_000_000000u128), - ], - ); - - assert_eq!(pair.lp_token().balance(&pair.address), Uint128::new(1000)); - assert_eq!( - generator.query_deposit(&pair.lp_token(), &astroport), - Uint128::new(1999_999000), - ); -} - #[test] fn test_imbalance_withdraw_is_disabled() { let owner = Addr::unchecked("owner"); diff --git a/contracts/pair_transmuter/Cargo.toml b/contracts/pair_transmuter/Cargo.toml index 9e7de71d7..033cf4631 100644 --- a/contracts/pair_transmuter/Cargo.toml +++ b/contracts/pair_transmuter/Cargo.toml @@ -15,20 +15,20 @@ crate-type = ["cdylib", "rlib"] library = [] [dependencies] -astroport = { path = "../../packages/astroport", version = "3" } -cosmwasm-std = "1.5.0" +astroport = "3" +cosmwasm-std.workspace = true cw-storage-plus = "1.2.0" cosmwasm-schema = "1.5.0" -thiserror = "1" -cw2 = "1" +thiserror.workspace = true +cw2.workspace = true cw20 = "0.15" -cw-utils = "1" -itertools = "0.12.0" +cw-utils.workspace = true +itertools.workspace = true [dev-dependencies] anyhow = "1" derivative = "2" -astroport-token = { path = "../token" } +cw20-base = "1.1" cw-multi-test = "1.0.0" astroport-factory = { path = "../factory" } astroport-native-coin-registry = { path = "../periphery/native_coin_registry", version = "1" } diff --git a/contracts/pair_transmuter/tests/helper.rs b/contracts/pair_transmuter/tests/helper.rs index ffb3b2b8d..db3a8760c 100644 --- a/contracts/pair_transmuter/tests/helper.rs +++ b/contracts/pair_transmuter/tests/helper.rs @@ -87,9 +87,9 @@ pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { fn token_contract() -> Box> { Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )) } diff --git a/contracts/pair_xyk_sale_tax/Cargo.toml b/contracts/pair_xyk_sale_tax/Cargo.toml index b1bd627ed..9c6843011 100644 --- a/contracts/pair_xyk_sale_tax/Cargo.toml +++ b/contracts/pair_xyk_sale_tax/Cargo.toml @@ -27,19 +27,20 @@ library = [] [dependencies] integer-sqrt = "0.1" -astroport = { path = "../../packages/astroport", version = "3.9" } -cw2 = "0.15" -cw20 = "0.15" -cosmwasm-std = "1.1" -cw-storage-plus = "0.15" -thiserror = { version = "1.0" } -protobuf = { version = "2", features = ["with-bytes"] } -cosmwasm-schema = "1.1" -cw-utils = "1.0.1" +astroport = { path = "../../packages/astroport", version = "4" } +cw2.workspace = true +cw20 = "1.1" +cosmwasm-std.workspace = true +cw-storage-plus.workspace = true +thiserror.workspace = true +cosmwasm-schema.workspace = true +cw-utils.workspace = true astroport-pair = { path = "../pair", features = ["library"], version = "1.5" } +# TODO: remove it +protobuf = { version = "2", features = ["with-bytes"] } [dev-dependencies] -astroport-token = { path = "../token" } +cw20-base = "1.1" astroport-factory = { path = "../factory" } proptest = "1.0" prost = "0.11.5" diff --git a/contracts/pair_xyk_sale_tax/src/contract.rs b/contracts/pair_xyk_sale_tax/src/contract.rs index 2681957a5..e8283c1cb 100644 --- a/contracts/pair_xyk_sale_tax/src/contract.rs +++ b/contracts/pair_xyk_sale_tax/src/contract.rs @@ -18,7 +18,7 @@ use astroport::asset::{ PairInfo, MINIMUM_LIQUIDITY_AMOUNT, }; use astroport::factory::PairType; -use astroport::generator::Cw20HookMsg as GeneratorHookMsg; +use astroport::incentives::Cw20Msg as GeneratorHookMsg; use astroport::pair::{ConfigResponse, DEFAULT_SLIPPAGE, MAX_ALLOWED_SLIPPAGE}; use astroport::pair::{ CumulativePricesResponse, Cw20HookMsg, ExecuteMsg, InstantiateMsg, PoolResponse, QueryMsg, diff --git a/contracts/pair_xyk_sale_tax/tests/integration.rs b/contracts/pair_xyk_sale_tax/tests/integration.rs index 5243bdba4..eb307b5a6 100644 --- a/contracts/pair_xyk_sale_tax/tests/integration.rs +++ b/contracts/pair_xyk_sale_tax/tests/integration.rs @@ -1,9 +1,10 @@ #![cfg(not(tarpaulin_include))] -use std::cell::RefCell; -use std::rc::Rc; +use cosmwasm_std::{attr, coin, to_json_binary, Addr, Coin, Decimal, Uint128}; +use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; +use test_case::test_case; -use astroport::asset::{native_asset_info, Asset, AssetInfo, AssetInfoExt, PairInfo}; +use astroport::asset::{native_asset_info, Asset, AssetInfo, PairInfo}; use astroport::factory::{ ExecuteMsg as FactoryExecuteMsg, InstantiateMsg as FactoryInstantiateMsg, PairConfig, PairType, QueryMsg as FactoryQueryMsg, @@ -16,12 +17,8 @@ use astroport::pair_xyk_sale_tax::{ MigrateMsg, SaleTaxConfigUpdates, SaleTaxInitParams, TaxConfigUnchecked, TaxConfigsUnchecked, }; use astroport::token::InstantiateMsg as TokenInstantiateMsg; -use astroport_mocks::cw_multi_test::{App, BasicApp, ContractWrapper, Executor}; -use astroport_mocks::{astroport_address, MockGeneratorBuilder, MockXykPairBuilder}; +use astroport_mocks::cw_multi_test::{App, ContractWrapper, Executor}; use astroport_pair_xyk_sale_tax::error::ContractError; -use cosmwasm_std::{attr, coin, to_json_binary, Addr, Coin, Decimal, Uint128}; -use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse}; -use test_case::test_case; const OWNER: &str = "owner"; @@ -34,9 +31,9 @@ fn mock_app(owner: Addr, coins: Vec) -> App { fn store_token_code(app: &mut App) -> u64 { let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )); app.store_code(astro_token_contract) @@ -1750,52 +1747,6 @@ fn update_tax_configs() { ); } -#[test] -fn provide_liquidity_with_autostaking_to_generator() { - let astroport = astroport_address(); - - let app = Rc::new(RefCell::new(BasicApp::new(|router, _, storage| { - router - .bank - .init_balance( - storage, - &astroport, - vec![Coin { - denom: "ustake".to_owned(), - amount: Uint128::new(1_000_000_000000), - }], - ) - .unwrap(); - }))); - - let generator = MockGeneratorBuilder::new(&app).instantiate(); - - let factory = generator.factory(); - - let astro_token_info = generator.astro_token_info(); - let ustake = native_asset_info("ustake".to_owned()); - - let pair = MockXykPairBuilder::new(&app) - .with_factory(&factory) - .with_asset(&astro_token_info) - .with_asset(&ustake) - .instantiate(); - - pair.mint_allow_provide_and_stake( - &astroport, - &[ - astro_token_info.with_balance(1_000_000000u128), - ustake.with_balance(1_000_000000u128), - ], - ); - - assert_eq!(pair.lp_token().balance(&pair.address), Uint128::new(1000)); - assert_eq!( - generator.query_deposit(&pair.lp_token(), &astroport), - Uint128::new(999_999000), - ); -} - #[test] fn test_imbalanced_withdraw_is_disabled() { let owner = Addr::unchecked("owner"); diff --git a/contracts/periphery/astro_converter/Cargo.toml b/contracts/periphery/astro_converter/Cargo.toml index 652137dae..3bdf25d52 100644 --- a/contracts/periphery/astro_converter/Cargo.toml +++ b/contracts/periphery/astro_converter/Cargo.toml @@ -10,11 +10,11 @@ crate-type = ["cdylib", "rlib"] library = [] [dependencies] -astroport = { path = "../../../packages/astroport", version = "3" } -cosmwasm-std = { version = "1.5", features = ["stargate"]} -cosmwasm-schema = "1.5" -cw-storage-plus = "1.2" -cw2 = "1" -cw20 = "0.15" -cw-utils = "1" -thiserror = "1" +astroport = { path = "../../../packages/astroport", version = "4" } +cosmwasm-std.workspace = true +cosmwasm-schema.workspace = true +cw-storage-plus.workspace = true +cw2.workspace = true +cw20 = "1.1" +cw-utils.workspace = true +thiserror.workspace = true diff --git a/contracts/periphery/astro_converter_neutron/Cargo.toml b/contracts/periphery/astro_converter_neutron/Cargo.toml index 85db43025..cd713e8e4 100644 --- a/contracts/periphery/astro_converter_neutron/Cargo.toml +++ b/contracts/periphery/astro_converter_neutron/Cargo.toml @@ -11,7 +11,7 @@ library = [] [dependencies] neutron-sdk = "0.8.0" -astroport = { path = "../../../packages/astroport", version = "3" } +astroport = { path = "../../../packages/astroport", version = "4" } astro-token-converter = { path = "../astro_converter", version = "1.0", features = ["library"] } cosmwasm-std = "1.5" cw2 = "1.1" diff --git a/contracts/periphery/fee_granter/Cargo.toml b/contracts/periphery/fee_granter/Cargo.toml index 13e30010e..ddd1ec03d 100644 --- a/contracts/periphery/fee_granter/Cargo.toml +++ b/contracts/periphery/fee_granter/Cargo.toml @@ -14,14 +14,14 @@ crate-type = ["cdylib", "rlib"] library = [] [dependencies] -astroport = { path = "../../../packages/astroport", version = "3" } +astroport = "3" cosmos-sdk-proto = { version = "0.19.0", default-features = false } -cosmwasm-std = { version = "1.1", features = ["stargate"] } +cosmwasm-std = { workspace = true, features = ["stargate"] } cw-storage-plus = "0.15" -cw-utils = "1.0" -cosmwasm-schema = "1.2.5" -thiserror = "1" -cw2 = "1.0.1" +cw-utils.workspace = true +cosmwasm-schema.workspace = true +thiserror.workspace = true +cw2.workspace = true [dev-dependencies] cw-multi-test = "1.0.0" diff --git a/contracts/periphery/liquidity_manager/Cargo.toml b/contracts/periphery/liquidity_manager/Cargo.toml index b8b776953..a0b973942 100644 --- a/contracts/periphery/liquidity_manager/Cargo.toml +++ b/contracts/periphery/liquidity_manager/Cargo.toml @@ -14,24 +14,22 @@ library = [] crate-type = ["cdylib", "rlib"] [dependencies] -cosmwasm-std = "1.1" -cosmwasm-schema = "1.1" -cw-storage-plus = "1.0" -cw20 = "0.15" -thiserror = "1.0" -astroport = { path = "../../../packages/astroport", version = "3" } -cw20-base = { version = "0.15", features = ["library"] } +cosmwasm-std.workspace = true +cosmwasm-schema.workspace = true +cw-storage-plus.workspace = true +cw20 = "1.1" +thiserror.workspace = true +astroport = { path = "../../../packages/astroport", version = "4" } +cw20-base = { version = "1.1", features = ["library"] } astroport-pair = { path = "../../pair", features = ["library"], version = "1.5" } astroport-pair-stable = { path = "../../pair_stable", features = ["library"], version = "3" } astroport-factory = { path = "../../factory", features = ["library"], version = "1" } [dev-dependencies] cw-multi-test = "1.0.0" -astroport-token = { path = "../../token" } astroport-native-coin-registry = { path = "../../periphery/native_coin_registry" } -astroport-generator = { path = "../../tokenomics/generator" } -cw1-whitelist = { version = "1.1.2", features = ["library"] } +astroport-incentives = { path = "../../tokenomics/incentives", version = "1" } serde_json = "1.0.96" anyhow = "1" derivative = "2.2" -itertools = "0.10" +itertools.workspace = true diff --git a/contracts/periphery/liquidity_manager/src/utils.rs b/contracts/periphery/liquidity_manager/src/utils.rs index d5e0fed19..737203814 100644 --- a/contracts/periphery/liquidity_manager/src/utils.rs +++ b/contracts/periphery/liquidity_manager/src/utils.rs @@ -5,7 +5,7 @@ use cosmwasm_std::{ }; use astroport::asset::{Asset, Decimal256Ext, DecimalAsset, PairInfo, MINIMUM_LIQUIDITY_AMOUNT}; -use astroport::generator::QueryMsg as GeneratorQueryMsg; +use astroport::incentives::QueryMsg as GeneratorQueryMsg; use astroport::liquidity_manager::CompatPairStableConfig; use astroport::querier::{query_supply, query_token_balance}; use astroport::U256; diff --git a/contracts/periphery/liquidity_manager/tests/helper.rs b/contracts/periphery/liquidity_manager/tests/helper.rs index 39a023e85..1d4442542 100644 --- a/contracts/periphery/liquidity_manager/tests/helper.rs +++ b/contracts/periphery/liquidity_manager/tests/helper.rs @@ -25,7 +25,7 @@ use astroport::pair::{ ReverseSimulationResponse, SimulationResponse, StablePoolParams, XYKPoolParams, }; use astroport::pair_concentrated::{ConcentratedPoolParams, QueryMsg as PairQueryMsg}; -use astroport::{factory, generator}; +use astroport::{factory, incentives}; use astroport_liquidity_manager::contract::{execute, instantiate, reply}; use astroport_liquidity_manager::query::query; @@ -93,9 +93,9 @@ pub fn init_native_coins(test_coins: &[TestCoin]) -> Vec { fn token_contract() -> Box> { Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )) } @@ -140,22 +140,14 @@ fn factory_contract() -> Box> { ) } -fn whitelist_contract() -> Box> { - Box::new(ContractWrapper::new_with_empty( - cw1_whitelist::contract::execute, - cw1_whitelist::contract::instantiate, - cw1_whitelist::contract::query, - )) -} - fn generator_contract() -> Box> { Box::new( ContractWrapper::new_with_empty( - astroport_generator::contract::execute, - astroport_generator::contract::instantiate, - astroport_generator::contract::query, + astroport_incentives::execute::execute, + astroport_incentives::instantiate::instantiate, + astroport_incentives::query::query, ) - .with_reply_empty(astroport_generator::contract::reply), + .with_reply_empty(astroport_incentives::reply::reply), ) } @@ -277,24 +269,18 @@ impl Helper { None, )?; - let whitelist_code_id = app.store_code(whitelist_contract()); let generator_code_id = app.store_code(generator_contract()); let generator = app .instantiate_contract( generator_code_id, owner.clone(), - &generator::InstantiateMsg { + &incentives::InstantiateMsg { owner: owner.to_string(), factory: factory.to_string(), - generator_controller: None, - voting_escrow_delegation: None, - voting_escrow: None, guardian: None, astro_token: native_asset_info("astro".to_string()), - tokens_per_block: Default::default(), - start_block: Default::default(), vesting_contract: "vesting".to_string(), - whitelist_code_id, + incentivization_fee_info: None, }, &[], "Generator", @@ -659,7 +645,7 @@ impl Helper { pub fn query_staked_lp(&self, user: &Addr) -> StdResult { self.app.wrap().query_wasm_smart( &self.generator, - &generator::QueryMsg::Deposit { + &incentives::QueryMsg::Deposit { lp_token: self.lp_token.to_string(), user: user.to_string(), }, diff --git a/contracts/periphery/native-coin-wrapper/.cargo/config b/contracts/periphery/native-coin-wrapper/.cargo/config deleted file mode 100644 index 8b9b4bda3..000000000 --- a/contracts/periphery/native-coin-wrapper/.cargo/config +++ /dev/null @@ -1,5 +0,0 @@ -[alias] -wasm = "build --release --lib --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --bin native_coin_wrapper_schema" diff --git a/contracts/periphery/native-coin-wrapper/.editorconfig b/contracts/periphery/native-coin-wrapper/.editorconfig deleted file mode 100644 index 3d36f20b1..000000000 --- a/contracts/periphery/native-coin-wrapper/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.rs] -indent_size = 4 diff --git a/contracts/periphery/native-coin-wrapper/Cargo.toml b/contracts/periphery/native-coin-wrapper/Cargo.toml deleted file mode 100644 index b2a357b7c..000000000 --- a/contracts/periphery/native-coin-wrapper/Cargo.toml +++ /dev/null @@ -1,38 +0,0 @@ -[package] -name = "astroport-native-coin-wrapper" -version = "0.1.0" -authors = ["Astroport"] -repository = "https://github.com/astroport-fi/astroport" -homepage = "https://astroport.fi" -edition = "2021" - -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] -# use library feature to disable all instantiate/execute/query exports -library = [] - -[dependencies] -cosmwasm-schema = "1.1" -cosmwasm-std = "1.1" -cw-storage-plus = "0.15" -cw2 = "0.15" -cw20 = "0.15" -cw-utils = "0.15" -thiserror = { version = "1.0" } -astroport = { path = "../../../packages/astroport", version = "3" } - -[dev-dependencies] -cw-multi-test = "1.0.0" -astroport-token = { path = "../../token" } diff --git a/contracts/periphery/native-coin-wrapper/README.md b/contracts/periphery/native-coin-wrapper/README.md deleted file mode 100644 index c1db916f2..000000000 --- a/contracts/periphery/native-coin-wrapper/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# Astroport native coins wrapper contract - -This contract allows you to wrap native coins into Cw20 tokens. - ---- - -## InstantiateMsg - -Initializes the contract with the token code identifier that will be used to create a Cw20 token for wrapping native coins. - -```json -{ - "denom": "denom", - "token_code_id": 123, - "token_decimals": 6 -} -``` - -## ExecuteMsg - -### `wrap` - -Wraps the amount of specified native coin and issues cw20 tokens instead. -You should send the amount of the native coin through the `funds` array. - -```json -{ - "wrap": {} -} -``` - -### `receive` - -CW20 receive msg. - -```json -{ - "receive": { - "sender": "terra...", - "amount": "123", - "msg": "" - } -} -``` - -#### `Unwrap` - -Receives Cw20 wrapped tokens and returns unwrapped native coins. - -Execute this message by calling the CW20 native wrapped token contract and use a message like this: -```json -{ - "send": { - "contract": , - "amount": "999", - "msg": "base64-encodedStringOfWithdrawMsg" - } -} -``` - -In `send.msg`, you may encode this JSON string into base64 encoding: -```json -{ - "unwrap": {} -} -``` - -## QueryMsg - -### `config` - -Returns the general config of the contract. - -```json -{ - "config": {} -} -``` diff --git a/contracts/periphery/native-coin-wrapper/src/bin/native_coin_wrapper_schema.rs b/contracts/periphery/native-coin-wrapper/src/bin/native_coin_wrapper_schema.rs deleted file mode 100644 index ee1f20de6..000000000 --- a/contracts/periphery/native-coin-wrapper/src/bin/native_coin_wrapper_schema.rs +++ /dev/null @@ -1,11 +0,0 @@ -use cosmwasm_schema::write_api; - -use astroport::native_coin_wrapper::{ExecuteMsg, InstantiateMsg, QueryMsg}; - -fn main() { - write_api! { - instantiate: InstantiateMsg, - execute: ExecuteMsg, - query: QueryMsg, - } -} diff --git a/contracts/periphery/native-coin-wrapper/src/contract.rs b/contracts/periphery/native-coin-wrapper/src/contract.rs deleted file mode 100644 index 3a2e3c4d0..000000000 --- a/contracts/periphery/native-coin-wrapper/src/contract.rs +++ /dev/null @@ -1,186 +0,0 @@ -#[cfg(not(feature = "library"))] -use cosmwasm_std::entry_point; -use cosmwasm_std::{ - attr, from_json, to_json_binary, wasm_execute, Addr, BankMsg, Binary, Coin, CosmosMsg, Deps, - DepsMut, Env, MessageInfo, Reply, ReplyOn, Response, StdError, StdResult, SubMsg, - SubMsgResponse, SubMsgResult, WasmMsg, -}; -use cw2::set_contract_version; -use cw20::{Cw20ExecuteMsg, Cw20ReceiveMsg, MinterResponse}; -use cw_utils::{must_pay, parse_instantiate_response_data}; - -use crate::error::ContractError; -use crate::state::CONFIG; -use astroport::native_coin_wrapper::{Config, Cw20HookMsg, ExecuteMsg, InstantiateMsg, QueryMsg}; -use astroport::token::InstantiateMsg as TokenInstantiateMsg; - -// version info for migration info -const CONTRACT_NAME: &str = "astroport-native-coin-wrapper"; -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); - -/// A `reply` call code ID used for sub-messages. -const INSTANTIATE_TOKEN_REPLY_ID: u64 = 1; - -const TOKEN_SYMBOL_MAX_LENGTH: usize = 8; -const TOKEN_NAME_MAX_LENGTH: usize = 37; - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - CONFIG.save( - deps.storage, - &Config { - denom: msg.denom.clone(), - token: Addr::unchecked(""), - }, - )?; - - let token_symbol: String = msg.denom.chars().take(TOKEN_SYMBOL_MAX_LENGTH).collect(); - let token_name: String = msg.denom.chars().take(TOKEN_NAME_MAX_LENGTH).collect(); - - Ok(Response::new().add_submessage(SubMsg { - msg: WasmMsg::Instantiate { - admin: Some(info.sender.to_string()), - code_id: msg.token_code_id, - msg: to_json_binary(&TokenInstantiateMsg { - name: format!("CW20-wrapped {}", token_name), - symbol: token_symbol.to_uppercase(), - decimals: msg.token_decimals, - initial_balances: vec![], - mint: Some(MinterResponse { - minter: env.contract.address.to_string(), - cap: None, - }), - marketing: None, - })?, - funds: vec![], - label: format!("Astroport {}", token_name), - } - .into(), - id: INSTANTIATE_TOKEN_REPLY_ID, - gas_limit: None, - reply_on: ReplyOn::Success, - })) -} - -/// The entry point to the contract for processing replies from submessages. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result { - match msg { - Reply { - id: INSTANTIATE_TOKEN_REPLY_ID, - result: - SubMsgResult::Ok(SubMsgResponse { - data: Some(data), .. - }), - } => { - let mut config = CONFIG.load(deps.storage)?; - - if config.token != Addr::unchecked("") { - return Err(ContractError::Unauthorized {}); - } - - let init_response = parse_instantiate_response_data(data.as_slice()) - .map_err(|e| StdError::generic_err(format!("{e}")))?; - - config.token = deps.api.addr_validate(&init_response.contract_address)?; - - CONFIG.save(deps.storage, &config)?; - - Ok(Response::new().add_attribute("token_addr", config.token.to_string())) - } - _ => Err(ContractError::FailedToParseReply {}), - } -} - -/// Exposes execute functions available in the contract. -/// -/// ## Variants -/// * **ExecuteMsg::Wrap {}** Wraps the specified native coin and issues a cw20 token instead. -/// -/// * **ExecuteMsg::Receive(msg)** Receives a message of type [`Cw20ReceiveMsg`] and processes -/// it depending on the received template. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - match msg { - ExecuteMsg::Wrap {} => wrap(deps, info), - ExecuteMsg::Receive(msg) => receive_cw20(deps, env, info, msg), - } -} - -/// Wraps the specified native coin and issues a cw20 token instead. -pub(crate) fn wrap(deps: DepsMut, info: MessageInfo) -> Result { - let config: Config = CONFIG.load(deps.storage)?; - let amount = must_pay(&info, config.denom.as_str())?; - - let message = wasm_execute( - config.token.clone(), - &Cw20ExecuteMsg::Mint { - recipient: info.sender.to_string(), - amount, - }, - vec![], - )?; - - Ok(Response::new().add_message(message).add_attributes(vec![ - attr("action", "wrap"), - attr("denom", config.denom), - attr("token", config.token.to_string()), - attr("amount", amount.to_string()), - ])) -} - -/// Receives a message of type [`Cw20ReceiveMsg`] and processes it depending on the received template. -/// -/// * **cw20_msg** CW20 message to process. -pub(crate) fn receive_cw20( - deps: DepsMut, - _env: Env, - info: MessageInfo, - cw20_msg: Cw20ReceiveMsg, -) -> Result { - let config: Config = CONFIG.load(deps.storage)?; - - match from_json(&cw20_msg.msg)? { - Cw20HookMsg::Unwrap {} => { - // Permission check - if info.sender != config.token { - return Err(ContractError::Unauthorized {}); - } - - Ok(Response::new() - .add_message(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: config.token.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Burn { - amount: cw20_msg.amount, - })?, - funds: vec![], - })) - .add_message(CosmosMsg::Bank(BankMsg::Send { - to_address: cw20_msg.sender, - amount: vec![Coin { - denom: config.denom, - amount: cw20_msg.amount, - }], - }))) - } - } -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { - match msg { - QueryMsg::Config {} => to_json_binary(&CONFIG.load(deps.storage)?), - } -} diff --git a/contracts/periphery/native-coin-wrapper/src/error.rs b/contracts/periphery/native-coin-wrapper/src/error.rs deleted file mode 100644 index 7cf652696..000000000 --- a/contracts/periphery/native-coin-wrapper/src/error.rs +++ /dev/null @@ -1,18 +0,0 @@ -use cosmwasm_std::StdError; -use cw_utils::PaymentError; -use thiserror::Error; - -#[derive(Error, Debug)] -pub enum ContractError { - #[error("{0}")] - Std(#[from] StdError), - - #[error("{0}")] - PaymentError(#[from] PaymentError), - - #[error("Unauthorized")] - Unauthorized {}, - - #[error("Failed to parse or process reply message")] - FailedToParseReply {}, -} diff --git a/contracts/periphery/native-coin-wrapper/src/lib.rs b/contracts/periphery/native-coin-wrapper/src/lib.rs deleted file mode 100644 index e6b35c477..000000000 --- a/contracts/periphery/native-coin-wrapper/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod contract; -mod error; -pub mod state; diff --git a/contracts/periphery/native-coin-wrapper/src/state.rs b/contracts/periphery/native-coin-wrapper/src/state.rs deleted file mode 100644 index d5e3b715f..000000000 --- a/contracts/periphery/native-coin-wrapper/src/state.rs +++ /dev/null @@ -1,5 +0,0 @@ -use astroport::native_coin_wrapper::Config; -use cw_storage_plus::Item; - -/// Stores the contract config at the given key -pub const CONFIG: Item = Item::new("config"); diff --git a/contracts/periphery/native-coin-wrapper/tests/integration.rs b/contracts/periphery/native-coin-wrapper/tests/integration.rs deleted file mode 100644 index 0979eeee2..000000000 --- a/contracts/periphery/native-coin-wrapper/tests/integration.rs +++ /dev/null @@ -1,379 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -use cosmwasm_std::{ - attr, coin, to_json_binary, Addr, BalanceResponse as NativeBalanceResponse, BankQuery, Coin, - QueryRequest, Uint128, WasmQuery, -}; -use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, MinterResponse, TokenInfoResponse}; - -use astroport::asset::{native_asset_info, token_asset_info, AssetInfo}; -use astroport::native_coin_wrapper::{Config, Cw20HookMsg, ExecuteMsg, InstantiateMsg, QueryMsg}; -use astroport::token::InstantiateMsg as AstroInstantiateMsg; -use cw_multi_test::{App, ContractWrapper, Executor}; - -fn mock_app(owner: Addr, coins: Vec) -> App { - App::new(|router, _, storage| { - router.bank.init_balance(storage, &owner, coins).unwrap(); - }) -} - -fn check_balance(app: &mut App, user: Addr, asset_info: &AssetInfo) -> Uint128 { - match asset_info { - AssetInfo::Token { contract_addr } => { - let res: Result = - app.wrap().query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: contract_addr.to_string(), - msg: to_json_binary(&Cw20QueryMsg::Balance { - address: user.to_string(), - }) - .unwrap(), - })); - - res.unwrap().balance - } - AssetInfo::NativeToken { denom } => { - let res: Result = - app.wrap().query(&QueryRequest::Bank(BankQuery::Balance { - address: user.to_string(), - denom: denom.to_string(), - })); - - res.unwrap().amount.amount - } - } -} - -fn store_astro_code_id(app: &mut App) -> u64 { - let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, - )); - - app.store_code(astro_token_contract) -} - -fn create_astro_token(app: &mut App, astro_token_code_id: u64, owner: &Addr) -> Addr { - let msg = AstroInstantiateMsg { - name: String::from("Astro token"), - symbol: String::from("ASTRO"), - decimals: 6, - initial_balances: vec![], - mint: Some(MinterResponse { - minter: owner.to_string(), - cap: Some(Uint128::new(100000000000)), - }), - marketing: None, - }; - - app.instantiate_contract( - astro_token_code_id, - owner.clone(), - &msg, - &[], - String::from("ASTRO"), - None, - ) - .unwrap() -} - -fn mint_some_astro( - router: &mut App, - owner: Addr, - astro_token_instance: Addr, - to: &str, - amount: Uint128, -) { - let res = router - .execute_contract( - owner.clone(), - astro_token_instance.clone(), - &cw20::Cw20ExecuteMsg::Mint { - recipient: String::from(to), - amount, - }, - &[], - ) - .unwrap(); - assert_eq!(res.events[1].attributes[1], attr("action", "mint")); - assert_eq!(res.events[1].attributes[2], attr("to", String::from(to))); - assert_eq!(res.events[1].attributes[3], attr("amount", amount)); -} - -fn store_native_wrapper_code(app: &mut App) -> u64 { - let contract = Box::new( - ContractWrapper::new_with_empty( - astroport_native_coin_wrapper::contract::execute, - astroport_native_coin_wrapper::contract::instantiate, - astroport_native_coin_wrapper::contract::query, - ) - .with_reply_empty(astroport_native_coin_wrapper::contract::reply), - ); - - app.store_code(contract) -} - -#[test] -fn proper_initialization() { - let owner = Addr::unchecked("owner"); - let mut app = mock_app(owner.clone(), vec![]); - - let native_wrapper_code_id = store_native_wrapper_code(&mut app); - let astro_token_code_id = store_astro_code_id(&mut app); - - let native_wrapper_instance = app - .instantiate_contract( - native_wrapper_code_id, - Addr::unchecked(owner.clone()), - &InstantiateMsg { - denom: "ibc/EBD5A24C554198EBAF44979C5B4D2C2D312E6EBAB71962C92F735499C7575839" - .to_string(), - token_code_id: astro_token_code_id, - token_decimals: 15, - }, - &[], - "CW20 native tokens wrapper contract", - None, - ) - .unwrap(); - - let config_res: Config = app - .wrap() - .query_wasm_smart(&native_wrapper_instance, &QueryMsg::Config {}) - .unwrap(); - - assert_eq!( - "ibc/EBD5A24C554198EBAF44979C5B4D2C2D312E6EBAB71962C92F735499C7575839".to_string(), - config_res.denom.to_string() - ); - assert_eq!("contract1", config_res.token.to_string()); - - let token_res: TokenInfoResponse = app - .wrap() - .query_wasm_smart(&config_res.token, &Cw20QueryMsg::TokenInfo {}) - .unwrap(); - assert_eq!("IBC/EBD5", token_res.symbol.to_string()); - assert_eq!( - "CW20-wrapped ibc/EBD5A24C554198EBAF44979C5B4D2C2D3", - token_res.name.to_string() - ); - assert_eq!("15", token_res.decimals.to_string()); -} - -#[test] -fn check_wrap_and_unwrap() { - let owner = Addr::unchecked("owner"); - let user1 = Addr::unchecked("user1"); - let mut app = mock_app( - owner.clone(), - vec![ - Coin { - denom: "ibc/EBD5A24C554198EBA".to_string(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: "wrapped_coin_1".to_string(), - amount: Uint128::new(100_000_000_000u128), - }, - ], - ); - - // Send native asset to user1 - app.send_tokens( - owner.clone(), - user1.clone(), - &[coin(100, "ibc/EBD5A24C554198EBA".to_string())], - ) - .unwrap(); - - let native_wrapper_code_id = store_native_wrapper_code(&mut app); - let astro_token_code_id = store_astro_code_id(&mut app); - let astro_token_addr = create_astro_token(&mut app, astro_token_code_id, &owner); - - let native_wrapper_instance = app - .instantiate_contract( - native_wrapper_code_id, - Addr::unchecked(owner.clone()), - &InstantiateMsg { - denom: "ibc/EBD5A24C554198EBA".to_string(), - token_code_id: astro_token_code_id, - token_decimals: 6, - }, - &[], - "CW20 native tokens wrapper contract", - None, - ) - .unwrap(); - - let res = app - .wrap() - .query::(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: native_wrapper_instance.to_string(), - msg: to_json_binary(&QueryMsg::Config {}).unwrap(), - })) - .unwrap(); - let wrapped_cw20_native_token = token_asset_info(res.token); - assert_eq!("contract2", wrapped_cw20_native_token.to_string()); - - let err = app - .execute_contract( - Addr::unchecked("user1"), - native_wrapper_instance.clone(), - &ExecuteMsg::Wrap {}, - &[], - ) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "No funds sent"); - - let err = app - .execute_contract( - Addr::unchecked("owner"), - native_wrapper_instance.clone(), - &ExecuteMsg::Wrap {}, - &[ - coin(20, "ibc/EBD5A24C554198EBA"), - coin(30, "wrapped_coin_1"), - ], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Sent more than one denomination" - ); - - // try to unwrap cw20 tokens to get native tokens - let err = app - .execute_contract( - user1.clone(), - Addr::unchecked(wrapped_cw20_native_token.to_string()), - &Cw20ExecuteMsg::Send { - contract: native_wrapper_instance.to_string(), - msg: to_json_binary(&Cw20HookMsg::Unwrap {}).unwrap(), - amount: Uint128::from(10u128), - }, - &[], - ) - .unwrap_err(); - assert_eq!( - "Overflow: Cannot Sub with 0 and 10", - err.root_cause().to_string() - ); - - // check user1's wrapped cw20 token balance - assert_eq!( - check_balance(&mut app, user1.clone(), &wrapped_cw20_native_token), - Uint128::new(0) - ); - - app.execute_contract( - Addr::unchecked("user1"), - native_wrapper_instance.clone(), - &ExecuteMsg::Wrap {}, - &[coin(20, "ibc/EBD5A24C554198EBA")], - ) - .unwrap(); - - // check user1's native coin balance - assert_eq!( - check_balance( - &mut app, - user1.clone(), - &native_asset_info("ibc/EBD5A24C554198EBA".to_string()) - ), - Uint128::new(80) - ); - - // check user1's wrapped cw20 token balance - assert_eq!( - check_balance(&mut app, user1.clone(), &wrapped_cw20_native_token), - Uint128::new(20) - ); - - // check wrapper's wrapped cw20 token balance - assert_eq!( - check_balance( - &mut app, - native_wrapper_instance.clone(), - &wrapped_cw20_native_token - ), - Uint128::new(0) - ); - - // check wrapper's native coin balance - assert_eq!( - check_balance( - &mut app, - native_wrapper_instance.clone(), - &native_asset_info("ibc/EBD5A24C554198EBA".to_string()) - ), - Uint128::new(20) - ); - - mint_some_astro( - &mut app, - owner.clone(), - astro_token_addr.clone(), - owner.as_str(), - Uint128::new(100), - ); - - // try to unwrap cw20 tokens from the other cw20 token. - let resp = app - .execute_contract( - owner.clone(), - astro_token_addr.clone(), - &Cw20ExecuteMsg::Send { - contract: native_wrapper_instance.to_string(), - msg: to_json_binary(&Cw20HookMsg::Unwrap {}).unwrap(), - amount: Uint128::from(10u128), - }, - &[], - ) - .unwrap_err(); - assert_eq!(resp.root_cause().to_string(), "Unauthorized"); - - // try to unwrap cw20 tokens from our cw20 token. - app.execute_contract( - user1.clone(), - Addr::unchecked(wrapped_cw20_native_token.to_string()), - &Cw20ExecuteMsg::Send { - contract: native_wrapper_instance.to_string(), - msg: to_json_binary(&Cw20HookMsg::Unwrap {}).unwrap(), - amount: Uint128::from(10u128), - }, - &[], - ) - .unwrap(); - - // check user1's balances - assert_eq!( - check_balance(&mut app, user1.clone(), &wrapped_cw20_native_token), - Uint128::new(10) - ); - assert_eq!( - check_balance( - &mut app, - user1.clone(), - &native_asset_info("ibc/EBD5A24C554198EBA".to_string()) - ), - Uint128::new(90) - ); - - // check wrapper's balances - assert_eq!( - check_balance( - &mut app, - native_wrapper_instance.clone(), - &wrapped_cw20_native_token - ), - Uint128::zero() - ); - assert_eq!( - check_balance( - &mut app, - native_wrapper_instance.clone(), - &native_asset_info("ibc/EBD5A24C554198EBA".to_string()) - ), - Uint128::new(10) - ); -} diff --git a/contracts/periphery/native_coin_registry/Cargo.toml b/contracts/periphery/native_coin_registry/Cargo.toml index f4f07d3c6..18be78386 100644 --- a/contracts/periphery/native_coin_registry/Cargo.toml +++ b/contracts/periphery/native_coin_registry/Cargo.toml @@ -26,13 +26,12 @@ backtraces = ["cosmwasm-std/backtraces"] library = [] [dependencies] -cosmwasm-schema = "1.1" -cosmwasm-std = "1.1" -cosmwasm-storage = "1.1" +cosmwasm-schema.workspace = true +cosmwasm-std.workspace = true cw-storage-plus = "0.15" -cw2 = "0.15" -thiserror = { version = "1.0" } -astroport = { path = "../../../packages/astroport", version = "3" } +cw2.workspace = true +thiserror.workspace = true +astroport = "3" [dev-dependencies] cw-multi-test = "1.0.0" diff --git a/contracts/periphery/oracle/Cargo.toml b/contracts/periphery/oracle/Cargo.toml index 64136c99f..cf0f086bc 100644 --- a/contracts/periphery/oracle/Cargo.toml +++ b/contracts/periphery/oracle/Cargo.toml @@ -24,16 +24,16 @@ crate-type = ["cdylib", "rlib"] backtraces = ["cosmwasm-std/backtraces"] [dependencies] -cosmwasm-std = { version = "1.1" } +cosmwasm-std.workspace = true cw-storage-plus = "0.15" -thiserror = { version = "1.0" } -cw2 = "0.15" +thiserror.workspace = true +cw2.workspace = true cw20 = "0.15" -astroport = { path = "../../../packages/astroport", version = "3" } -cosmwasm-schema = { version = "1.1" } +astroport = "3" +cosmwasm-schema.workspace = true [dev-dependencies] -astroport-token = { path = "../../token" } +cw20-base = "1.1" astroport-factory = { path = "../../factory" } astroport-pair = { path = "../../pair" } astroport-pair-stable = { path = "../../pair_stable" } diff --git a/contracts/periphery/oracle/tests/integration.rs b/contracts/periphery/oracle/tests/integration.rs index 437f7e9cd..8865bb608 100644 --- a/contracts/periphery/oracle/tests/integration.rs +++ b/contracts/periphery/oracle/tests/integration.rs @@ -74,9 +74,9 @@ fn instantiate_coin_registry(mut app: &mut App, coins: Option> fn instantiate_contracts(mut router: &mut App, owner: Addr) -> (Addr, Addr, u64) { let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )); let astro_token_code_id = router.store_code(astro_token_contract); @@ -192,9 +192,9 @@ fn instantiate_contracts(mut router: &mut App, owner: Addr) -> (Addr, Addr, u64) fn instantiate_token(router: &mut App, owner: Addr, name: String, symbol: String) -> Addr { let token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )); let token_code_id = router.store_code(token_contract); diff --git a/contracts/periphery/shared_multisig/.cargo/config b/contracts/periphery/shared_multisig/.cargo/config deleted file mode 100644 index 59e5a5d16..000000000 --- a/contracts/periphery/shared_multisig/.cargo/config +++ /dev/null @@ -1,6 +0,0 @@ -[alias] -wasm = "build --release --lib --target wasm32-unknown-unknown" -wasm-debug = "build --lib --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --bin shared_multisig_schema" diff --git a/contracts/periphery/shared_multisig/Cargo.toml b/contracts/periphery/shared_multisig/Cargo.toml deleted file mode 100644 index 24358defa..000000000 --- a/contracts/periphery/shared_multisig/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "astroport-shared-multisig" -version = "1.0.0" -authors = ["Astroport, Ethan Frey "] -edition = "2021" - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -backtraces = ["cosmwasm-std/backtraces"] -# use library feature to disable all instantiate/execute/query exports -library = [] - -[dependencies] -cosmwasm-schema = "1.1" -cw-utils = "1.0" -cw2 = "1.0" -cw3 = "1.0" -cw20 = "0.15" -cw-storage-plus = "0.15" -cosmwasm-std = "1.1" -thiserror = "1.0" -itertools = "0.10" -astroport = { path = "../../../packages/astroport", version = "3" } - -[dev-dependencies] -astroport-mocks = { path = "../../../packages/astroport_mocks"} -astroport-pair = { path = "../../pair" } -astroport-pair-concentrated = { path = "../../pair_concentrated" } -astroport-generator = { path = "../../tokenomics/generator" } \ No newline at end of file diff --git a/contracts/periphery/shared_multisig/README.md b/contracts/periphery/shared_multisig/README.md deleted file mode 100644 index 7bebfb00c..000000000 --- a/contracts/periphery/shared_multisig/README.md +++ /dev/null @@ -1,393 +0,0 @@ -# Astroport Shared Multisig - -It is a multisig with two addresses created upon instantiation. Each address has its own role (manager1 or manager2), however, -both have exactly the same permissions. Each role can propose a new address which can then claim that role. - -## Instantiation - -To create the multisig, you must pass in a set of address for each one to pass a proposal. To create a 2 multisig, -pass 2 voters (manager1 and manager2). - -```json -{ - "factory_addr": "wasm...", - "max_voting_period": { - "height": 123 - }, - "manager1": "wasm...", - "manager2": "wasm...", - "denom1": "wasm...", - "denom2": "wasm...", - "target_pool": "wasm..." -} -``` - -## ExecuteMsg - -### `propose` - -Example proposal - -```json -{ - "propose": { - "title": "Example proposal", - "description": "Example proposal", - "msgs": [ - { - "wasm": { - "execute": { - "contract_addr": "wasm...", - "msg": "", - "funds": [] - } - } - } - ] - } -} -``` - -### `vote` - -Votes for a proposal with specified parameters - -```json -{ - "vote": { - "proposal_id": 123, - "vote": {"yes": {}} - } -} -``` - -### `execute` - -Executes a proposal by ID - -```json -{ - "execute": { - "proposal_id": 123 - } -} -``` - -### `close` - -Closes a proposal by ID - -```json -{ - "execute": { - "proposal_id": 123 - } -} -``` - -### `setup_max_voting_period` - -Updates contract parameters - -```json -{ - "setup_max_voting_period": { - "max_voting_period": 123 - } -} -``` - -### `start_rage_quit` - -Locks the contract and starts the migration from the target pool. - -```json -{ - "start_rage_quit": {} -} -``` - -### `complete_target_pool_migration` - -Completes the migration from the target pool. - -```json -{ - "complete_target_pool_migration": {} -} -``` - -### `update_config` - -Update configuration - -```json -{ - "update_config": { - "factory": "wasm...", - "generator": "wasm..." - } -} -``` - -### `transfer` - -Transfer coins - -```json -{ - "transfer": { - "asset": { - "native_token": { - "denom": "uusd" - } - }, - "recipient": "wasm..." - } -} -``` - -### `provide_liquidity` - -Providing Liquidity With Slippage Tolerance - -```json -{ - "provide_liquidity": { - "pool": { - "target": {} - }, - "assets": [ - { - "info": { - "token": { - "contract_addr": "wasm..." - } - }, - "amount": "1000000" - }, - { - "info": { - "native_token": { - "denom": "uusd" - } - }, - "amount": "1000000" - } - ], - "slippage_tolerance": "0.01", - "receiver": "wasm..." - } -} -``` - -### `setup_pools` - -```json -{ - "setup_pools": { - "target_pool": "wasm...", - "migration_pool": "wasm..." - } -} -``` - -### `withdraw_target_pool_lp` - -Withdraws LP tokens from the target pool. If `provide_params` is specified, liquidity will be introduced -into the migration pool in the same transaction. - -```json -{ - "withdraw_target_pool_lp": { - "withdraw_amount": "1234", - "provide_params": { - "slippage_tolerance": "0.01" - } - } -} -``` - -### `withdraw_rage_quit_lp` - -Withdraws the LP tokens from the specified pool. - -```json -{ - "withdraw_rage_quit_lp": { - "pool": { - "target": {} - }, - "withdraw_amount": "1234" - } -} -``` - -### `deposit_generator` - -Stakes the target LP tokens in the Generator contract - -```json -{ - "deposit_generator": { - "amount": "1234" - } -} -``` - -### `withdraw_generator` - -Withdraw LP tokens from the Astroport generator. - -```json -{ - "withdraw_generator": { - "amount": "1234" - } -} -``` - -### `claim_generator_rewards` - -Update generator rewards and returns them to the Multisig. - -```json -{ - "claim_generator_rewards": {} -} -``` - -### `propose_new_manager_1` - -Creates an offer to change the contract manager. The validity period of the offer is set in the `expires_in` variable. -After `expires_in` seconds pass, the proposal expires and cannot be accepted anymore. - -```json -{ - "propose_new_manager_1": { - "new_manager": "wasm...", - "expires_in": 1234567 - } -} -``` - -### `drop_manager_1_proposal` - -Removes an existing offer to change the contract manager. - -```json -{ - "drop_manager_1_proposal": {} -} -``` - -### `claim_manager_1` - -Used to claim contract manager. - -```json -{ - "claim_manager_1": {} -} -``` - -### `propose_new_manager_2` - -Creates an offer to change the contract Manager2. The validity period of the offer is set in the `expires_in` variable. -After `expires_in` seconds pass, the proposal expires and cannot be accepted anymore. - -```json -{ - "propose_new_manager_2": { - "new_manager": "wasm...", - "expires_in": 1234567 - } -} -``` - -### `drop_manager_2_proposal` - -Removes an existing offer to change the contract Manager2. - -```json -{ - "drop_manager_2_proposal": {} -} -``` - -### `claim_manager_2` - -Used to claim contract Manager2. - -```json -{ - "claim_manager_2": {} -} -``` - -## QueryMsg - -### `config` - -Returns the general config of the contract. - -```json -{ - "config": {} -} -``` - -### `proposal` - -Returns the information of the proposal - -```json -{ - "proposal": { "proposal_id": 123 } -} -``` - -### `list_proposals` - -Returns a list of proposals - -```json -{ - "list_proposals": {} -} -``` - -### `reverse_proposals` - -Returns the reversed list of proposals - -```json -{ - "reverse_proposals": {} -} -``` - -### `vote` - -Returns the vote (opinion as well as weight counted) as well as the address of the voter who submitted it - -```json -{ - "vote": { - "proposal_id": 123, - "voter": "wasm..." - } -} -``` - -### `list_votes` - -Returns a list of votes (opinion as well as weight counted) as well as the addresses of the voters who submitted it - -```json -{ - "list_votes": { - "proposal_id": 123 - } -} -``` \ No newline at end of file diff --git a/contracts/periphery/shared_multisig/src/bin/schema.rs b/contracts/periphery/shared_multisig/src/bin/schema.rs deleted file mode 100644 index 1b65fec01..000000000 --- a/contracts/periphery/shared_multisig/src/bin/schema.rs +++ /dev/null @@ -1,11 +0,0 @@ -use cosmwasm_schema::write_api; - -use astroport::shared_multisig::{ExecuteMsg, InstantiateMsg, QueryMsg}; - -fn main() { - write_api! { - instantiate: InstantiateMsg, - execute: ExecuteMsg, - query: QueryMsg, - } -} diff --git a/contracts/periphery/shared_multisig/src/contract.rs b/contracts/periphery/shared_multisig/src/contract.rs deleted file mode 100644 index b6636fa9d..000000000 --- a/contracts/periphery/shared_multisig/src/contract.rs +++ /dev/null @@ -1,1088 +0,0 @@ -use std::cmp::Ordering; - -#[cfg(not(feature = "library"))] -use cosmwasm_std::entry_point; -use cosmwasm_std::{ - attr, to_json_binary, BankMsg, Binary, BlockInfo, Coin, CosmosMsg, Decimal, Deps, DepsMut, Env, - MessageInfo, Order, Response, StdError, StdResult, Uint128, WasmMsg, -}; -use cw20::Cw20ExecuteMsg; - -use astroport::asset::{addr_opt_validate, validate_native_denom, Asset, AssetInfo}; -use astroport::common::{claim_ownership, drop_ownership_proposal, propose_new_owner}; - -use astroport::shared_multisig::{ - Config, ConfigResponse, ExecuteMsg, InstantiateMsg, MigrateMsg, MultisigRole, PoolType, - ProvideParams, QueryMsg, DEFAULT_WEIGHT, TOTAL_WEIGHT, -}; - -use astroport::generator::{ - Cw20HookMsg, ExecuteMsg as GeneratorExecuteMsg, QueryMsg as GeneratorQueryMsg, -}; - -use astroport::querier::{query_balance, query_token_balance}; -use cw2::set_contract_version; -use cw3::{ - Proposal, ProposalListResponse, ProposalResponse, Status, Vote, VoteInfo, VoteListResponse, - VoteResponse, Votes, -}; -use cw_storage_plus::Bound; -use cw_utils::{Duration, Expiration, Threshold}; - -use crate::error::ContractError; -use crate::state::{ - load_vote, next_id, update_distributed_rewards, BALLOTS, CONFIG, DEFAULT_LIMIT, - MANAGER1_PROPOSAL, MANAGER2_PROPOSAL, MAX_LIMIT, PROPOSALS, -}; -use crate::utils::{ - check_generator_deposit, check_pool, check_provide_assets, get_pool_info, - prepare_provide_after_withdraw_msg, prepare_provide_msg, prepare_withdraw_msg, -}; - -// version info for migration info -const CONTRACT_NAME: &str = "astroport-shared-multisig"; -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - deps: DepsMut, - _env: Env, - _info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - validate_native_denom(msg.denom1.as_str())?; - validate_native_denom(msg.denom2.as_str())?; - - let cfg = Config { - threshold: Threshold::AbsoluteCount { - weight: TOTAL_WEIGHT, - }, - total_weight: TOTAL_WEIGHT, - max_voting_period: msg.max_voting_period, - factory_addr: deps.api.addr_validate(&msg.factory_addr)?, - generator_addr: deps.api.addr_validate(&msg.generator_addr)?, - manager1: deps.api.addr_validate(&msg.manager1)?, - manager2: deps.api.addr_validate(&msg.manager2)?, - target_pool: addr_opt_validate(deps.api, &msg.target_pool)?, - migration_pool: None, - rage_quit_started: false, - denom1: msg.denom1, - denom2: msg.denom2, - }; - - if let Some(target_pool) = &cfg.target_pool { - check_pool(&deps.querier, target_pool, &cfg)?; - } - - CONFIG.save(deps.storage, &cfg)?; - - Ok(Response::default()) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - match msg { - ExecuteMsg::UpdateConfig { factory, generator } => { - update_config(deps, env, info, factory, generator) - } - ExecuteMsg::DepositGenerator { amount } => deposit_generator(deps, env, info, amount), - ExecuteMsg::ClaimGeneratorRewards {} => claim_generator_rewards(deps), - ExecuteMsg::WithdrawGenerator { amount } => withdraw_generator(deps, env, info, amount), - ExecuteMsg::SetupMaxVotingPeriod { max_voting_period } => { - setup_max_voting_period(deps, info, env, max_voting_period) - } - ExecuteMsg::SetupPools { - target_pool, - migration_pool, - } => setup_pools(deps, env, info, target_pool, migration_pool), - ExecuteMsg::WithdrawTargetPoolLP { - withdraw_amount, - provide_params, - } => withdraw_target_pool(deps, env, info, withdraw_amount, provide_params), - ExecuteMsg::WithdrawRageQuitLP { - pool_type, - withdraw_amount, - } => withdraw_ragequit(deps, env, info, pool_type, withdraw_amount), - ExecuteMsg::Transfer { asset, recipient } => transfer(deps, info, env, &asset, recipient), - ExecuteMsg::ProvideLiquidity { - pool_type, - assets, - slippage_tolerance, - auto_stake, - .. - } => provide( - deps, - env, - info, - pool_type, - assets, - slippage_tolerance, - auto_stake, - ), - ExecuteMsg::StartRageQuit {} => start_rage_quit(deps, info), - ExecuteMsg::CompleteTargetPoolMigration {} => end_target_pool_migration(deps, info, env), - ExecuteMsg::Propose { - title, - description, - msgs, - latest, - } => execute_propose(deps, env, info, title, description, msgs, latest), - ExecuteMsg::Vote { proposal_id, vote } => execute_vote(deps, env, info, proposal_id, vote), - ExecuteMsg::Execute { proposal_id } => execute_execute(deps, env, proposal_id), - ExecuteMsg::Close { proposal_id } => execute_close(deps, env, proposal_id), - ExecuteMsg::ProposeNewManager2 { - new_manager, - expires_in, - } => { - let config = CONFIG.load(deps.storage)?; - propose_new_owner( - deps, - info, - env, - new_manager, - expires_in, - config.manager2, - MANAGER2_PROPOSAL, - ) - .map_err(Into::into) - } - ExecuteMsg::DropManager2Proposal {} => { - let config = CONFIG.load(deps.storage)?; - - drop_ownership_proposal(deps, info, config.manager2, MANAGER2_PROPOSAL) - .map_err(Into::into) - } - ExecuteMsg::ClaimManager2 {} => { - claim_ownership(deps, info, env, MANAGER2_PROPOSAL, |deps, new_manager| { - CONFIG - .update::<_, StdError>(deps.storage, |mut v| { - v.manager2 = new_manager; - Ok(v) - }) - .map(|_| ()) - }) - .map_err(Into::into) - } - ExecuteMsg::ProposeNewManager1 { - new_manager, - expires_in, - } => { - let config = CONFIG.load(deps.storage)?; - - propose_new_owner( - deps, - info, - env, - new_manager, - expires_in, - config.manager1, - MANAGER1_PROPOSAL, - ) - .map_err(Into::into) - } - ExecuteMsg::DropManager1Proposal {} => { - let config = CONFIG.load(deps.storage)?; - drop_ownership_proposal(deps, info, config.manager1, MANAGER1_PROPOSAL) - .map_err(Into::into) - } - ExecuteMsg::ClaimManager1 {} => { - claim_ownership(deps, info, env, MANAGER1_PROPOSAL, |deps, new_manager| { - CONFIG - .update::<_, StdError>(deps.storage, |mut v| { - v.manager1 = new_manager; - Ok(v) - }) - .map(|_| ()) - }) - .map_err(Into::into) - } - } -} - -pub fn update_config( - deps: DepsMut, - env: Env, - info: MessageInfo, - factory: Option, - generator: Option, -) -> Result { - let mut config = CONFIG.load(deps.storage)?; - let mut attributes = vec![attr("action", "update_config")]; - - // we need to approve from both managers - if info.sender != env.contract.address { - return Err(ContractError::Unauthorized {}); - } - - if config.rage_quit_started { - return Err(ContractError::RageQuitStarted {}); - } - - if let Some(factory) = factory { - config.factory_addr = deps.api.addr_validate(&factory)?; - attributes.push(attr("factory", factory)); - } - - if let Some(new_generator) = generator { - let (_, lp_token) = get_pool_info(&deps.querier, &config, PoolType::Target)?; - - // checks if all LP tokens have been withdrawn from the generator for the target pool - check_generator_deposit( - &deps.querier, - &config.generator_addr, - &lp_token, - &env.contract.address, - )?; - - if config.migration_pool.is_some() { - let (_, lp_token) = get_pool_info(&deps.querier, &config, PoolType::Migration)?; - - // checks if all LP tokens have been withdrawn from the generator for the migration pool - check_generator_deposit( - &deps.querier, - &config.generator_addr, - &lp_token, - &env.contract.address, - )?; - } - - config.generator_addr = deps.api.addr_validate(&new_generator)?; - attributes.push(attr("generator", new_generator)); - } - - CONFIG.save(deps.storage, &config)?; - - Ok(Response::new().add_attributes(attributes)) -} - -/// Stakes the target LP tokens in the Generator contract. -pub fn deposit_generator( - deps: DepsMut, - env: Env, - info: MessageInfo, - amount: Option, -) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - if cfg.rage_quit_started { - return Err(ContractError::RageQuitStarted {}); - } - - if cfg.migration_pool.is_some() { - return Err(ContractError::MigrationNotCompleted {}); - } - - if info.sender != cfg.manager2 && info.sender != cfg.manager1 { - return Err(ContractError::Unauthorized {}); - } - - let (_, lp_token) = get_pool_info(&deps.querier, &cfg, PoolType::Target)?; - - let total_lp_amount = query_token_balance(&deps.querier, &lp_token, &env.contract.address)?; - let deposit_amount = amount.unwrap_or(total_lp_amount); - - if deposit_amount.is_zero() { - return Err(ContractError::InvalidZeroAmount {}); - } - - if deposit_amount > total_lp_amount { - return Err(ContractError::BalanceToSmall( - env.contract.address.to_string(), - total_lp_amount.to_string(), - )); - } - - Ok(Response::new() - .add_message(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: lp_token.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Send { - contract: cfg.generator_addr.to_string(), - amount: deposit_amount, - msg: to_json_binary(&Cw20HookMsg::Deposit {})?, - })?, - funds: vec![], - })) - .add_attributes([attr("action", "deposit_generator")])) -} - -/// Updates generator rewards and return it to Multisig -pub fn claim_generator_rewards(deps: DepsMut) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - let (_, lp_token) = get_pool_info(&deps.querier, &cfg, PoolType::Target)?; - - Ok(Response::new() - .add_message(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: cfg.generator_addr.to_string(), - msg: to_json_binary(&GeneratorExecuteMsg::ClaimRewards { - lp_tokens: vec![lp_token.to_string()], - })?, - funds: vec![], - })) - .add_attributes([attr("action", "claim_generator_rewards")])) -} - -/// Withdraws the LP tokens from the specified pool -pub fn withdraw_generator( - deps: DepsMut, - env: Env, - info: MessageInfo, - amount: Option, -) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - if cfg.rage_quit_started { - return Err(ContractError::RageQuitStarted {}); - } - - // We should complete the migration from the target pool - if cfg.migration_pool.is_some() { - return Err(ContractError::MigrationNotCompleted {}); - } - - if info.sender != cfg.manager2 && info.sender != cfg.manager1 { - return Err(ContractError::Unauthorized {}); - } - - let (_, lp_token) = get_pool_info(&deps.querier, &cfg, PoolType::Target)?; - - let total_amount: Uint128 = deps.querier.query_wasm_smart( - &cfg.generator_addr, - &GeneratorQueryMsg::Deposit { - lp_token: lp_token.to_string(), - user: env.contract.address.to_string(), - }, - )?; - - let burn_amount = amount.unwrap_or(total_amount); - if burn_amount > total_amount { - return Err(ContractError::BalanceToSmall( - env.contract.address.to_string(), - total_amount.to_string(), - )); - } - - Ok(Response::new() - .add_message(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: cfg.generator_addr.to_string(), - msg: to_json_binary(&GeneratorExecuteMsg::Withdraw { - lp_token: lp_token.to_string(), - amount: burn_amount, - })?, - funds: vec![], - })) - .add_attributes([attr("action", "withdraw_generator")])) -} - -/// Withdraw liquidity from the pool. -/// * **withdraw_amount** is the amount of LP tokens to burn. -/// -/// * **provide_params** is the parameters to LP tokens in the same transaction to migration_pool -pub fn withdraw_target_pool( - deps: DepsMut, - env: Env, - info: MessageInfo, - amount: Option, - provide_params: Option, -) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - if cfg.rage_quit_started { - return Err(ContractError::RageQuitStarted {}); - } - - if cfg.migration_pool.is_none() { - return Err(ContractError::MigrationPoolError {}); - } - - if info.sender != cfg.manager2 && info.sender != cfg.manager1 { - return Err(ContractError::Unauthorized {}); - } - - let (pair, lp_token) = get_pool_info(&deps.querier, &cfg, PoolType::Target)?; - - let mut attributes = vec![attr("action", "withdraw_target_pool")]; - let mut messages = vec![]; - - let (withdraw_msg, burn_amount) = prepare_withdraw_msg( - &deps.querier, - &env.contract.address, - &pair, - &lp_token, - amount, - )?; - - messages.push(withdraw_msg); - - if let Some(provide_params) = provide_params { - messages.push(prepare_provide_after_withdraw_msg( - &deps.querier, - &cfg, - burn_amount, - &pair, - provide_params, - &mut attributes, - )?); - } - - Ok(Response::new() - .add_messages(messages) - .add_attributes(attributes)) -} - -/// Withdraws the LP tokens from the specified pool -pub fn withdraw_ragequit( - deps: DepsMut, - env: Env, - info: MessageInfo, - pool_type: PoolType, - amount: Option, -) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - if !cfg.rage_quit_started { - return Err(ContractError::RageQuitIsNotStarted {}); - } - - if info.sender != cfg.manager2 && info.sender != cfg.manager1 { - return Err(ContractError::Unauthorized {}); - } - - let (pair, lp_token) = get_pool_info(&deps.querier, &cfg, pool_type)?; - let (withdraw_msg, _) = prepare_withdraw_msg( - &deps.querier, - &env.contract.address, - &pair, - &lp_token, - amount, - )?; - - Ok(Response::new() - .add_message(withdraw_msg) - .add_attributes([attr("action", "withdraw_ragequit")])) -} - -pub fn provide( - deps: DepsMut, - env: Env, - info: MessageInfo, - pool_type: PoolType, - assets: Vec, - slippage_tolerance: Option, - auto_stake: Option, -) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - if info.sender != cfg.manager2 && info.sender != cfg.manager1 { - return Err(ContractError::Unauthorized {}); - } - - if cfg.rage_quit_started { - return Err(ContractError::RageQuitStarted {}); - } - - if pool_type == PoolType::Target { - // we cannot provide to the target pool if migration pool is set - if cfg.migration_pool.is_some() { - return Err(ContractError::MigrationPoolIsAlreadySet {}); - } - } - - check_provide_assets(&deps.querier, &env.contract.address, &assets, &cfg)?; - - let (pair, _) = get_pool_info(&deps.querier, &cfg, pool_type)?; - let message = prepare_provide_msg(&pair, assets, slippage_tolerance, auto_stake)?; - - Ok(Response::new() - .add_message(message) - .add_attribute("action", "shared_multisig_provide")) -} - -fn transfer( - deps: DepsMut, - info: MessageInfo, - env: Env, - asset: &Asset, - recipient: Option, -) -> Result { - if asset.amount.is_zero() { - return Err(StdError::generic_err("Can't send 0 amount").into()); - } - - let config = CONFIG.load(deps.storage)?; - if info.sender != config.manager1 && info.sender != config.manager2 { - return Err(ContractError::Unauthorized {}); - } - - let recipient = recipient.unwrap_or(info.sender.to_string()); - - let message = match &asset.info { - AssetInfo::Token { contract_addr } => { - let (_, lp_token) = get_pool_info(&deps.querier, &config, PoolType::Target)?; - if lp_token == *contract_addr { - return Err(ContractError::UnauthorizedTransfer( - info.sender.to_string(), - lp_token.to_string(), - )); - } - - if config.migration_pool.is_some() { - let (_, lp_token) = get_pool_info(&deps.querier, &config, PoolType::Migration)?; - if lp_token == *contract_addr { - return Err(ContractError::UnauthorizedTransfer( - info.sender.to_string(), - lp_token.to_string(), - )); - } - } - - let total_amount = - query_token_balance(&deps.querier, contract_addr, &env.contract.address)?; - update_distributed_rewards( - deps.storage, - &contract_addr.to_string(), - asset.amount, - total_amount, - &info.sender, - &config, - )?; - - CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: contract_addr.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Transfer { - recipient: recipient.clone(), - amount: asset.amount, - })?, - funds: vec![], - }) - } - AssetInfo::NativeToken { denom } => { - // Either manager cannot transfer his coin specified in the config before rage quit is not started - if (*denom == config.denom1 || *denom == config.denom2) && !config.rage_quit_started { - return Err(ContractError::RageQuitIsNotStarted {}); - } - - // Either manager can transfer only his coin specified in the config. Also, either manager can - // transfer any coins that aren't set in the config - if (*denom == config.denom1 && info.sender != config.manager1) - || (*denom == config.denom2 && info.sender != config.manager2) - { - return Err(ContractError::UnauthorizedTransfer( - info.sender.to_string(), - denom.clone(), - )); - } - - let total_amount = query_balance(&deps.querier, &env.contract.address, denom)?; - if *denom != config.denom1 && *denom != config.denom2 { - update_distributed_rewards( - deps.storage, - denom, - asset.amount, - total_amount, - &info.sender, - &config, - )?; - } - - CosmosMsg::Bank(BankMsg::Send { - to_address: recipient.clone(), - amount: vec![Coin { - denom: denom.to_string(), - amount: asset.amount, - }], - }) - } - }; - - Ok(Response::default().add_message(message).add_attributes([ - attr("action", "transfer"), - attr("recipient", recipient), - attr("amount", asset.amount), - attr("denom", asset.info.to_string()), - ])) -} - -pub fn execute_propose( - deps: DepsMut, - env: Env, - info: MessageInfo, - title: String, - description: String, - msgs: Vec, - // we ignore earliest - latest: Option, -) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - if info.sender != cfg.manager2 && info.sender != cfg.manager1 { - return Err(ContractError::Unauthorized {}); - } - - // max expires also used as default - let max_expires = cfg.max_voting_period.after(&env.block); - let mut expires = latest.unwrap_or(max_expires); - let comp = expires.partial_cmp(&max_expires); - if let Some(Ordering::Greater) = comp { - expires = max_expires; - } else if comp.is_none() { - return Err(ContractError::WrongExpiration {}); - } - - let mut prop = Proposal { - title, - description, - start_height: env.block.height, - expires, - msgs, - status: Status::Open, - votes: Votes::yes(DEFAULT_WEIGHT), - threshold: cfg.threshold, - total_weight: cfg.total_weight, - proposer: info.sender.clone(), - deposit: None, - }; - prop.update_status(&env.block); - let id = next_id(deps.storage)?; - PROPOSALS.save(deps.storage, id, &prop)?; - - // add the first yes vote from voter - if info.sender == cfg.manager1 { - BALLOTS.save(deps.storage, (id, &MultisigRole::Manager1), &Vote::Yes)?; - } else { - BALLOTS.save(deps.storage, (id, &MultisigRole::Manager2), &Vote::Yes)?; - } - - Ok(Response::new() - .add_attribute("action", "propose") - .add_attribute("proposal_id", id.to_string()) - .add_attribute("status", format!("{:?}", prop.status))) -} - -pub fn execute_vote( - deps: DepsMut, - env: Env, - info: MessageInfo, - proposal_id: u64, - vote: Vote, -) -> Result { - let config = CONFIG.load(deps.storage)?; - - if info.sender != config.manager1 && info.sender != config.manager2 { - return Err(ContractError::Unauthorized {}); - } - - // ensure proposal exists and can be voted on - let mut prop = PROPOSALS.load(deps.storage, proposal_id)?; - // Allow voting on Passed and Rejected proposals too - if ![Status::Open, Status::Passed, Status::Rejected].contains(&prop.status) { - return Err(ContractError::NotOpen {}); - } - - // if they are not expired - if prop.expires.is_expired(&env.block) { - return Err(ContractError::Expired {}); - } - - // store sender vote - if info.sender == config.manager1 { - BALLOTS.update( - deps.storage, - (proposal_id, &MultisigRole::Manager1), - |bal| match bal { - Some(_) => Err(ContractError::AlreadyVoted {}), - None => Ok(vote), - }, - )?; - } else { - BALLOTS.update( - deps.storage, - (proposal_id, &MultisigRole::Manager2), - |bal| match bal { - Some(_) => Err(ContractError::AlreadyVoted {}), - None => Ok(vote), - }, - )?; - } - - // update vote tally - prop.votes.add_vote(vote, DEFAULT_WEIGHT); - prop.update_status(&env.block); - PROPOSALS.save(deps.storage, proposal_id, &prop)?; - - Ok(Response::new() - .add_attribute("action", "vote") - .add_attribute("proposal_id", proposal_id.to_string()) - .add_attribute("status", format!("{:?}", prop.status))) -} - -pub fn execute_execute( - deps: DepsMut, - env: Env, - proposal_id: u64, -) -> Result { - // anyone can trigger this if the vote passed - - let mut prop = PROPOSALS.load(deps.storage, proposal_id)?; - // we allow execution even after the proposal "expiration" as long as all vote come in before - // that point. If it was approved on time, it can be executed any time. - prop.update_status(&env.block); - if prop.status != Status::Passed { - return Err(ContractError::WrongExecuteStatus {}); - } - - // set it to executed - prop.status = Status::Executed; - PROPOSALS.save(deps.storage, proposal_id, &prop)?; - - // dispatch all proposed messages - Ok(Response::new() - .add_messages(prop.msgs) - .add_attribute("action", "execute") - .add_attribute("proposal_id", proposal_id.to_string())) -} - -pub fn execute_close(deps: DepsMut, env: Env, proposal_id: u64) -> Result { - // anyone can trigger this if the vote passed - - let mut prop = PROPOSALS.load(deps.storage, proposal_id)?; - if [Status::Executed, Status::Rejected, Status::Passed].contains(&prop.status) { - return Err(ContractError::WrongCloseStatus {}); - } - - // Avoid closing of Passed due to expiration proposals - if prop.current_status(&env.block) == Status::Passed { - return Err(ContractError::WrongCloseStatus {}); - } - - if !prop.expires.is_expired(&env.block) { - return Err(ContractError::NotExpired {}); - } - - // set it to failed - prop.status = Status::Rejected; - PROPOSALS.save(deps.storage, proposal_id, &prop)?; - - Ok(Response::new() - .add_attribute("action", "close") - .add_attribute("proposal_id", proposal_id.to_string())) -} - -pub fn setup_pools( - deps: DepsMut, - env: Env, - info: MessageInfo, - target_pool: Option, - migration_pool: Option, -) -> Result { - let mut config = CONFIG.load(deps.storage)?; - let mut attributes = vec![attr("action", "setup_pools")]; - - // if we change target or migration pool, we need to approve from both managers - if info.sender != env.contract.address { - return Err(ContractError::Unauthorized {}); - } - - if config.rage_quit_started { - return Err(ContractError::RageQuitStarted {}); - } - - // change migration pool - if let Some(migration_pool) = migration_pool { - // we can change the migration pool if rage quit is not started and the migration pool is None - if config.migration_pool.is_some() { - return Err(ContractError::MigrationPoolIsAlreadySet {}); - } - - let migration_pool_addr = deps.api.addr_validate(&migration_pool)?; - check_pool(&deps.querier, &migration_pool_addr, &config)?; - - config.migration_pool = Some(migration_pool_addr); - attributes.push(attr("migration_pool", migration_pool)); - } - - // change target pool - if let Some(target_pool) = target_pool { - if config.target_pool.is_some() { - return Err(ContractError::TargetPoolIsAlreadySet {}); - } - - let target_pool_addr = deps.api.addr_validate(&target_pool)?; - check_pool(&deps.querier, &target_pool_addr, &config)?; - - config.target_pool = Some(target_pool_addr); - attributes.push(attr("target_pool", target_pool)); - } - - if config.target_pool.eq(&config.migration_pool) { - return Err(ContractError::PoolsError {}); - } - - CONFIG.save(deps.storage, &config)?; - - Ok(Response::new().add_attributes(attributes)) -} - -pub fn setup_max_voting_period( - deps: DepsMut, - info: MessageInfo, - env: Env, - max_voting_period: Duration, -) -> Result { - let mut config = CONFIG.load(deps.storage)?; - let mut attributes = vec![attr("action", "update_config")]; - - if config.rage_quit_started { - return Err(ContractError::RageQuitStarted {}); - } - - // we need to approve from both managers - if info.sender != env.contract.address { - return Err(ContractError::Unauthorized {}); - } - - config.max_voting_period = max_voting_period; - attributes.push(attr("max_voting_period", max_voting_period.to_string())); - - CONFIG.save(deps.storage, &config)?; - - Ok(Response::new().add_attributes(attributes)) -} - -pub fn start_rage_quit(deps: DepsMut, info: MessageInfo) -> Result { - let mut config = CONFIG.load(deps.storage)?; - - if info.sender != config.manager1 && info.sender != config.manager2 { - return Err(ContractError::Unauthorized {}); - } - - if config.rage_quit_started { - return Err(ContractError::RageQuitStarted {}); - } - - config.rage_quit_started = true; - CONFIG.save(deps.storage, &config)?; - - Ok(Response::new().add_attributes(vec![attr("action", "start_rage_quit")])) -} - -pub fn end_target_pool_migration( - deps: DepsMut, - info: MessageInfo, - env: Env, -) -> Result { - let mut config = CONFIG.load(deps.storage)?; - let mut attributes = vec![attr("action", "end_target_pool_migration")]; - - // the other options either manager can change alone - if info.sender != config.manager1 && info.sender != config.manager2 { - return Err(ContractError::Unauthorized {}); - } - - if config.rage_quit_started { - return Err(ContractError::RageQuitStarted {}); - } - - let (target_pool, lp_token) = get_pool_info(&deps.querier, &config, PoolType::Target)?; - - // checks if all LP tokens have been withdrawn from the generator - check_generator_deposit( - &deps.querier, - &config.generator_addr, - &lp_token, - &env.contract.address, - )?; - - // we cannot set the target pool to None - if config.migration_pool.is_none() { - return Err(ContractError::MigrationPoolError {}); - } - - // checks if all LP tokens have been withdrawn from the target pool - let total_amount = query_token_balance(&deps.querier, lp_token, env.contract.address)?; - if !total_amount.is_zero() { - return Err(ContractError::TargetPoolAmountError {}); - } - - attributes.push(attr("old_target_pool", target_pool.as_str())); - attributes.push(attr( - "old_migration_pool", - config.migration_pool.clone().unwrap().as_str(), - )); - config.target_pool = config.migration_pool.clone(); - config.migration_pool = None; - - attributes.push(attr( - "new_target_pool", - config.target_pool.clone().unwrap().as_str(), - )); - attributes.push(attr("new_migration_pool", "None")); - - CONFIG.save(deps.storage, &config)?; - - Ok(Response::new().add_attributes(attributes)) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { - Err(ContractError::MigrationError {}) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { - match msg { - QueryMsg::Config {} => to_json_binary(&query_config(deps)?), - QueryMsg::Proposal { proposal_id } => { - to_json_binary(&query_proposal(deps, env, proposal_id)?) - } - QueryMsg::Vote { proposal_id, voter } => { - to_json_binary(&query_vote(deps, proposal_id, voter)?) - } - QueryMsg::ListProposals { start_after, limit } => { - to_json_binary(&list_proposals(deps, env, start_after, limit)?) - } - QueryMsg::ReverseProposals { - start_before, - limit, - } => to_json_binary(&reverse_proposals(deps, env, start_before, limit)?), - QueryMsg::ListVotes { proposal_id } => to_json_binary(&list_votes(deps, proposal_id)?), - } -} - -fn query_config(deps: Deps) -> StdResult { - let cfg = CONFIG.load(deps.storage)?; - Ok(ConfigResponse { - threshold: cfg.threshold.to_response(cfg.total_weight), - max_voting_period: cfg.max_voting_period, - manager1: cfg.manager1.into(), - manager2: cfg.manager2.into(), - target_pool: cfg.target_pool, - migration_pool: cfg.migration_pool, - rage_quit_started: cfg.rage_quit_started, - denom1: cfg.denom1, - denom2: cfg.denom2, - factory: cfg.factory_addr.into(), - generator: cfg.generator_addr.to_string(), - }) -} - -fn query_proposal(deps: Deps, env: Env, id: u64) -> StdResult { - let prop = PROPOSALS.load(deps.storage, id)?; - let status = prop.current_status(&env.block); - let threshold = prop.threshold.to_response(prop.total_weight); - - Ok(ProposalResponse { - id, - title: prop.title, - description: prop.description, - msgs: prop.msgs, - status, - expires: prop.expires, - deposit: prop.deposit, - proposer: prop.proposer, - threshold, - }) -} - -fn list_proposals( - deps: Deps, - env: Env, - start_after: Option, - limit: Option, -) -> StdResult { - let limit = limit.unwrap_or(DEFAULT_LIMIT).min(MAX_LIMIT) as usize; - let start = start_after.map(Bound::exclusive); - - let proposals = PROPOSALS - .range(deps.storage, start, None, Order::Ascending) - .take(limit) - .map(|p| map_proposal(&env.block, p)) - .collect::>()?; - - Ok(ProposalListResponse { proposals }) -} - -fn reverse_proposals( - deps: Deps, - env: Env, - start_before: Option, - limit: Option, -) -> StdResult { - let limit = limit.unwrap_or(DEFAULT_LIMIT).min(MAX_LIMIT) as usize; - let end = start_before.map(Bound::exclusive); - - let props: StdResult> = PROPOSALS - .range(deps.storage, None, end, Order::Descending) - .take(limit) - .map(|p| map_proposal(&env.block, p)) - .collect(); - - Ok(ProposalListResponse { proposals: props? }) -} - -fn map_proposal( - block: &BlockInfo, - item: StdResult<(u64, Proposal)>, -) -> StdResult { - item.map(|(id, prop)| { - let status = prop.current_status(block); - let threshold = prop.threshold.to_response(prop.total_weight); - ProposalResponse { - id, - title: prop.title, - description: prop.description, - msgs: prop.msgs, - status, - deposit: prop.deposit, - proposer: prop.proposer, - expires: prop.expires, - threshold, - } - }) -} - -fn query_vote(deps: Deps, proposal_id: u64, voter: String) -> StdResult { - let voter = deps.api.addr_validate(&voter)?; - let cfg = CONFIG.load(deps.storage)?; - - let ballot; - if voter == cfg.manager1 { - ballot = BALLOTS.may_load(deps.storage, (proposal_id, &MultisigRole::Manager1))?; - } else if voter == cfg.manager2 { - ballot = BALLOTS.may_load(deps.storage, (proposal_id, &MultisigRole::Manager2))?; - } else { - return Err(StdError::generic_err(format!( - "Vote not found for: {}", - voter - ))); - } - - let vote = ballot.map(|vote| VoteInfo { - proposal_id, - vote, - voter: voter.to_string(), - weight: DEFAULT_WEIGHT, - }); - - Ok(VoteResponse { vote }) -} - -fn list_votes(deps: Deps, proposal_id: u64) -> StdResult { - let mut votes = vec![]; - - if let Some(vote_info) = load_vote(deps, (proposal_id, &MultisigRole::Manager1))? { - votes.push(vote_info); - } - - if let Some(vote_info) = load_vote(deps, (proposal_id, &MultisigRole::Manager2))? { - votes.push(vote_info); - } - - Ok(VoteListResponse { votes }) -} diff --git a/contracts/periphery/shared_multisig/src/error.rs b/contracts/periphery/shared_multisig/src/error.rs deleted file mode 100644 index ace0b252f..000000000 --- a/contracts/periphery/shared_multisig/src/error.rs +++ /dev/null @@ -1,104 +0,0 @@ -use cosmwasm_std::{DivideByZeroError, OverflowError, StdError}; -use thiserror::Error; - -#[derive(Error, Debug, PartialEq)] -pub enum ContractError { - #[error("{0}")] - Std(#[from] StdError), - - #[error("Unauthorized")] - Unauthorized {}, - - #[error("Proposal is not open")] - NotOpen {}, - - #[error("Proposal voting period has expired")] - Expired {}, - - #[error("Proposal must expire before you can close it")] - NotExpired {}, - - #[error("Wrong expiration option")] - WrongExpiration {}, - - #[error("Already voted on this proposal")] - AlreadyVoted {}, - - #[error("Proposal must have passed and not yet been executed")] - WrongExecuteStatus {}, - - #[error("Cannot close completed or passed proposals")] - WrongCloseStatus {}, - - #[error("Contract can't be migrated!")] - MigrationError {}, - - #[error("Target pool is not set")] - TargetPoolError {}, - - #[error("Target pool is already set")] - TargetPoolIsAlreadySet {}, - - #[error("Target pool is not empty")] - TargetPoolAmountError {}, - - #[error("Withdraw all LP tokens from the generator before migrating the target pool")] - GeneratorAmountError {}, - - #[error("Migration pool is not set")] - MigrationPoolError {}, - - #[error("Migration pool is already set")] - MigrationPoolIsAlreadySet {}, - - #[error("Complete migration from the target pool")] - MigrationNotCompleted {}, - - #[error("Target and migration pools cannot be the same")] - PoolsError {}, - - #[error("Unsupported pair type. Allowed pair types are: xyk, concentrated")] - PairTypeError {}, - - #[error("Operation is unavailable. Rage quit has already started")] - RageQuitStarted {}, - - #[error("Operation is unavailable. Rage quit is not started")] - RageQuitIsNotStarted {}, - - #[error("Unauthorized: {0} cannot transfer {1}")] - UnauthorizedTransfer(String, String), - - #[error("The asset {0} does not belong to the target pool")] - InvalidAsset(String), - - #[error("CW20 tokens unsupported in the target pool. Use native token instead")] - UnsupportedCw20 {}, - - #[error( - "Asset balance mismatch between the argument and the Multisig balance. \ - Available Multisig balance for {0}: {1}" - )] - AssetBalanceMismatch(String, String), - - #[error("Insufficient balance for: {0}. Available balance: {1}")] - BalanceToSmall(String, String), - - #[error("Invalid zero amount")] - InvalidZeroAmount {}, - - #[error("Claim all rewards from the generator before migrating the target pool")] - ClaimAmountError {}, -} - -impl From for ContractError { - fn from(o: OverflowError) -> Self { - StdError::from(o).into() - } -} - -impl From for ContractError { - fn from(err: DivideByZeroError) -> Self { - StdError::from(err).into() - } -} diff --git a/contracts/periphery/shared_multisig/src/lib.rs b/contracts/periphery/shared_multisig/src/lib.rs deleted file mode 100644 index 9f406168c..000000000 --- a/contracts/periphery/shared_multisig/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub mod contract; -mod error; -pub mod state; -mod utils; - -pub use crate::error::ContractError; diff --git a/contracts/periphery/shared_multisig/src/state.rs b/contracts/periphery/shared_multisig/src/state.rs deleted file mode 100644 index a5a1219b6..000000000 --- a/contracts/periphery/shared_multisig/src/state.rs +++ /dev/null @@ -1,107 +0,0 @@ -use cosmwasm_std::{Addr, Deps, StdResult, Storage, Uint128}; -use std::ops::Deref; - -use crate::ContractError; -use astroport::common::OwnershipProposal; -use astroport::shared_multisig::{Config, MultisigRole, DEFAULT_WEIGHT}; -use cw3::{Proposal, Vote, VoteInfo}; -use cw_storage_plus::{Item, Map}; - -pub const CONFIG: Item = Item::new("config"); -pub const PROPOSAL_COUNT: Item = Item::new("proposal_count"); - -pub const BALLOTS: Map<(u64, &MultisigRole), Vote> = Map::new("votes"); -pub const PROPOSALS: Map = Map::new("proposals"); - -/// Contains a proposal to change contract Manager One. -pub const MANAGER1_PROPOSAL: Item = Item::new("manager1_proposal"); - -/// Contains a proposal to change contract Manager Two. -pub const MANAGER2_PROPOSAL: Item = Item::new("manager2_proposal"); - -/// Key is reward token + manager -/// Values is amount of distributed rewards -pub const DISTRIBUTED_REWARDS: Map<(String, &MultisigRole), Uint128> = - Map::new("distributed_rewards"); - -// settings for pagination -pub const MAX_LIMIT: u32 = 30; -pub const DEFAULT_LIMIT: u32 = 10; - -pub fn next_id(store: &mut dyn Storage) -> StdResult { - let id: u64 = PROPOSAL_COUNT.may_load(store)?.unwrap_or_default() + 1; - PROPOSAL_COUNT.save(store, &id)?; - Ok(id) -} - -pub fn load_vote(deps: Deps, key: (u64, &MultisigRole)) -> StdResult> { - if let Some(vote) = BALLOTS.may_load(deps.storage, key)? { - return Ok(Some(VoteInfo { - proposal_id: key.0, - voter: key.1.to_string(), - vote, - weight: DEFAULT_WEIGHT, - })); - } - - Ok(None) -} - -pub fn released_rewards( - store: &dyn Storage, - denom: &String, - role: &MultisigRole, -) -> Result { - Ok( - if let Some(amount) = DISTRIBUTED_REWARDS.may_load(store, (denom.to_string(), role))? { - amount - } else { - Uint128::zero() - }, - ) -} - -pub(crate) fn update_distributed_rewards( - store: &mut dyn Storage, - denom: &String, - amount: Uint128, - total_amount: Uint128, - sender: &Addr, - cfg: &Config, -) -> Result<(), ContractError> { - let released_manager1 = released_rewards(store.deref(), denom, &MultisigRole::Manager1)?; - let released_manager2 = released_rewards(store.deref(), denom, &MultisigRole::Manager2)?; - - let sender_released = if sender == cfg.manager1 { - released_manager1 - } else { - released_manager2 - }; - - let allowed_amount = (total_amount + released_manager1 + released_manager2) - .checked_div(Uint128::new(2))? - .checked_sub(sender_released)?; - - if amount > allowed_amount { - return Err(ContractError::BalanceToSmall( - sender.to_string(), - allowed_amount.to_string(), - )); - } - - if sender == cfg.manager1 { - DISTRIBUTED_REWARDS.save( - store, - (denom.to_string(), &MultisigRole::Manager1), - &(sender_released + amount), - )?; - } else { - DISTRIBUTED_REWARDS.save( - store, - (denom.to_string(), &MultisigRole::Manager2), - &(sender_released + amount), - )?; - } - - Ok(()) -} diff --git a/contracts/periphery/shared_multisig/src/utils.rs b/contracts/periphery/shared_multisig/src/utils.rs deleted file mode 100644 index 61a6e2c14..000000000 --- a/contracts/periphery/shared_multisig/src/utils.rs +++ /dev/null @@ -1,208 +0,0 @@ -use crate::ContractError; -use astroport::asset::{Asset, AssetInfo, PairInfo}; -use astroport::pair::ExecuteMsg as PairExecuteMsg; -use astroport::pair::{Cw20HookMsg as PairCw20HookMsg, QueryMsg as PairQueryMsg}; - -use astroport::factory::PairType; -use astroport::generator::QueryMsg as GeneratorQueryMsg; -use astroport::querier::{query_balance, query_pair_info, query_token_balance}; -use astroport::shared_multisig::{Config, PoolType, ProvideParams}; -use cosmwasm_std::{ - attr, to_json_binary, Addr, Attribute, CosmosMsg, Decimal, QuerierWrapper, StdError, StdResult, - Uint128, WasmMsg, -}; -use cw20::Cw20ExecuteMsg; -use itertools::Itertools; - -pub(crate) fn prepare_provide_after_withdraw_msg( - querier: &QuerierWrapper, - cfg: &Config, - burn_amount: Uint128, - burn_pool: &Addr, - provide_params: ProvideParams, - attributes: &mut Vec, -) -> Result { - // we should check if migration pool exists and than provide - let (migration_pool, _) = get_pool_info(querier, cfg, PoolType::Migration)?; - - let assets: Vec = querier.query_wasm_smart( - burn_pool, - &PairQueryMsg::Share { - amount: burn_amount, - }, - )?; - - attributes.push(attr("second_action", "provide")); - attributes.push(attr("provide_pool", migration_pool.to_string().as_str())); - attributes.push(attr("provide_assets", assets.iter().join(", "))); - - Ok(prepare_provide_msg( - &migration_pool, - assets, - provide_params.slippage_tolerance, - provide_params.auto_stake, - )?) -} - -pub(crate) fn prepare_withdraw_msg( - querier: &QuerierWrapper, - account_addr: &Addr, - pair: &Addr, - lp_token: &Addr, - amount: Option, -) -> Result<(CosmosMsg, Uint128), ContractError> { - let total_amount = query_token_balance(querier, lp_token, account_addr)?; - let burn_amount = amount.unwrap_or(total_amount); - if burn_amount > total_amount { - return Err(ContractError::BalanceToSmall( - account_addr.to_string(), - total_amount.to_string(), - )); - } - - Ok(( - CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: lp_token.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Send { - contract: pair.to_string(), - msg: to_json_binary(&PairCw20HookMsg::WithdrawLiquidity { assets: vec![] })?, - amount: burn_amount, - })?, - funds: vec![], - }), - burn_amount, - )) -} - -pub(crate) fn prepare_provide_msg( - contract_addr: &Addr, - assets: Vec, - slippage_tolerance: Option, - auto_stake: Option, -) -> StdResult { - Ok(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: contract_addr.to_string(), - funds: assets - .iter() - .map(|asset| asset.as_coin()) - .collect::>()?, - msg: to_json_binary(&PairExecuteMsg::ProvideLiquidity { - assets, - slippage_tolerance, - auto_stake, - receiver: None, - })?, - })) -} - -pub(crate) fn check_provide_assets( - querier: &QuerierWrapper, - account: &Addr, - assets: &[Asset], - cfg: &Config, -) -> Result<(), ContractError> { - for asset in assets { - let denom = check_denom(&asset.info, cfg)?; - - let balance = query_balance(querier, account, denom)?; - if asset.amount > balance { - return Err(ContractError::AssetBalanceMismatch( - asset.info.to_string(), - balance.to_string(), - )); - } - } - - Ok(()) -} - -pub(crate) fn check_denom(asset_info: &AssetInfo, cfg: &Config) -> Result { - let denom = match &asset_info { - AssetInfo::NativeToken { denom } => &**denom, - AssetInfo::Token { .. } => return Err(ContractError::UnsupportedCw20 {}), - }; - - if cfg.denom1 != denom && cfg.denom2 != denom { - return Err(ContractError::InvalidAsset(denom.to_string())); - } - - Ok(denom.to_string()) -} - -pub(crate) fn check_pool( - querier: &QuerierWrapper, - contract_addr: &Addr, - cfg: &Config, -) -> Result<(), ContractError> { - // check pair assets - let pair: PairInfo = querier.query_wasm_smart(contract_addr, &PairQueryMsg::Pair {})?; - for asset_info in &pair.asset_infos { - check_denom(asset_info, cfg)?; - } - - // check if pair is registered in the factory - let pair_info: PairInfo = query_pair_info(querier, &cfg.factory_addr, &pair.asset_infos) - .map_err(|_| { - ContractError::Std(StdError::generic_err(format!( - "The pair is not registered: {}-{}", - cfg.denom1, cfg.denom2 - ))) - })?; - - // check if pool type is either xyk or PCL - if !pair_info.pair_type.eq(&PairType::Xyk {}) - && !pair_info - .pair_type - .eq(&PairType::Custom("concentrated".to_string())) - { - return Err(ContractError::PairTypeError {}); - } - - Ok(()) -} - -pub(crate) fn get_pool_info( - querier: &QuerierWrapper, - cfg: &Config, - pool_type: PoolType, -) -> Result<(Addr, Addr), ContractError> { - match pool_type { - PoolType::Target => match &cfg.target_pool { - Some(target_pool) => { - let pair_info: PairInfo = - querier.query_wasm_smart(target_pool, &PairQueryMsg::Pair {})?; - Ok((target_pool.clone(), pair_info.liquidity_token)) - } - None => Err(ContractError::TargetPoolError {}), - }, - PoolType::Migration => match &cfg.migration_pool { - Some(migration_pool) => { - let pair_info: PairInfo = - querier.query_wasm_smart(migration_pool, &PairQueryMsg::Pair {})?; - Ok((migration_pool.clone(), pair_info.liquidity_token)) - } - None => Err(ContractError::MigrationPoolError {}), - }, - } -} - -pub(crate) fn check_generator_deposit( - querier: &QuerierWrapper, - generator_addr: &Addr, - lp_token: &Addr, - user: &Addr, -) -> Result<(), ContractError> { - let generator_total_amount: Uint128 = querier.query_wasm_smart( - generator_addr, - &GeneratorQueryMsg::Deposit { - lp_token: lp_token.to_string(), - user: user.to_string(), - }, - )?; - - if !generator_total_amount.is_zero() { - return Err(ContractError::GeneratorAmountError {}); - } - - Ok(()) -} diff --git a/contracts/periphery/shared_multisig/tests/integration.rs b/contracts/periphery/shared_multisig/tests/integration.rs deleted file mode 100644 index edb4eecaa..000000000 --- a/contracts/periphery/shared_multisig/tests/integration.rs +++ /dev/null @@ -1,2291 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -use astroport::asset::{Asset, AssetInfo}; -use astroport::generator::PendingTokenResponse; -use cosmwasm_std::{to_json_binary, Addr, Coin, CosmosMsg, Decimal, Uint128, WasmMsg}; -use cw20::Cw20ExecuteMsg; -use cw3::{Status, Vote, VoteInfo, VoteListResponse, VoteResponse}; -use cw_utils::{Duration, ThresholdResponse}; -use std::{cell::RefCell, rc::Rc}; - -use astroport::shared_multisig::{ExecuteMsg, PoolType, ProvideParams}; - -use astroport_mocks::cw_multi_test::{App, Executor}; -use astroport_mocks::shared_multisig::MockSharedMultisigBuilder; -use astroport_mocks::{astroport_address, MockFactoryBuilder, MockGeneratorBuilder}; - -fn mock_app(owner: &Addr, coins: Option>) -> App { - let app = App::new(|router, _, storage| { - // initialization moved to App construction - router - .bank - .init_balance(storage, &owner, coins.unwrap_or_default()) - .unwrap(); - }); - - app -} - -const OWNER: &str = "owner"; -const MANAGER1: &str = "manager1"; -const MANAGER2: &str = "manager2"; -const CHEATER: &str = "cheater"; - -#[test] -fn proper_initialization() { - let manager2 = Addr::unchecked("manager2"); - let manager1 = Addr::unchecked("manager1"); - - let router = Rc::new(RefCell::new(App::default())); - - let factory = MockFactoryBuilder::new(&router).instantiate(); - let shared_multisig = - MockSharedMultisigBuilder::new(&router).instantiate(&factory.address, None, None); - - let config_res = shared_multisig.query_config().unwrap(); - - assert_eq!(manager2, config_res.manager2); - assert_eq!(manager1, config_res.manager1); - assert_eq!(Duration::Height(3), config_res.max_voting_period); - assert_eq!( - ThresholdResponse::AbsoluteCount { - weight: 2, - total_weight: 2 - }, - config_res.threshold - ); -} - -#[test] -fn check_update_manager2() { - let manager1 = Addr::unchecked("manager1"); - let manager2 = Addr::unchecked("manager2"); - let new_manager = Addr::unchecked("new_manager"); - - let router = Rc::new(RefCell::new(App::default())); - let factory = MockFactoryBuilder::new(&router).instantiate(); - let shared_multisig = - MockSharedMultisigBuilder::new(&router).instantiate(&factory.address, None, None); - - // New manager - let msg = ExecuteMsg::ProposeNewManager2 { - new_manager: "new_manager".to_string(), - expires_in: 100, // seconds - }; - - let err = router - .borrow_mut() - .execute_contract(manager1.clone(), shared_multisig.address.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Generic error: Unauthorized"); - - // Claim before proposal - let err = router - .borrow_mut() - .execute_contract( - new_manager.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::ClaimManager1 {}, - &[], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Generic error: Ownership proposal not found" - ); - - // Try to propose new manager2 - router - .borrow_mut() - .execute_contract(manager2.clone(), shared_multisig.address.clone(), &msg, &[]) - .unwrap(); - - // Claim from manager1 - let err = router - .borrow_mut() - .execute_contract( - manager1.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::ClaimManager2 {}, - &[], - ) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Generic error: Unauthorized"); - - // Drop manager1 proposal - let err = router - .borrow_mut() - .execute_contract( - new_manager.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::DropManager1Proposal {}, - &[], - ) - .unwrap_err(); - - // new_manager is not an manager1 yet - assert_eq!(err.root_cause().to_string(), "Generic error: Unauthorized"); - - router - .borrow_mut() - .execute_contract( - manager2.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::DropManager2Proposal {}, - &[], - ) - .unwrap(); - - // Try to claim manager2 - let err = router - .borrow_mut() - .execute_contract( - new_manager.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::ClaimManager2 {}, - &[], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Generic error: Ownership proposal not found" - ); - - // Propose new manager again - router - .borrow_mut() - .execute_contract(manager2.clone(), shared_multisig.address.clone(), &msg, &[]) - .unwrap(); - - // Claim manager2 - router - .borrow_mut() - .execute_contract( - new_manager.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::ClaimManager2 {}, - &[], - ) - .unwrap(); - - // Let's query the contract state - let res = shared_multisig.query_config().unwrap(); - - assert_eq!(res.manager2, new_manager); - assert_eq!(res.manager1, manager1); -} - -#[test] -fn check_update_manager1() { - let manager2 = Addr::unchecked("manager2"); - let manager1 = Addr::unchecked("manager1"); - let new_manager1 = Addr::unchecked("new_manager1"); - - let router = Rc::new(RefCell::new(App::default())); - let factory = MockFactoryBuilder::new(&router).instantiate(); - let shared_multisig = - MockSharedMultisigBuilder::new(&router).instantiate(&factory.address, None, None); - - // New manager1 - let msg = ExecuteMsg::ProposeNewManager1 { - new_manager: new_manager1.to_string(), - expires_in: 100, // seconds - }; - - let err = router - .borrow_mut() - .execute_contract(manager2.clone(), shared_multisig.address.clone(), &msg, &[]) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Generic error: Unauthorized"); - - // Claim before proposal - let err = router - .borrow_mut() - .execute_contract( - new_manager1.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::ClaimManager1 {}, - &[], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Generic error: Ownership proposal not found" - ); - - // Try to propose new manager1 - router - .borrow_mut() - .execute_contract(manager1.clone(), shared_multisig.address.clone(), &msg, &[]) - .unwrap(); - - // Claim from manager2 - let err = router - .borrow_mut() - .execute_contract( - manager2.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::ClaimManager1 {}, - &[], - ) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Generic error: Unauthorized"); - - // Drop manager1 proposal - let err = router - .borrow_mut() - .execute_contract( - new_manager1.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::DropManager1Proposal {}, - &[], - ) - .unwrap_err(); - - // new_manager1 is not an manager1 yet - assert_eq!(err.root_cause().to_string(), "Generic error: Unauthorized"); - - router - .borrow_mut() - .execute_contract( - manager1.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::DropManager1Proposal {}, - &[], - ) - .unwrap(); - - // Try to claim manager1 - let err = router - .borrow_mut() - .execute_contract( - new_manager1.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::ClaimManager1 {}, - &[], - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Generic error: Ownership proposal not found" - ); - - // Propose new manager1 again - router - .borrow_mut() - .execute_contract(manager1.clone(), shared_multisig.address.clone(), &msg, &[]) - .unwrap(); - - // Claim manager1 - router - .borrow_mut() - .execute_contract( - new_manager1.clone(), - shared_multisig.address.clone(), - &ExecuteMsg::ClaimManager1 {}, - &[], - ) - .unwrap(); - - // Let's query the contract state - let res = shared_multisig.query_config().unwrap(); - assert_eq!(res.manager2, manager2); - assert_eq!(res.manager1, new_manager1); -} - -#[test] -fn test_proposal() { - let manager1 = Addr::unchecked(MANAGER1); - let manager2 = Addr::unchecked(MANAGER2); - let cheater = Addr::unchecked(CHEATER); - let astroport = astroport_address(); - - let denom1 = String::from("untrn"); - let denom2 = String::from("ibc/astro"); - let denom3 = String::from("usdt"); - - let router = Rc::new(RefCell::new(mock_app( - &astroport, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom3, - amount: Uint128::new(100_000_000_000u128), - }, - ]), - ))); - - let factory = MockFactoryBuilder::new(&router).instantiate(); - let coin_registry = factory.coin_registry(); - coin_registry.add(vec![(denom1.to_owned(), 6), (denom2.to_owned(), 6)]); - - let pcl = factory.instantiate_concentrated_pair( - &[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ], - None, - ); - - let shared_multisig = - MockSharedMultisigBuilder::new(&router).instantiate(&factory.address, None, None); - - let setup_pools_msg = CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: shared_multisig.address.to_string(), - msg: to_json_binary(&ExecuteMsg::SetupPools { - target_pool: None, - migration_pool: Some(pcl.address.to_string()), - }) - .unwrap(), - funds: vec![], - }); - - // try to propose from cheater - let err = shared_multisig - .propose(&cheater, vec![setup_pools_msg.clone()]) - .unwrap_err(); - assert_eq!("Unauthorized", err.root_cause().to_string()); - - // try to propose from manager1 - shared_multisig - .propose(&manager1, vec![setup_pools_msg.clone()]) - .unwrap(); - - // Try to vote from cheater - let err = shared_multisig.vote(&cheater, 1, Vote::Yes).unwrap_err(); - assert_eq!("Unauthorized", err.root_cause().to_string()); - - // Try to execute from cheater - let err = shared_multisig.execute(&cheater, 1).unwrap_err(); - assert_eq!( - "Proposal must have passed and not yet been executed", - err.root_cause().to_string() - ); - - // Try to execute from manager1 - let err = shared_multisig.execute(&manager1, 1).unwrap_err(); - assert_eq!( - "Proposal must have passed and not yet been executed", - err.root_cause().to_string() - ); - - // Check manager1 vote - let res = shared_multisig.query_vote(1, &manager1).unwrap(); - assert_eq!( - res, - VoteResponse { - vote: Some(VoteInfo { - proposal_id: 1, - voter: manager1.to_string(), - vote: Vote::Yes, - weight: 1 - }), - } - ); - - // Check manager2 vote - let res = shared_multisig.query_vote(1, &manager2).unwrap(); - assert_eq!(res.vote, None); - - // Try to vote from manager2 - shared_multisig.vote(&manager2, 1, Vote::No).unwrap(); - - // Check manager2 vote - let res = shared_multisig.query_vote(1, &manager2).unwrap(); - assert_eq!( - res, - VoteResponse { - vote: Some(VoteInfo { - proposal_id: 1, - voter: manager2.to_string(), - vote: Vote::No, - weight: 1 - }) - } - ); - - // Check manager2 vote - let res = shared_multisig.query_votes(1).unwrap(); - assert_eq!( - res, - VoteListResponse { - votes: vec![ - VoteInfo { - proposal_id: 1, - voter: "manager1".to_string(), - vote: Vote::Yes, - weight: 1 - }, - VoteInfo { - proposal_id: 1, - voter: "manager2".to_string(), - vote: Vote::No, - weight: 1 - } - ] - } - ); - - // Try to vote from Manager2 - let err = shared_multisig.vote(&manager2, 1, Vote::Yes).unwrap_err(); - assert_eq!( - "Already voted on this proposal", - err.root_cause().to_string() - ); - - // try to propose the second proposal from manager1 - shared_multisig - .propose(&manager1, vec![setup_pools_msg.clone()]) - .unwrap(); - - router.borrow_mut().update_block(|b| { - b.height += 4; - }); - - // check that the first proposal is rejected - let res = shared_multisig.query_proposal(1).unwrap(); - assert_eq!(res.status, Status::Rejected); - - // Try to vote from Manager2 - let err = shared_multisig.vote(&manager2, 2, Vote::Yes).unwrap_err(); - assert_eq!( - "Proposal voting period has expired", - err.root_cause().to_string() - ); - - // try to execute the second proposal from the cheater - let err = shared_multisig.execute(&cheater, 2).unwrap_err(); - assert_eq!( - "Proposal must have passed and not yet been executed", - err.root_cause().to_string() - ); - - // check that the second proposal is rejected - let res = shared_multisig.query_proposal(2).unwrap(); - assert_eq!(res.status, Status::Rejected); - - // Try to setup max voting period config from Manager2 - let err = shared_multisig - .setup_max_voting_period(&manager2, Duration::Height(10)) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Unauthorized"); - - // Try to setup max voting period config direct from multisig - shared_multisig - .setup_max_voting_period(&shared_multisig.address, Duration::Height(10)) - .unwrap(); - - // check configuration - let res = shared_multisig.query_config().unwrap(); - assert_eq!(res.max_voting_period, Duration::Height(10)); - - // try to propose from manager1 - shared_multisig - .propose(&manager1, vec![setup_pools_msg.clone()]) - .unwrap(); - - // Try to vote from Manager2 - shared_multisig.vote(&manager2, 3, Vote::Yes).unwrap(); - - // Try to execute the third proposal - shared_multisig.execute(&manager2, 3).unwrap(); - - // check configuration - let res = shared_multisig.query_config().unwrap(); - assert_eq!(res.target_pool, None); - assert_eq!(res.migration_pool, Some(pcl.address)); -} - -#[test] -fn test_transfer() { - let manager1 = Addr::unchecked(MANAGER1); - let manager2 = Addr::unchecked(MANAGER2); - let owner = Addr::unchecked(OWNER); - let recipient = Addr::unchecked("recipient"); - - let denom1 = String::from("untrn"); - let denom2 = String::from("ibc/astro"); - let denom3 = String::from("usdt"); - - let router = Rc::new(RefCell::new(mock_app( - &owner, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom3.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - ]), - ))); - - let factory = MockFactoryBuilder::new(&router).instantiate(); - let shared_multisig = - MockSharedMultisigBuilder::new(&router).instantiate(&factory.address, None, None); - - // Sends tokens to the multisig - shared_multisig - .send_tokens( - &owner, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(200_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(200_000_000u128), - }, - Coin { - denom: denom3.clone(), - amount: Uint128::new(300_000_000u128), - }, - ]), - None, - ) - .unwrap(); - - // Check the recipient's balance utrn - let res = shared_multisig - .query_native_balance(Some(recipient.as_str()), denom1.as_str()) - .unwrap(); - assert_eq!(res.amount, Uint128::zero()); - assert_eq!(res.denom, denom1.clone()); - - // Check the recipient's balance - let res = shared_multisig - .query_native_balance(Some(recipient.as_str()), denom2.as_str()) - .unwrap(); - assert_eq!(res.amount, Uint128::zero()); - assert_eq!(res.denom, denom2.clone()); - - // Check the recipient's balance - let res = shared_multisig - .query_native_balance(Some(recipient.as_str()), denom3.as_str()) - .unwrap(); - assert_eq!(res.amount, Uint128::zero()); - assert_eq!(res.denom, denom3); - - // Check the holder's balance - let res = shared_multisig - .query_native_balance(None, denom1.as_str()) - .unwrap(); - assert_eq!(res.amount, Uint128::new(200_000_000)); - assert_eq!(res.denom, denom1); - - // Check the holder's balance - let res = shared_multisig - .query_native_balance(None, denom2.as_str()) - .unwrap(); - assert_eq!(res.amount, Uint128::new(200_000_000)); - assert_eq!(res.denom, denom2); - - // Check the holder's balance - let res = shared_multisig - .query_native_balance(None, denom3.as_str()) - .unwrap(); - assert_eq!(res.amount, Uint128::new(300_000_000)); - assert_eq!(res.denom, denom3); - - // try to transfer when rage quit is not started yet - let err = shared_multisig - .transfer( - &manager2, - Asset { - info: AssetInfo::NativeToken { - denom: denom1.to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap_err(); - assert_eq!( - "Operation is unavailable. Rage quit is not started", - err.root_cause().to_string() - ); - - // try to transfer when rage quit is not started yet - let err = shared_multisig - .transfer( - &manager2, - Asset { - info: AssetInfo::NativeToken { - denom: denom2.to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap_err(); - assert_eq!( - "Operation is unavailable. Rage quit is not started", - err.root_cause().to_string() - ); - - // try to transfer denom3 when rage quit is not started yet - shared_multisig - .transfer( - &manager2, - Asset { - info: AssetInfo::NativeToken { - denom: denom3.to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap(); - - // try to update config from manager1 - shared_multisig.start_rage_quit(&manager2).unwrap(); - - // try to transfer denom1 from manager2 - let err = shared_multisig - .transfer( - &manager2, - Asset { - info: AssetInfo::NativeToken { - denom: denom1.to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap_err(); - assert_eq!( - "Unauthorized: manager2 cannot transfer untrn", - err.root_cause().to_string() - ); - - // try to transfer denom1 from manager1 - shared_multisig - .transfer( - &manager1, - Asset { - info: AssetInfo::NativeToken { - denom: denom1.to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap(); - - // try to transfer denom2 from manager1 - let err = shared_multisig - .transfer( - &manager1, - Asset { - info: AssetInfo::NativeToken { - denom: denom2.to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap_err(); - assert_eq!( - "Unauthorized: manager1 cannot transfer ibc/astro", - err.root_cause().to_string() - ); - - // try to transfer denom2 from manager2 - shared_multisig - .transfer( - &manager2, - Asset { - info: AssetInfo::NativeToken { - denom: denom2.to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap(); - - // try to transfer usdt from manager1 - shared_multisig - .transfer( - &manager1, - Asset { - info: AssetInfo::NativeToken { - denom: denom3.to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap(); - - // try to transfer usdt from manager2 - let err = shared_multisig - .transfer( - &manager2, - Asset { - info: AssetInfo::NativeToken { - denom: denom3.to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Insufficient balance for: manager2. Available balance: 50000000" - ); - - // try to transfer usdt from manager2 - let err = shared_multisig - .transfer( - &manager1, - Asset { - info: AssetInfo::NativeToken { - denom: denom3.to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Insufficient balance for: manager1. Available balance: 50000000" - ); - - // try to transfer usdt from manager2 - shared_multisig - .transfer( - &manager2, - Asset { - info: AssetInfo::NativeToken { - denom: denom3.to_string(), - }, - amount: Uint128::new(50_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap(); - - // try to transfer usdt from manager2 - let err = shared_multisig - .transfer( - &manager2, - Asset { - info: AssetInfo::NativeToken { - denom: denom3.to_string(), - }, - amount: Uint128::new(50_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Insufficient balance for: manager2. Available balance: 0" - ); - - shared_multisig - .transfer( - &manager1, - Asset { - info: AssetInfo::NativeToken { - denom: denom3.to_string(), - }, - amount: Uint128::new(50_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap(); - - // Check the recipient's balance denom1 - let res = shared_multisig - .query_native_balance(Some(recipient.as_str()), &denom1) - .unwrap(); - assert_eq!(res.amount, Uint128::new(100_000_000)); - assert_eq!(res.denom, denom1); - - // Check the recipient's balance denom2 - let res = shared_multisig - .query_native_balance(Some(recipient.as_str()), &denom2) - .unwrap(); - assert_eq!(res.amount, Uint128::new(100_000_000)); - assert_eq!(res.denom, denom2); - - // Check the recipient's balance denom3 - let res = shared_multisig - .query_native_balance(Some(recipient.as_str()), &denom3) - .unwrap(); - assert_eq!(res.amount, Uint128::new(300_000_000)); - assert_eq!(res.denom, denom3); - - // Check the holder's balance - let res = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(res.amount, Uint128::new(100_000_000)); - assert_eq!(res.denom, denom1); - - // Check the holder's balance - let res = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(res.amount, Uint128::new(100_000_000)); - assert_eq!(res.denom, denom2); - - // Check the holder's balance - let res = shared_multisig.query_native_balance(None, &denom3).unwrap(); - assert_eq!(res.amount, Uint128::zero()); - assert_eq!(res.denom, denom3); -} - -#[test] -fn test_target_pool() { - let manager1 = Addr::unchecked(MANAGER1); - let manager2 = Addr::unchecked(MANAGER2); - let owner = Addr::unchecked(OWNER); - let denom1 = String::from("untrn"); - let denom2 = String::from("ibc/astro"); - let denom3 = String::from("usdt"); - - let router = Rc::new(RefCell::new(mock_app( - &owner, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom3, - amount: Uint128::new(100_000_000_000u128), - }, - ]), - ))); - - let factory = MockFactoryBuilder::new(&router).instantiate(); - let coin_registry = factory.coin_registry(); - coin_registry.add(vec![(denom1.to_owned(), 6), (denom2.to_owned(), 6)]); - - let pcl = factory.instantiate_concentrated_pair( - &[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ], - None, - ); - - let pcl_pair_info = pcl.pair_info(); - assert_eq!( - pcl_pair_info.asset_infos, - vec![ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ] - ); - - let shared_multisig = - MockSharedMultisigBuilder::new(&router).instantiate(&factory.address, None, None); - - // Sends tokens to the multisig - shared_multisig.send_tokens(&owner, None, None).unwrap(); - - // try to provide from manager1 - let err = shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Target pool is not set"); - - // Direct set up target pool without proposal - shared_multisig - .setup_pools( - &shared_multisig.address, - Some(pcl.address.to_string()), - None, - ) - .unwrap(); - - let config = shared_multisig.query_config().unwrap(); - assert_eq!(config.target_pool, Some(pcl.address)); - - // try to provide from manager1 - shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap(); - - // try to withdraw from target - let err = shared_multisig.withdraw(&manager1, None, None).unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Migration pool is not set"); - - // Check the holder's balance for denom1 - let denom1_before = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(denom1_before.amount, Uint128::new(800_000_000)); - assert_eq!(denom1_before.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let denom1_before = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(denom1_before.amount, Uint128::new(800_000_000)); - assert_eq!(denom1_before.denom, denom2.clone()); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&pcl_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(99_999_000)); - - // deregister the target pool - factory - .deregister_pair(&[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ]) - .unwrap(); - - // create the migration pool - let pcl_2 = factory.instantiate_concentrated_pair( - &[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ], - None, - ); - - // Direct set up migration pool without proposal - shared_multisig - .setup_pools( - &shared_multisig.address, - None, - Some(pcl_2.address.to_string()), - ) - .unwrap(); - - // try to provide from manager1 - let err = shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Migration pool is already set" - ); - - // try to withdraw from target pool - shared_multisig.withdraw(&manager2, None, None).unwrap(); - - // Check the holder's balance for denom1 - let denom1_before = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(denom1_before.amount, Uint128::new(899_998_999)); - assert_eq!(denom1_before.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let denom1_before = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(denom1_before.amount, Uint128::new(899_998_999)); - assert_eq!(denom1_before.denom, denom2.clone()); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&pcl_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::zero()); - - // try to update config from manager1 - shared_multisig.start_rage_quit(&manager2).unwrap(); - - // check if rage quit started - let res = shared_multisig.query_config().unwrap(); - assert_eq!(res.rage_quit_started, true); - - // check if rage quit cannot be set back to false - let err = shared_multisig.start_rage_quit(&manager2).unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is unavailable. Rage quit has already started" - ); - - // try to provide after rage quit started - let err = shared_multisig - .provide(&manager2, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is unavailable. Rage quit has already started" - ); -} - -#[test] -fn test_provide_withdraw_pcl() { - let astroport = astroport_address(); - let manager1 = Addr::unchecked(MANAGER1); - let manager2 = Addr::unchecked(MANAGER2); - let recipient = Addr::unchecked("recipient"); - - let denom1 = String::from("untrn"); - let denom2 = String::from("ibc/astro"); - let denom3 = String::from("usdt"); - - let router = Rc::new(RefCell::new(mock_app( - &astroport, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom3, - amount: Uint128::new(100_000_000_000u128), - }, - ]), - ))); - - let factory = MockFactoryBuilder::new(&router).instantiate(); - let coin_registry = factory.coin_registry(); - coin_registry.add(vec![(denom1.to_owned(), 6), (denom2.to_owned(), 6)]); - - let pcl = factory.instantiate_concentrated_pair( - &[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ], - None, - ); - - let pcl_pair_info = pcl.pair_info(); - let shared_multisig = - MockSharedMultisigBuilder::new(&router).instantiate(&factory.address, None, None); - - // Direct set up target pool without proposal - shared_multisig - .setup_pools( - &shared_multisig.address, - Some(pcl.address.to_string()), - None, - ) - .unwrap(); - - let config = shared_multisig.query_config().unwrap(); - assert_eq!(config.target_pool, Some(pcl.address)); - - // try to provide from recipient - let err = shared_multisig - .provide(&recipient, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Unauthorized"); - - // try to provide without funds on multisig from manager1 - let err = shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Asset balance mismatch between the argument and the \ - Multisig balance. Available Multisig balance for untrn: 0" - ); - - // Sends tokens to the multisig - shared_multisig.send_tokens(&astroport, None, None).unwrap(); - - // Check the holder's balance for denom1 - let res = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(res.amount, Uint128::new(900_000_000)); - assert_eq!(res.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let res = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(res.amount, Uint128::new(900_000_000)); - assert_eq!(res.denom, denom2.clone()); - - // try to provide from manager1 - shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap(); - - // send tokens to the recipient - shared_multisig - .send_tokens(&astroport, None, Some(recipient.clone())) - .unwrap(); - - // try to swap tokens - for _ in 0..10 { - shared_multisig - .swap( - &recipient, - &pcl_pair_info.contract_addr, - &denom1, - 10_000_000, - None, - None, - Some(Decimal::from_ratio(5u128, 10u128)), - None, - ) - .unwrap(); - - router.borrow_mut().update_block(|b| { - b.height += 1200; - b.time = b.time.plus_seconds(3600); - }); - - shared_multisig - .swap( - &recipient, - &pcl_pair_info.contract_addr, - &denom2, - 15_000_000, - None, - None, - Some(Decimal::from_ratio(5u128, 10u128)), - None, - ) - .unwrap(); - - router.borrow_mut().update_block(|b| { - b.height += 100; - }); - - // try to provide from manager2 - shared_multisig - .provide( - &manager2, - PoolType::Target, - Some(vec![ - Asset { - info: AssetInfo::NativeToken { - denom: denom1.clone(), - }, - amount: Uint128::new(10_000_000), - }, - Asset { - info: AssetInfo::NativeToken { - denom: denom2.clone(), - }, - amount: Uint128::new(10_000_000), - }, - ]), - Some(Decimal::from_ratio(5u128, 10u128)), - None, - None, - ) - .unwrap(); - } - - router.borrow_mut().update_block(|b| { - b.time = b.time.plus_seconds(86400 * 7); - }); - - // Check the holder's balance for denom1 - let res = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(res.amount, Uint128::new(700_000_000)); - assert_eq!(res.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let res = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(res.amount, Uint128::new(700_000_000)); - assert_eq!(res.denom, denom2.clone()); - - // try to provide from manager2 - shared_multisig - .provide( - &manager2, - PoolType::Target, - None, - Some(Decimal::from_ratio(5u128, 10u128)), - None, - None, - ) - .unwrap(); - - // Check the holder's balance for denom1 - let res = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(res.amount, Uint128::new(600_000_000)); - assert_eq!(res.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let res = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(res.amount, Uint128::new(600_000_000)); - assert_eq!(res.denom, denom2.clone()); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&pcl_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(301_118_256)); -} - -#[test] -fn test_provide_withdraw_xyk() { - let astroport = astroport_address(); - let manager1 = Addr::unchecked(MANAGER1); - let manager2 = Addr::unchecked(MANAGER2); - let recipient = Addr::unchecked("recipient"); - - let denom1 = String::from("untrn"); - let denom2 = String::from("ibc/astro"); - let denom3 = String::from("usdt"); - - let router = Rc::new(RefCell::new(mock_app( - &astroport, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom3, - amount: Uint128::new(100_000_000_000u128), - }, - ]), - ))); - - let factory = MockFactoryBuilder::new(&router).instantiate(); - let coin_registry = factory.coin_registry(); - coin_registry.add(vec![(denom1.to_owned(), 6), (denom2.to_owned(), 6)]); - - let xyk = factory.instantiate_xyk_pair(&[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ]); - - let xyk_pair_info = xyk.pair_info().unwrap(); - let shared_multisig = - MockSharedMultisigBuilder::new(&router).instantiate(&factory.address, None, None); - - // Direct set up target pool without proposal - shared_multisig - .setup_pools( - &shared_multisig.address, - Some(xyk.address.to_string()), - None, - ) - .unwrap(); - - let config = shared_multisig.query_config().unwrap(); - assert_eq!(config.target_pool, Some(xyk.address)); - - // try to provide from recipient - let err = shared_multisig - .provide(&recipient, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Unauthorized"); - - // try to provide without funds on multisig from manager1 - let err = shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Asset balance mismatch between the argument and the \ - Multisig balance. Available Multisig balance for untrn: 0" - ); - - // Sends tokens to the multisig - shared_multisig.send_tokens(&astroport, None, None).unwrap(); - - // Check the holder's balance for denom1 - let res = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(res.amount, Uint128::new(900_000_000)); - assert_eq!(res.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let res = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(res.amount, Uint128::new(900_000_000)); - assert_eq!(res.denom, denom2.clone()); - - // try to provide from manager1 - shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap(); - - // send tokens to the recipient - shared_multisig - .send_tokens(&astroport, None, Some(recipient.clone())) - .unwrap(); - - // try to swap tokens - for _ in 0..10 { - shared_multisig - .swap( - &recipient, - &xyk_pair_info.contract_addr, - &denom1, - 10_000_000, - None, - None, - Some(Decimal::from_ratio(5u128, 10u128)), - None, - ) - .unwrap(); - - router.borrow_mut().update_block(|b| { - b.height += 1400; - }); - - shared_multisig - .swap( - &recipient, - &xyk_pair_info.contract_addr, - &denom2, - 15_000_000, - None, - None, - Some(Decimal::from_ratio(5u128, 10u128)), - None, - ) - .unwrap(); - - router.borrow_mut().update_block(|b| { - b.height += 100; - }); - - // try to provide from manager2 - shared_multisig - .provide( - &manager2, - PoolType::Target, - Some(vec![ - Asset { - info: AssetInfo::NativeToken { - denom: denom1.clone(), - }, - amount: Uint128::new(10_000_000), - }, - Asset { - info: AssetInfo::NativeToken { - denom: denom2.clone(), - }, - amount: Uint128::new(10_000_000), - }, - ]), - Some(Decimal::from_ratio(5u128, 10u128)), - None, - None, - ) - .unwrap(); - } - - router.borrow_mut().update_block(|b| { - b.height += 500; - b.time = b.time.plus_seconds(86400); - }); - - // Check the holder's balance for denom1 - let res = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(res.amount, Uint128::new(700_000_000)); - assert_eq!(res.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let res = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(res.amount, Uint128::new(700_000_000)); - assert_eq!(res.denom, denom2.clone()); - - // try to provide from manager2 - shared_multisig - .provide( - &manager2, - PoolType::Target, - None, - Some(Decimal::from_ratio(5u128, 10u128)), - None, - None, - ) - .unwrap(); - - // Check the holder's balance for denom1 - let res = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(res.amount, Uint128::new(600_000_000)); - assert_eq!(res.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let res = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(res.amount, Uint128::new(600_000_000)); - assert_eq!(res.denom, denom2.clone()); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&xyk_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(263_078_132)); -} - -#[test] -fn test_provide_to_both_pools() { - let manager1 = Addr::unchecked(MANAGER1); - let manager2 = Addr::unchecked(MANAGER2); - let owner = Addr::unchecked(OWNER); - let denom1 = String::from("untrn"); - let denom2 = String::from("ibc/astro"); - let denom3 = String::from("usdt"); - - let router = Rc::new(RefCell::new(mock_app( - &owner, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom3.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - ]), - ))); - - let generator = MockGeneratorBuilder::new(&router).instantiate(); - let factory = generator.factory(); - let coin_registry = factory.coin_registry(); - coin_registry.add(vec![ - (denom1.to_owned(), 6), - (denom2.to_owned(), 6), - (denom3.to_owned(), 6), - ]); - - let pcl_target = factory.instantiate_concentrated_pair( - &[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ], - None, - ); - - let shared_multisig = MockSharedMultisigBuilder::new(&router).instantiate( - &factory.address, - Some(generator.address), - None, - ); - - // Sends tokens to the multisig - shared_multisig.send_tokens(&owner, None, None).unwrap(); - - // try to provide from manager1 - let err = shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Target pool is not set"); - - // try to provide from manager1 - let err = shared_multisig - .provide(&manager1, PoolType::Migration, None, None, None, None) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Migration pool is not set"); - - // Direct set up target pool without proposal - shared_multisig - .setup_pools( - &shared_multisig.address, - Some(pcl_target.address.to_string()), - None, - ) - .unwrap(); - - let config = shared_multisig.query_config().unwrap(); - assert_eq!(config.target_pool, Some(pcl_target.address.clone())); - assert_eq!(config.migration_pool, None); - - // try to provide from manager1 - shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap(); - - // try to withdraw from target - let err = shared_multisig.withdraw(&manager1, None, None).unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Migration pool is not set"); - - // try to withdraw from migration - let err = shared_multisig.withdraw(&manager2, None, None).unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Migration pool is not set"); - - // try to update config from manager1 - let err = shared_multisig - .complete_target_pool_migration(&manager2) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Migration pool is not set"); - - // try to update config from manager1 - shared_multisig.start_rage_quit(&manager2).unwrap(); - - // check if rage quit started - let res = shared_multisig.query_config().unwrap(); - assert_eq!(res.rage_quit_started, true); - - // check if rage quit cannot be set back to false - let err = shared_multisig.start_rage_quit(&manager2).unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is unavailable. Rage quit has already started" - ); - - // try to provide after rage quit started in target pool - let err = shared_multisig - .provide(&manager2, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is unavailable. Rage quit has already started" - ); -} - -#[test] -fn test_transfer_lp_tokens() { - let astroport = astroport_address(); - let manager1 = Addr::unchecked(MANAGER1); - let manager2 = Addr::unchecked(MANAGER2); - let cheater = Addr::unchecked(CHEATER); - let recipient = Addr::unchecked("recipient"); - - let denom1 = String::from("untrn"); - let denom2 = String::from("ibc/astro"); - let denom3 = String::from("usdt"); - - let router = Rc::new(RefCell::new(mock_app( - &astroport, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom3, - amount: Uint128::new(100_000_000_000u128), - }, - ]), - ))); - - let factory = MockFactoryBuilder::new(&router).instantiate(); - let coin_registry = factory.coin_registry(); - coin_registry.add(vec![(denom1.to_owned(), 6), (denom2.to_owned(), 6)]); - - let pcl = factory.instantiate_concentrated_pair( - &[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ], - None, - ); - - let pcl_pair_info = pcl.pair_info(); - let shared_multisig = - MockSharedMultisigBuilder::new(&router).instantiate(&factory.address, None, None); - - // Sends tokens to the multisig - shared_multisig.send_tokens(&astroport, None, None).unwrap(); - - // Direct set up target pool without proposal - shared_multisig - .setup_pools( - &shared_multisig.address, - Some(pcl.address.to_string()), - None, - ) - .unwrap(); - - // try to provide from recipient - let err = shared_multisig - .provide(&recipient, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Unauthorized"); - - // try to provide from manager1 - shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap(); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&pcl_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(99_999_000)); - - // Check the recipient's LP balance - let res = shared_multisig - .query_cw20_balance(&pcl_pair_info.liquidity_token, Some(recipient.clone())) - .unwrap(); - assert_eq!(res.balance, Uint128::zero()); - - // try to transfer LP tokens through transfer endpoint - let err = shared_multisig - .transfer( - &manager2, - Asset { - info: AssetInfo::Token { - contract_addr: pcl_pair_info.liquidity_token.clone(), - }, - amount: Uint128::new(100_000_000), - }, - Some(recipient.to_string()), - ) - .unwrap_err(); - assert_eq!( - "Unauthorized: manager2 cannot transfer contract3", - err.root_cause().to_string() - ); - - // create proposal message for transfer LP tokens to the recipient - let lp_transfer_amount = Uint128::new(10_000_000); - let transfer_lp_msg = CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: pcl_pair_info.liquidity_token.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Transfer { - recipient: recipient.to_string(), - amount: lp_transfer_amount, - }) - .unwrap(), - funds: vec![], - }); - - // try to propose from cheater - let err = shared_multisig - .propose(&cheater, vec![transfer_lp_msg.clone()]) - .unwrap_err(); - assert_eq!("Unauthorized", err.root_cause().to_string()); - - // try to propose from manager1 - shared_multisig - .propose(&manager1, vec![transfer_lp_msg.clone()]) - .unwrap(); - - // Try to vote from manager2 - shared_multisig.vote(&manager2, 1, Vote::Yes).unwrap(); - - // Try to execute the third proposal - shared_multisig.execute(&manager2, 1).unwrap(); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&pcl_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(89_999_000)); - - // Check the recipient's LP balance - let res = shared_multisig - .query_cw20_balance(&pcl_pair_info.liquidity_token, Some(recipient)) - .unwrap(); - assert_eq!(res.balance, Uint128::new(10_000_000)); -} - -#[test] -fn test_end_migrate_from_target_to_migration_pool() { - let manager1 = Addr::unchecked(MANAGER1); - let manager2 = Addr::unchecked(MANAGER2); - let owner = Addr::unchecked(OWNER); - let denom1 = String::from("untrn"); - let denom2 = String::from("ibc/astro"); - let denom3 = String::from("usdt"); - - let router = Rc::new(RefCell::new(mock_app( - &owner, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom3, - amount: Uint128::new(100_000_000_000u128), - }, - ]), - ))); - - let generator = MockGeneratorBuilder::new(&router).instantiate(); - let factory = generator.factory(); - let coin_registry = factory.coin_registry(); - coin_registry.add(vec![(denom1.to_owned(), 6), (denom2.to_owned(), 6)]); - - let xyk_pool = factory.instantiate_xyk_pair(&[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ]); - - let xyk_pair_info = xyk_pool.pair_info().unwrap(); - assert_eq!( - xyk_pair_info.asset_infos, - vec![ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ] - ); - - let shared_multisig = MockSharedMultisigBuilder::new(&router).instantiate( - &factory.address, - Some(generator.address), - None, - ); - - // Sends tokens to the multisig - shared_multisig.send_tokens(&owner, None, None).unwrap(); - - // Direct set up target pool without proposal - shared_multisig - .setup_pools( - &shared_multisig.address, - Some(xyk_pool.address.to_string()), - None, - ) - .unwrap(); - - let config = shared_multisig.query_config().unwrap(); - assert_eq!(config.target_pool, Some(xyk_pool.address.clone())); - - // try to provide from manager1 - shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap(); - - // try to withdraw from target - let err = shared_multisig.withdraw(&manager1, None, None).unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Migration pool is not set"); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&xyk_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(99_999_000)); - - // deregister the target pool - factory - .deregister_pair(&[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ]) - .unwrap(); - - // create the migration pool - let pcl_pool = factory.instantiate_concentrated_pair( - &[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ], - None, - ); - let pcl_pair_info = pcl_pool.pair_info(); - // Direct set up migration pool without proposal - shared_multisig - .setup_pools( - &shared_multisig.address, - None, - Some(pcl_pool.address.to_string()), - ) - .unwrap(); - - // try to withdraw from target pool and provide to migration pool in the same transaction - shared_multisig - .withdraw( - &manager2, - None, - Some(ProvideParams { - slippage_tolerance: None, - auto_stake: None, - }), - ) - .unwrap(); - - // Check the holder's balance for denom1 - let denom1_before = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(denom1_before.amount, Uint128::new(800_000_000)); - assert_eq!(denom1_before.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let denom1_before = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(denom1_before.amount, Uint128::new(800_000_000)); - assert_eq!(denom1_before.denom, denom2.clone()); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&xyk_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::zero()); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&pcl_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(99_998_000)); - - // try to update config from manager1 - shared_multisig - .complete_target_pool_migration(&manager2) - .unwrap(); - - // check if migration is successful - let res = shared_multisig.query_config().unwrap(); - assert_eq!(res.migration_pool, None); - assert_eq!(res.target_pool, Some(pcl_pool.address)); -} - -#[test] -fn test_withdraw_raqe_quit() { - let manager1 = Addr::unchecked(MANAGER1); - let manager2 = Addr::unchecked(MANAGER2); - let owner = Addr::unchecked(OWNER); - let denom1 = String::from("untrn"); - let denom2 = String::from("ibc/astro"); - let denom3 = String::from("usdt"); - - let router = Rc::new(RefCell::new(mock_app( - &owner, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom3, - amount: Uint128::new(100_000_000_000u128), - }, - ]), - ))); - - let factory = MockFactoryBuilder::new(&router).instantiate(); - let coin_registry = factory.coin_registry(); - coin_registry.add(vec![(denom1.to_owned(), 6), (denom2.to_owned(), 6)]); - - let xyk_pool = factory.instantiate_xyk_pair(&[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ]); - - let xyk_pair_info = xyk_pool.pair_info().unwrap(); - assert_eq!( - xyk_pair_info.asset_infos, - vec![ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ] - ); - - let shared_multisig = MockSharedMultisigBuilder::new(&router).instantiate( - &factory.address, - None, - Some(xyk_pool.address.to_string()), - ); - - // Sends tokens to the multisig - shared_multisig.send_tokens(&owner, None, None).unwrap(); - - let config = shared_multisig.query_config().unwrap(); - assert_eq!(config.target_pool, Some(xyk_pool.address.clone())); - - // try to provide from manager1 - shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap(); - - // Check the holder's balance for denom1 - let denom1_before = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(denom1_before.amount, Uint128::new(800_000_000)); - assert_eq!(denom1_before.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let denom1_before = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(denom1_before.amount, Uint128::new(800_000_000)); - assert_eq!(denom1_before.denom, denom2.clone()); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&xyk_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(99999000)); - - // try to update config from manager1 - shared_multisig.start_rage_quit(&manager2).unwrap(); - - // check if rage quit has already started - let res = shared_multisig.query_config().unwrap(); - assert_eq!(res.rage_quit_started, true); - - // try to provide from manager1 - let err = shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is unavailable. Rage quit has already started" - ); - - // try to update config from manager1 - let err = shared_multisig - .complete_target_pool_migration(&manager2) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is unavailable. Rage quit has already started" - ); - - // try to withdraw from target pool and provide to migration pool in the same transaction - let err = shared_multisig - .withdraw( - &manager2, - None, - Some(ProvideParams { - slippage_tolerance: None, - auto_stake: None, - }), - ) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Operation is unavailable. Rage quit has already started" - ); -} - -#[test] -fn test_autostake_and_withdraw() { - let astroport = astroport_address(); - let manager1 = Addr::unchecked(MANAGER1); - let manager2 = Addr::unchecked(MANAGER2); - - let denom1 = String::from("untrn"); - let denom2 = String::from("ibc/astro"); - let denom3 = String::from("usdt"); - - let router = Rc::new(RefCell::new(mock_app( - &astroport, - Some(vec![ - Coin { - denom: denom1.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom2.clone(), - amount: Uint128::new(100_000_000_000u128), - }, - Coin { - denom: denom3, - amount: Uint128::new(100_000_000_000u128), - }, - ]), - ))); - - let mut generator = MockGeneratorBuilder::new(&router).instantiate(); - let factory = generator.factory(); - let astro_token = generator.astro_token_info(); - let coin_registry = factory.coin_registry(); - coin_registry.add(vec![(denom1.to_owned(), 6), (denom2.to_owned(), 6)]); - - let xyk = factory.instantiate_xyk_pair(&[ - AssetInfo::NativeToken { - denom: denom1.clone(), - }, - AssetInfo::NativeToken { - denom: denom2.clone(), - }, - ]); - - let xyk_pair_info = xyk.pair_info().unwrap(); - let shared_multisig = MockSharedMultisigBuilder::new(&router).instantiate( - &factory.address, - Some(generator.address.clone()), - None, - ); - - // Direct set up target pool without proposal - shared_multisig - .setup_pools( - &shared_multisig.address, - Some(xyk.address.to_string()), - None, - ) - .unwrap(); - - let config = shared_multisig.query_config().unwrap(); - assert_eq!(config.target_pool, Some(xyk.address.clone())); - - // Sends tokens to the multisig - shared_multisig.send_tokens(&astroport, None, None).unwrap(); - - // Check the holder's balance for denom1 - let res = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(res.amount, Uint128::new(900_000_000)); - assert_eq!(res.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let res = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(res.amount, Uint128::new(900_000_000)); - assert_eq!(res.denom, denom2.clone()); - - // try to provide from manager1 - shared_multisig - .provide(&manager1, PoolType::Target, None, None, None, None) - .unwrap(); - - // try to provide from manager2 - shared_multisig - .provide( - &manager2, - PoolType::Target, - None, - Some(Decimal::from_ratio(5u128, 10u128)), - None, - None, - ) - .unwrap(); - - // Check the holder's balance for denom1 - let res = shared_multisig.query_native_balance(None, &denom1).unwrap(); - assert_eq!(res.amount, Uint128::new(700_000_000)); - assert_eq!(res.denom, denom1.clone()); - - // Check the holder's balance for denom2 - let res = shared_multisig.query_native_balance(None, &denom2).unwrap(); - assert_eq!(res.amount, Uint128::new(700_000_000)); - assert_eq!(res.denom, denom2.clone()); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&xyk_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(199999000)); - - // Try to unstake from generator - let err = shared_multisig - .withdraw_generator(&manager2, Some(Uint128::new(10))) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Insufficient balance for: contract8. Available balance: 0" - ); - - // try to provide from manager2 - shared_multisig - .provide(&manager2, PoolType::Target, None, None, Some(true), None) - .unwrap(); - - assert_eq!( - generator.query_deposit(&xyk.lp_token(), &shared_multisig.address), - Uint128::new(100_000_000), - ); - - assert_eq!( - generator.pending_token(&xyk.lp_token().address, &shared_multisig.address), - PendingTokenResponse { - pending: Default::default(), - pending_on_proxy: None - }, - ); - - generator.setup_pools(&[(xyk.lp_token().address.to_string(), Uint128::one())]); - - router.borrow_mut().update_block(|b| { - b.height += 100; - }); - - assert_eq!( - generator.pending_token(&xyk.lp_token().address, &shared_multisig.address), - PendingTokenResponse { - pending: Uint128::new(100_000_000), - pending_on_proxy: None - }, - ); - - // try to claim from manager2 - shared_multisig.claim_generator_rewards(&manager2).unwrap(); - - assert_eq!( - generator.pending_token(&xyk.lp_token().address, &shared_multisig.address), - PendingTokenResponse { - pending: Uint128::zero(), - pending_on_proxy: None - }, - ); - - // Check the holder's ASTRO balance - let res = shared_multisig - .query_cw20_balance(&Addr::unchecked(astro_token.to_string()), None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(100_000_000)); - - // check the holder's deposit - assert_eq!( - generator.query_deposit(&xyk.lp_token(), &shared_multisig.address), - Uint128::new(100_000_000), - ); - - // Try to unstake from generator - shared_multisig.withdraw_generator(&manager2, None).unwrap(); - - // Check the holder's LP balance - let res = shared_multisig - .query_cw20_balance(&xyk_pair_info.liquidity_token, None) - .unwrap(); - assert_eq!(res.balance, Uint128::new(299_999_000)); - - router.borrow_mut().update_block(|b| { - b.height += 100; - }); - - // check the holder's deposit - assert_eq!( - generator.query_deposit(&xyk.lp_token(), &shared_multisig.address), - Uint128::zero(), - ); - - assert_eq!( - generator.pending_token(&xyk.lp_token().address, &shared_multisig.address), - PendingTokenResponse { - pending: Uint128::zero(), - pending_on_proxy: None - }, - ); - - // check the holder's deposit - assert_eq!( - generator.query_deposit(&xyk.lp_token(), &shared_multisig.address), - Uint128::zero(), - ); - - // Try to deposit to generator - shared_multisig - .deposit_generator(&manager2, Some(Uint128::new(10))) - .unwrap(); - - // check the holder's deposit - assert_eq!( - generator.query_deposit(&xyk.lp_token(), &shared_multisig.address), - Uint128::new(10), - ); - - // Try to deposit zero LP tokens to generator - let err = shared_multisig - .deposit_generator(&manager2, Some(Uint128::zero())) - .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Invalid zero amount"); - - // Try to deposit more LP tokens to generator then we have - let err = shared_multisig - .deposit_generator(&manager2, Some(Uint128::new(1000000000000))) - .unwrap_err(); - assert_eq!( - err.root_cause().to_string(), - "Insufficient balance for: contract8. Available balance: 299998990" - ); - - // Try to deposit all LP tokens to generator - shared_multisig.deposit_generator(&manager2, None).unwrap(); - - // check the holder's deposit - assert_eq!( - generator.query_deposit(&xyk.lp_token(), &shared_multisig.address), - Uint128::new(299999000), - ); - - assert_eq!( - generator.pending_token(&xyk.lp_token().address, &shared_multisig.address), - PendingTokenResponse { - pending: Uint128::zero(), - pending_on_proxy: None - }, - ); - - router.borrow_mut().update_block(|b| { - b.height += 100; - }); - - assert_eq!( - generator.pending_token(&xyk.lp_token().address, &shared_multisig.address), - PendingTokenResponse { - pending: Uint128::new(99_999_999), - pending_on_proxy: None - }, - ); - - // Try to unstake from generator - shared_multisig.withdraw_generator(&manager2, None).unwrap(); - - // check the holder's deposit - assert_eq!( - generator.query_deposit(&xyk.lp_token(), &shared_multisig.address), - Uint128::zero(), - ); -} diff --git a/contracts/periphery/tokenfactory_tracker/Cargo.toml b/contracts/periphery/tokenfactory_tracker/Cargo.toml index 79a0dd2db..b0a5463ef 100644 --- a/contracts/periphery/tokenfactory_tracker/Cargo.toml +++ b/contracts/periphery/tokenfactory_tracker/Cargo.toml @@ -10,12 +10,12 @@ library = [] crate-type = ["cdylib", "rlib"] [dependencies] -cw2 = "1.1" -cosmwasm-std = "1.5" -cw-storage-plus = "1.2" -cosmwasm-schema = "1.5" -thiserror = "1.0" -astroport = { path = "../../../packages/astroport", version = "3" } +cw2.workspace = true +cosmwasm-std.workspace = true +cw-storage-plus.workspace = true +cosmwasm-schema.workspace = true +thiserror.workspace = true +astroport = { path = "../../../packages/astroport", version = "4" } [dev-dependencies] osmosis-std = "0.21" diff --git a/contracts/router/Cargo.toml b/contracts/router/Cargo.toml index 1e3c1c732..f40c30207 100644 --- a/contracts/router/Cargo.toml +++ b/contracts/router/Cargo.toml @@ -25,18 +25,18 @@ crate-type = ["cdylib", "rlib"] backtraces = ["cosmwasm-std/backtraces"] [dependencies] -cw2 = "0.15" +cw2.workspace = true cw20 = "0.15" -cosmwasm-std = "1.1" +cosmwasm-std.workspace = true cw-storage-plus = "0.15" integer-sqrt = "0.1" -astroport = { path = "../../packages/astroport", version = "3.8" } -thiserror = { version = "1.0" } -cosmwasm-schema = "1.1" +astroport = "3.8" +thiserror.workspace = true +cosmwasm-schema.workspace = true [dev-dependencies] astroport-factory = { path = "../factory" } -astroport-token = { path = "../token" } +cw20-base = "1.1" astroport-pair = { path = "../pair" } anyhow = "1.0" cw-multi-test = "1.0.0" diff --git a/contracts/router/tests/factory_helper.rs b/contracts/router/tests/factory_helper.rs index 049a31000..261d7900e 100644 --- a/contracts/router/tests/factory_helper.rs +++ b/contracts/router/tests/factory_helper.rs @@ -18,9 +18,9 @@ pub struct FactoryHelper { impl FactoryHelper { pub fn init(router: &mut App, owner: &Addr) -> Self { let astro_token_contract = Box::new(ContractWrapper::new_with_empty( - astroport_token::contract::execute, - astroport_token::contract::instantiate, - astroport_token::contract::query, + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, )); let cw20_token_code_id = router.store_code(astro_token_contract); diff --git a/contracts/router/tests/router_integration.rs b/contracts/router/tests/router_integration.rs index 81d9a3678..67541b6bf 100644 --- a/contracts/router/tests/router_integration.rs +++ b/contracts/router/tests/router_integration.rs @@ -661,7 +661,10 @@ fn test_swap_route() { &[], ) .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Invalid zero amount"); + assert_eq!( + err.root_cause().to_string(), + "Generic error: Swap amount must not be zero" + ); // Query attacker balance and calculate profit let balance_res: BalanceResponse = app @@ -851,7 +854,10 @@ fn test_swap_route() { &[], ) .unwrap_err(); - assert_eq!(err.root_cause().to_string(), "Invalid zero amount"); + assert_eq!( + err.root_cause().to_string(), + "Generic error: Swap amount must not be zero" + ); let balance_res: BalanceResponse = app .wrap() diff --git a/contracts/token/.cargo/config b/contracts/token/.cargo/config deleted file mode 100644 index caa2968cc..000000000 --- a/contracts/token/.cargo/config +++ /dev/null @@ -1,6 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --example token_schema" diff --git a/contracts/token/Cargo.toml b/contracts/token/Cargo.toml deleted file mode 100644 index 73ff66921..000000000 --- a/contracts/token/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "astroport-token" -version = "1.1.1" -authors = ["Astroport"] -edition = "2021" -description = "Expanded implementation of a CosmWasm-20 compliant token for the Astroport ASTRO token" -license = "MIT" -repository = "https://github.com/CosmWasm/cosmwasm-plus" -homepage = "https://cosmwasm.com" -documentation = "https://docs.cosmwasm.com" - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -backtraces = ["cosmwasm-std/backtraces"] -# use library feature to disable all init/handle/query exports -library = [] - -[dependencies] -astroport = { path = "../../packages/astroport", version = "3" } -cw2 = "0.15" -cw20 = "0.15" -cw20-base = { version = "0.15", features = ["library"] } -cosmwasm-std = { version = "1.1" } -snafu = { version = "0.6" } -cosmwasm-schema = { version = "1.1" } diff --git a/contracts/token/README.md b/contracts/token/README.md deleted file mode 100644 index 1465b3f1e..000000000 --- a/contracts/token/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Astroport Token - -This is the contract implementation for the ASTRO token. - ---- - -# CW20 Based Token Contract - -This is a basic implementation of a cw20-base contract [CW20-base](https://github.com/CosmWasm/cw-plus/tree/main/contracts/cw20-base). It implements the [CW20 spec](https://github.com/CosmWasm/cosmwasm-plus/tree/master/packages/cw20) and is designed to be imported into other contracts in order to easily build cw20-compatible tokens with custom logic. diff --git a/contracts/token/examples/token_schema.rs b/contracts/token/examples/token_schema.rs deleted file mode 100644 index fec32ace6..000000000 --- a/contracts/token/examples/token_schema.rs +++ /dev/null @@ -1,12 +0,0 @@ -use cosmwasm_schema::write_api; - -use astroport::token::InstantiateMsg; -use cw20_base::msg::{ExecuteMsg, QueryMsg}; - -fn main() { - write_api! { - instantiate: InstantiateMsg, - query: QueryMsg, - execute: ExecuteMsg, - } -} diff --git a/contracts/token/src/contract.rs b/contracts/token/src/contract.rs deleted file mode 100644 index 024b20154..000000000 --- a/contracts/token/src/contract.rs +++ /dev/null @@ -1,334 +0,0 @@ -use cosmwasm_std::{ - entry_point, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdError, StdResult, -}; -use cw20::{EmbeddedLogo, Logo, LogoInfo, MarketingInfoResponse}; - -use cw2::{get_contract_version, set_contract_version}; -use cw20_base::contract::{create_accounts, execute as cw20_execute, query as cw20_query}; -use cw20_base::msg::{ExecuteMsg, QueryMsg}; -use cw20_base::state::{MinterData, TokenInfo, LOGO, MARKETING_INFO, TOKEN_INFO}; -use cw20_base::ContractError; - -use astroport::asset::addr_opt_validate; -use astroport::token::{InstantiateMsg, MigrateMsg}; - -/// Contract name that is used for migration. -const CONTRACT_NAME: &str = "astroport-token"; -/// Contract version that is used for migration. -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); - -const LOGO_SIZE_CAP: usize = 5 * 1024; - -/// Checks if data starts with XML preamble -fn verify_xml_preamble(data: &[u8]) -> Result<(), ContractError> { - // The easiest way to perform this check would be just match on regex, however regex - // compilation is heavy and probably not worth it. - - let preamble = data - .split_inclusive(|c| *c == b'>') - .next() - .ok_or(ContractError::InvalidXmlPreamble {})?; - - const PREFIX: &[u8] = b""; - - if !(preamble.starts_with(PREFIX) && preamble.ends_with(POSTFIX)) { - Err(ContractError::InvalidXmlPreamble {}) - } else { - Ok(()) - } - - // Additionally attributes format could be validated as they are well defined, as well as - // comments presence inside of preable, but it is probably not worth it. -} - -/// Validates XML logo -fn verify_xml_logo(logo: &[u8]) -> Result<(), ContractError> { - verify_xml_preamble(logo)?; - - if logo.len() > LOGO_SIZE_CAP { - Err(ContractError::LogoTooBig {}) - } else { - Ok(()) - } -} - -/// Validates png logo -fn verify_png_logo(logo: &[u8]) -> Result<(), ContractError> { - // PNG header format: - // 0x89 - magic byte, out of ASCII table to fail on 7-bit systems - // "PNG" ascii representation - // [0x0d, 0x0a] - dos style line ending - // 0x1a - dos control character, stop displaying rest of the file - // 0x0a - unix style line ending - const HEADER: [u8; 8] = [0x89, b'P', b'N', b'G', 0x0d, 0x0a, 0x1a, 0x0a]; - if logo.len() > LOGO_SIZE_CAP { - Err(ContractError::LogoTooBig {}) - } else if !logo.starts_with(&HEADER) { - Err(ContractError::InvalidPngHeader {}) - } else { - Ok(()) - } -} - -/// Checks if passed logo is correct, and if not, returns an error -fn verify_logo(logo: &Logo) -> Result<(), ContractError> { - match logo { - Logo::Embedded(EmbeddedLogo::Svg(logo)) => verify_xml_logo(logo), - Logo::Embedded(EmbeddedLogo::Png(logo)) => verify_png_logo(logo), - Logo::Url(_) => Ok(()), // Any reasonable url validation would be regex based, probably not worth it - } -} - -/// Creates a new contract with the specified parameters in the [`InstantiateMsg`]. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - mut deps: DepsMut, - _env: Env, - _info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - // check valid token info - msg.validate()?; - // create initial accounts - let total_supply = create_accounts(&mut deps, &msg.initial_balances)?; - - // Check supply cap - if let Some(limit) = msg.get_cap() { - if total_supply > limit { - return Err(StdError::generic_err("Initial supply greater than cap").into()); - } - } - - let mint = match msg.mint { - Some(m) => Some(MinterData { - minter: deps.api.addr_validate(&m.minter)?, - cap: m.cap, - }), - None => None, - }; - - // Store token info - let data = TokenInfo { - name: msg.name, - symbol: msg.symbol, - decimals: msg.decimals, - total_supply, - mint, - }; - TOKEN_INFO.save(deps.storage, &data)?; - - if let Some(marketing) = msg.marketing { - let logo = if let Some(logo) = marketing.logo { - verify_logo(&logo)?; - LOGO.save(deps.storage, &logo)?; - - match logo { - Logo::Url(url) => Some(LogoInfo::Url(url)), - Logo::Embedded(_) => Some(LogoInfo::Embedded), - } - } else { - None - }; - - let data = MarketingInfoResponse { - project: marketing.project, - description: marketing.description, - marketing: addr_opt_validate(deps.api, &marketing.marketing)?, - logo, - }; - MARKETING_INFO.save(deps.storage, &data)?; - } - - Ok(Response::default()) -} - -/// Exposes execute functions available in the contract. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - cw20_execute(deps, env, info, msg) -} - -/// Exposes queries available in the contract. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { - cw20_query(deps, env, msg) -} - -/// Manages contract migration. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> StdResult { - let contract_version = get_contract_version(deps.storage)?; - - match contract_version.contract.as_ref() { - "astroport-token" => match contract_version.version.as_ref() { - "1.0.0" | "1.1.0" => {} - _ => { - return Err(StdError::generic_err( - "Cannot migrate. Unsupported contract version", - )) - } - }, - _ => { - return Err(StdError::generic_err( - "Cannot migrate. Unsupported contract name", - )) - } - } - - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - Ok(Response::new() - .add_attribute("previous_contract_name", &contract_version.contract) - .add_attribute("previous_contract_version", &contract_version.version) - .add_attribute("new_contract_name", CONTRACT_NAME) - .add_attribute("new_contract_version", CONTRACT_VERSION)) -} - -#[cfg(test)] -mod tests { - use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; - use cosmwasm_std::{Addr, StdError}; - - use super::*; - use astroport::token::InstantiateMarketingInfo; - - mod marketing { - use cw20::DownloadLogoResponse; - use cw20_base::contract::{query_download_logo, query_marketing_info}; - - use super::*; - - #[test] - fn basic() { - let mut deps = mock_dependencies(); - let instantiate_msg = InstantiateMsg { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - initial_balances: vec![], - mint: None, - marketing: Some(InstantiateMarketingInfo { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some("marketing".to_owned()), - logo: Some(Logo::Url("url".to_owned())), - }), - }; - - let info = mock_info("creator", &[]); - let env = mock_env(); - let res = instantiate(deps.as_mut(), env, info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - assert_eq!( - query_marketing_info(deps.as_ref()).unwrap(), - MarketingInfoResponse { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some(Addr::unchecked("marketing")), - logo: Some(LogoInfo::Url("url".to_owned())), - } - ); - - let err = query_download_logo(deps.as_ref()).unwrap_err(); - assert!( - matches!(err, StdError::NotFound { .. }), - "Expected StdError::NotFound, received {}", - err - ); - } - - #[test] - fn svg() { - let mut deps = mock_dependencies(); - let img = "".as_bytes(); - let instantiate_msg = InstantiateMsg { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - initial_balances: vec![], - mint: None, - marketing: Some(InstantiateMarketingInfo { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some("marketing".to_owned()), - logo: Some(Logo::Embedded(EmbeddedLogo::Svg(img.into()))), - }), - }; - - let info = mock_info("creator", &[]); - let env = mock_env(); - let res = instantiate(deps.as_mut(), env, info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - assert_eq!( - query_marketing_info(deps.as_ref()).unwrap(), - MarketingInfoResponse { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some(Addr::unchecked("marketing")), - logo: Some(LogoInfo::Embedded), - } - ); - - let res: DownloadLogoResponse = query_download_logo(deps.as_ref()).unwrap(); - assert_eq! { - res, - DownloadLogoResponse{ - data: img.into(), - mime_type: "image/svg+xml".to_owned(), - } - } - } - - #[test] - fn png() { - let mut deps = mock_dependencies(); - const PNG_HEADER: [u8; 8] = [0x89, b'P', b'N', b'G', 0x0d, 0x0a, 0x1a, 0x0a]; - let instantiate_msg = InstantiateMsg { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - initial_balances: vec![], - mint: None, - marketing: Some(InstantiateMarketingInfo { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some("marketing".to_owned()), - logo: Some(Logo::Embedded(EmbeddedLogo::Png(PNG_HEADER.into()))), - }), - }; - - let info = mock_info("creator", &[]); - let env = mock_env(); - let res = instantiate(deps.as_mut(), env, info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - assert_eq!( - query_marketing_info(deps.as_ref()).unwrap(), - MarketingInfoResponse { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some(Addr::unchecked("marketing")), - logo: Some(LogoInfo::Embedded), - } - ); - - let res: DownloadLogoResponse = query_download_logo(deps.as_ref()).unwrap(); - assert_eq! { - res, - DownloadLogoResponse{ - data: PNG_HEADER.into(), - mime_type: "image/png".to_owned(), - } - } - } - } -} diff --git a/contracts/token/src/lib.rs b/contracts/token/src/lib.rs deleted file mode 100644 index 2943dbb50..000000000 --- a/contracts/token/src/lib.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod contract; diff --git a/contracts/tokenomics/generator/.cargo/config b/contracts/tokenomics/generator/.cargo/config deleted file mode 100644 index 73ccc6073..000000000 --- a/contracts/tokenomics/generator/.cargo/config +++ /dev/null @@ -1,6 +0,0 @@ -[alias] -wasm-debug = "build --target wasm32-unknown-unknown" -wasm = "build --release --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --example generator_schema" diff --git a/contracts/tokenomics/generator/.editorconfig b/contracts/tokenomics/generator/.editorconfig deleted file mode 100644 index 3d36f20b1..000000000 --- a/contracts/tokenomics/generator/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.rs] -indent_size = 4 diff --git a/contracts/tokenomics/generator/Cargo.toml b/contracts/tokenomics/generator/Cargo.toml deleted file mode 100644 index b96f67a2c..000000000 --- a/contracts/tokenomics/generator/Cargo.toml +++ /dev/null @@ -1,37 +0,0 @@ -[package] -name = "astroport-generator" -version = "2.3.2" -authors = ["Astroport"] -edition = "2021" -description = "Astroport Generator" -license = "GPL-3.0-only" -repository = "https://github.com/astroport-fi/astroport" -homepage = "https://astroport.fi" - -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] - -[dependencies] -cw-storage-plus = "0.15" -cw1-whitelist = { version = "1.1.2", features = ["library"] } -thiserror = { version = "1.0" } -astroport-governance = { git = "https://github.com/astroport-fi/astroport-governance", version = "1" } -protobuf = { version = "2", features = ["with-bytes"] } -cosmwasm-std = "1.1" -cw2 = "0.15" -cw20 = "0.15" -astroport = { path = "../../../packages/astroport", version = "3" } -cosmwasm-schema = "1.1" -cw-utils = "1.0.1" diff --git a/contracts/tokenomics/generator/README.md b/contracts/tokenomics/generator/README.md deleted file mode 100644 index af76b8b24..000000000 --- a/contracts/tokenomics/generator/README.md +++ /dev/null @@ -1,461 +0,0 @@ -# !!! NOTE: Contract has been deprecated and replaced with [Astroport Incentives](../incentives/) !!! - -# Astroport Generator - -The Generator contract allocates token rewards (ASTRO) for various LP tokens and distributes them pro-rata to LP stakers. The Generator supports proxy staking via 3rd party contracts that offer a second reward besides ASTRO token emissions. - ---- - -## InstantiateMsg - -Initializes the contract with required addresses and contracts used for reward distributions. - -```json -{ - "owner": "terra...", - "astro_token": "terra...", - "tokens_per_block": "123", - "start_block": "123", - "vesting_contract": "terra..." -} -``` - -## ExecuteMsg - -### `update_config` - -Update the vesting contract address, generator controller contract address or generator guardian address. -Only the contract owner can execute this. - -```json -{ - "update_config": { - "vesting_contract": "terra...", - "generator_controller": "terra...", - "guardian": "terra...", - "voting_escrow": "terra...", - "generator_limit": 20 - } -} -``` - -### `setup_pools` - -Set up a new list of pools with allocation points. - -```json -{ - "setup_pools": { - "pools" : [ - [ - "terra...", - "60" - ], - [ - "terra...", - "40" - ] - ] - } -} -``` - -### `update_pool` - -Update has_asset_rewards parameter for the given pool. - -```json -{ - "update_pool": { - "lp_token": "terra...", - "has_asset_rewards": true - } -} -``` - -### `claim_rewards` - -Update rewards and return it to user. - -```json -{ - "claim_rewards": { - "lp_tokens": ["terra...", "terra...", "terra..."] - } -} -``` - -### `receive` - -CW20 receive msg. - -```json -{ - "receive": { - "sender": "terra...", - "amount": "123", - "msg": "" - } -} -``` - -### `deposit` - -Stakes LP tokens in a specific generator (inside the Generator contract). -In order to stake in the Generator contract, you should execute this message inside the contract of the LP token you want to stake. - -```json -{ - "send": { - "contract": , - "amount": "999", - "msg": "base64-encodedStringOfWithdrawMsg" - } -} -``` - -Inside `send.msg`, you may encode this JSON string into base64 encoding: - -```json -{ - "deposit": {} -} -``` - -### `depositFor` - -Stakes LP tokens in the Generator on behalf of another address. -In order to stake in the Generator contract, you should execute this message inside the LP token you want to stake. - -```json -{ - "send": { - "contract": , - "amount": "999", - "msg": "base64-encodedStringOfWithdrawMsg" - } -} -``` - -In `send.msg`, you may encode this JSON string into base64 encoding: - -```json -{ - "deposit_for": "terra..." -} -``` - -### `withdraw` - -Unstakes LP tokens from the Generator contract and claims outstanding token emissions. - -```json -{ - "withdraw": { - "lp_token": "terra...", - "amount": "123" - } -} -``` - -### `emergency_withdraw` - -Unstakes LP tokens without caring about rewards. To be used only in emergencies such as a critical bug found in the Generator contract. - -```json -{ - "emergency_withdraw": { - "lp_token": "terra..." - } -} -``` - -### `send_orphan_reward` - -Sends orphaned rewards (left behind by emergency withdraws) to another address. Only the contract owner can transfer orphan rewards. - -```json -{ - "send_orphan_reward": { - "recipient": "terra...", - "lp_token": "terra..." - } -} -``` - -### `set_tokens_per_block` - -Sets the total amount of ASTRO distributed per block among all active generators. Only the owner can execute this. - -```json -{ - "set_tokens_per_block": { - "amount": "123" - } -} -``` - -### `propose_new_owner` - -Creates a request to change contract ownership. The validity period of the offer is set by the `expires_in` variable. Only the current owner can execute this. - -```json -{ - "propose_new_owner": { - "owner": "terra...", - "expires_in": 1234567 - } -} -``` - -### `drop_ownership_proposal` - -Removes the existing offer to change contract ownership. Only the contract owner can execute this. - -```json -{ - "drop_ownership_proposal": {} -} -``` - -### `claim_ownership` - -Used by the newly proposed contract owner to claim contract ownership. - -```json -{ - "claim_ownership": {} -} -``` - -### `move_to_proxy` - -Change the current dual rewards proxy for a specific LP token. Only the contract owner can execute this. - -```json -{ - "move_to_proxy": { - "lp_token": "terra...", - "proxy": "terra..." - } -} -``` - -### `update_tokens_blockedlist` - -Add or remove tokens to and from the tokens blocked list. -Only the owner contract or generator guardian can execute this. - -```json -{ - "update_tokens_blockedlist": { - "add": ["terra...", "terra..."], - "remove": ["terra...", "terra...", "terra..."] - } -} -``` - -### `deactivate_pool` - -Sets the allocation point to zero for specified pool. Only the factory contract can execute this. - -```json -{ - "deactivate_pool": { - "lp_token": "terra..." - } -} -``` - -### `deactivate_pools` - -Sets the allocation point to zero for each pool by the pair type. - -```json -{ - "deactivate_pool": { - "pair_types": [{"xyk": {}}, {"stable": {}}] - } -} -``` - -### `checkpoint_user_boost` - -Updates emissions boost for specified generators - -```json -{ - "checkpoint_user_boost": { - "generators": ["terra...", "terra..."], - "user": "terra..." - } -} -``` - -## QueryMsg - -All query messages are described below. A custom struct is defined for each query response. - -### `pool_length` - -Returns the total amount of generators that have been created until now. - -```json -{ - "pool_length": {} -} -``` - -### `deposit` - -Returns the amount of a specific LP token that a user currently has staked in the Generator. - -```json -{ - "deposit": { - "lp_token": "terra...", - "user": "terra..." - } -} -``` - -### `pending_token` - -Returns the amount of pending ASTRO and 3rd party token rewards that can be claimed by a user that staked a specific LP token. - -```json -{ - "pending_token": { - "lp_token": "terra...", - "user": "terra..." - } -} -``` - -### `config` - -Returns the main Generator contract configuration. - -```json -{ - "config": {} -} -``` - -### `orphan_proxy_rewards` - -Returns the amount of orphaned proxy rewards left behind by emergency withdrawals. - -```json -{ - "orphan_proxy_rewards": { - "lp_token": "terra..." - } -} -``` - -### `reward_info` - -Returns information about token emissions for the specified LP token. - -```json -{ - "reward_info": { - "lp_token": "terra..." - } -} -``` - -### `pool_info` - -Returns pool information for the specified LP token. - -```json -{ - "pool_info": { - "lp_token": "terra..." - } -} -``` - -### `simulate_future_reward` - -Returns the amount of ASTRO that will be distributed up to a future block and for a specific LP token. - -```json -{ - "simulate_future_reward": { - "lp_token": "terra...", - "future_block": 999 - } -} -``` - -### `list_of_stakers` - -Returns a list of stakers that currently have funds in a specific generator. - -```json -{ - "list_of_stakers": { - "lp_token": "terra...", - "start_after": "terra...", - "limit": 5 - } -} -``` - -### `blocked_tokens_list` - -Returns the list of blocked tokens - -```json -{ - "blocked_tokens_list": {} -} -``` - -### `active_pool_length` - -Returns the total amount of active generators. - -```json -{ - "active_pool_length": {} -} -``` - -### `user_virtual_amount` - -Returns the current virtual amount in a specific generator - -```json -{ - "user_virtual_amount": { - "lp_token": "terra...", - "user": "terra..." - } -} -``` - -### `total_virtual_amount` - -Returns the total virtual supply of generator - -```json -{ - "total_virtual_amount": { - "lp_token": "terra..." - } -} -``` - -### `reward_proxies_list` - -Returns a list of reward proxy contracts which have been ever used - -```json -{ - "reward_proxies_list": {} -} -``` diff --git a/contracts/tokenomics/generator/assets/migrate_reward_proxy.png b/contracts/tokenomics/generator/assets/migrate_reward_proxy.png deleted file mode 100644 index b179dabcc63ae7b0c3ecfad0157b1b86c6658cd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64918 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%0Ay`ALTe!$xDdA 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

-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 Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - let generator_controller = addr_opt_validate(deps.api, &msg.generator_controller)?; - let guardian = addr_opt_validate(deps.api, &msg.guardian)?; - let voting_escrow_delegation = addr_opt_validate(deps.api, &msg.voting_escrow_delegation)?; - let voting_escrow = addr_opt_validate(deps.api, &msg.voting_escrow)?; - - msg.astro_token.check(deps.api)?; - - let config = Config { - owner: deps.api.addr_validate(&msg.owner)?, - factory: deps.api.addr_validate(&msg.factory)?, - generator_controller, - guardian, - astro_token: msg.astro_token, - tokens_per_block: msg.tokens_per_block, - total_alloc_point: Uint128::zero(), - start_block: msg.start_block, - vesting_contract: deps.api.addr_validate(&msg.vesting_contract)?, - active_pools: vec![], - blocked_tokens_list: vec![], - checkpoint_generator_limit: None, - voting_escrow_delegation, - voting_escrow, - }; - - CONFIG.save(deps.storage, &config)?; - - let init_reward_holder_msg = - init_proxy_rewards_holder(&config.owner, &env.contract.address, msg.whitelist_code_id)?; - - Ok(Response::default().add_submessage(init_reward_holder_msg)) -} - -/// Exposes execute functions available in the contract. -/// -/// ## Variants -/// * **ExecuteMsg::UpdateConfig { -/// vesting_contract, -/// generator_controller, -/// guardian, -/// voting_escrow, -/// checkpoint_generator_limit, -/// }** Changes the address of the Generator vesting contract, Generator controller contract or Generator guardian. -/// -/// * **ExecuteMsg::SetupPools { pools }** Setting up a new list of pools with allocation points. -/// -/// * **UpdatePool { -/// lp_token, -/// has_asset_rewards, -/// }** Update the given pool's has_asset_rewards parameter. -/// -/// * **ExecuteMsg::ClaimRewards { lp_token }** Updates reward and returns it to user. -/// -/// * **ExecuteMsg::Withdraw { lp_token, amount }** Withdraw LP tokens from the Generator. -/// -/// * **ExecuteMsg::EmergencyWithdraw { lp_token }** Withdraw LP tokens without caring about reward claiming. -/// TO BE USED IN EMERGENCY SITUATIONS ONLY. -/// -/// * **ExecuteMsg::SendOrphanProxyReward { -/// recipient, -/// lp_token, -/// }** Sends orphan proxy rewards to another address. -/// -/// * **ExecuteMsg::Receive(msg)** Receives a message of type [`Cw20ReceiveMsg`] and processes -/// it depending on the received template. -/// -/// * **ExecuteMsg::SetTokensPerBlock { amount }** Sets a new amount of ASTRO that's distributed per block among all active generators. -/// -/// * **ExecuteMsg::ProposeNewOwner { owner, expires_in }** Creates a new request to change contract ownership. -/// Only the current owner can call this. -/// -/// * **ExecuteMsg::DropOwnershipProposal {}** Removes a request to change contract ownership. -/// Only the current owner can call this. -/// -/// * **ExecuteMsg::ClaimOwnership {}** Claims contract ownership. Only the newly proposed owner -/// can call this. -/// -/// * **ExecuteMsg::DeactivatePool { lp_token }** Sets the allocation point to zero for specified -/// LP token. -/// -/// * **ExecuteMsg::DeactivatePools { pair_types }** Sets the allocation point to zero for each pool -/// by the pair type -/// -/// * **ExecuteMsg::CheckpointUserBoost { user, generators }** Updates the boost emissions for -/// specified user and generators -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - mut deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - match msg { - ExecuteMsg::CheckpointUserBoost { generators, user } => { - checkpoint_user_boost(deps, env, info, generators, user) - } - ExecuteMsg::DeactivateBlacklistedPools { pair_types } => { - deactivate_blacklisted(deps, env, pair_types) - } - ExecuteMsg::DeactivatePool { lp_token } => { - let cfg = CONFIG.load(deps.storage)?; - if info.sender != cfg.factory { - return Err(ContractError::Unauthorized {}); - } - let lp_token_addr = deps.api.addr_validate(&lp_token)?; - let active_pools: Vec<_> = cfg.active_pools.iter().map(|pool| pool.0.clone()).collect(); - mass_update_pools(deps.branch(), &env, &cfg, &active_pools)?; - deactivate_pool(deps, cfg, lp_token_addr) - } - ExecuteMsg::UpdateBlockedTokenslist { add, remove } => { - update_blocked_tokens_list(deps, env, info, add, remove) - } - ExecuteMsg::MoveToProxy { lp_token, proxy } => { - move_to_proxy(deps, env, info, lp_token, proxy) - } - ExecuteMsg::MigrateProxy { - lp_token, - new_proxy, - } => migrate_proxy(deps, env, info, lp_token, new_proxy), - ExecuteMsg::UpdateConfig { - vesting_contract, - generator_controller, - guardian, - voting_escrow_delegation, - voting_escrow, - checkpoint_generator_limit, - } => execute_update_config( - deps, - info, - vesting_contract, - generator_controller, - guardian, - voting_escrow_delegation, - voting_escrow, - checkpoint_generator_limit, - ), - ExecuteMsg::SetupPools { pools } => execute_setup_pools(deps, env, info, pools), - ExecuteMsg::ClaimRewards { lp_tokens } => { - let lp_tokens_addr = validate_addresses(deps.api, &lp_tokens)?; - - update_rewards_and_execute( - deps, - env, - Some(lp_tokens_addr.clone()), - ExecuteOnReply::ClaimRewards { - lp_tokens: lp_tokens_addr, - account: info.sender, - }, - ) - } - ExecuteMsg::Withdraw { lp_token, amount } => { - if amount.is_zero() { - return Err(ContractError::ZeroWithdraw {}); - } - let lp_token = deps.api.addr_validate(&lp_token)?; - - update_rewards_and_execute( - deps.branch(), - env, - Some(vec![lp_token.clone()]), - ExecuteOnReply::Withdraw { - lp_token, - account: info.sender, - amount, - }, - ) - } - ExecuteMsg::EmergencyWithdraw { lp_token } => emergency_withdraw(deps, info, lp_token), - ExecuteMsg::SendOrphanProxyReward { - recipient, - lp_token, - } => send_orphan_proxy_rewards(deps, info, recipient, lp_token), - ExecuteMsg::Receive(msg) => receive_cw20(deps, env, info, msg), - ExecuteMsg::SetTokensPerBlock { amount } => { - let cfg = CONFIG.load(deps.storage)?; - if info.sender != cfg.owner { - return Err(ContractError::Unauthorized {}); - } - - update_rewards_and_execute( - deps, - env, - None, - ExecuteOnReply::SetTokensPerBlock { amount }, - ) - } - ExecuteMsg::ProposeNewOwner { owner, expires_in } => { - let config = CONFIG.load(deps.storage)?; - - propose_new_owner( - deps, - info, - env, - owner, - expires_in, - config.owner, - OWNERSHIP_PROPOSAL, - ) - .map_err(Into::into) - } - ExecuteMsg::DropOwnershipProposal {} => { - let config = CONFIG.load(deps.storage)?; - - drop_ownership_proposal(deps, info, config.owner, OWNERSHIP_PROPOSAL) - .map_err(Into::into) - } - ExecuteMsg::ClaimOwnership {} => { - claim_ownership(deps, info, env, OWNERSHIP_PROPOSAL, |deps, new_owner| { - CONFIG - .update::<_, StdError>(deps.storage, |mut v| { - v.owner = new_owner; - Ok(v) - }) - .map(|_| ()) - }) - .map_err(Into::into) - } - ExecuteMsg::Callback { action } => { - if info.sender != env.contract.address { - return Err(ContractError::Unauthorized {}); - } - - handle_callback(deps, env, action) - } - } -} - -/// Updates user virtual amount boost for specified generators. -/// -/// * **generators** addresses of the generators for which the amount will be recalculated. -/// -/// * **user** address for which the virtual amount will be recalculated. -fn checkpoint_user_boost( - deps: DepsMut, - env: Env, - info: MessageInfo, - generators: Vec, - user: Option, -) -> Result { - let config = CONFIG.load(deps.storage)?; - let recipient_addr = if let Some(user) = user { - deps.api.addr_validate(&user)? - } else { - info.sender - }; - if generators.len() - > config - .checkpoint_generator_limit - .unwrap_or(CHECKPOINT_GENERATORS_LIMIT) as usize - { - return Err(ContractError::GeneratorsLimitExceeded {}); - } - - let mut send_rewards_msg: Vec = vec![]; - for generator in generators { - let lp_token = deps.api.addr_validate(&generator)?; - - // calculates the emission boost only for user who has LP in generator - if USER_INFO.has(deps.storage, (&lp_token, &recipient_addr)) { - let user_info = - USER_INFO.compatible_load(deps.storage, (&lp_token, &recipient_addr))?; - - let mut pool = POOL_INFO.load(deps.storage, &lp_token)?; - accumulate_rewards_per_share(&deps.querier, &env, &lp_token, &mut pool, &config)?; - - send_rewards_msg.append(&mut send_pending_rewards( - deps.as_ref(), - &config, - &pool, - &user_info, - &recipient_addr, - )?); - - // Update user's amount - let amount = user_info.amount; - let mut user_info = update_user_balance(user_info, &pool, amount)?; - let lp_balance = - query_lp_balance(deps.as_ref(), &env.contract.address, &lp_token, &pool)?; - - // Update user's virtual amount - update_virtual_amount( - deps.querier, - &config, - &mut pool, - &mut user_info, - &recipient_addr, - lp_balance, - )?; - - USER_INFO.save(deps.storage, (&lp_token, &recipient_addr), &user_info)?; - POOL_INFO.save(deps.storage, &lp_token, &pool)?; - } - } - - Ok(Response::new() - .add_attribute("action", "checkpoint_user_boost") - .add_messages(send_rewards_msg)) -} - -/// Sets the allocation point to zero for each pool by the pair type. -fn deactivate_blacklisted( - mut deps: DepsMut, - env: Env, - pair_types: Vec, -) -> Result { - let mut cfg = CONFIG.load(deps.storage)?; - - // Check for duplicate pair types - let mut uniq: HashSet = HashSet::new(); - if !pair_types - .clone() - .into_iter() - .all(|a| uniq.insert(a.to_string())) - { - return Err(ContractError::Std(StdError::generic_err( - "Pair type duplicate!", - ))); - } - - let blacklisted_pair_types: Vec = deps - .querier - .query_wasm_smart(&cfg.factory, &FactoryQueryMsg::BlacklistedPairTypes {})?; - - // checks if each pair type is blacklisted - for pair_type in &pair_types { - if !blacklisted_pair_types.contains(pair_type) { - return Err(ContractError::Std(StdError::generic_err(format!( - "Pair type ({pair_type}) is not blacklisted!" - )))); - } - } - - let active_pools: Vec<_> = cfg.active_pools.iter().map(|pool| pool.0.clone()).collect(); - mass_update_pools(deps.branch(), &env, &cfg, &active_pools)?; - - // find active pools with blacklisted pair type - for pool in &mut cfg.active_pools { - if !pool.1.is_zero() { - let pair_info = pair_info_by_pool(&deps.querier, &pool.0)?; - if pair_types.contains(&pair_info.pair_type) { - // recalculate total allocation point before resetting the allocation point of pool - cfg.total_alloc_point = cfg.total_alloc_point.checked_sub(pool.1)?; - // sets allocation point to zero for each pool with blacklisted pair type - pool.1 = Uint128::zero(); - } - } - } - - CONFIG.save(deps.storage, &cfg)?; - Ok(Response::new().add_attribute("action", "deactivate_blacklisted_pools")) -} - -/// Add or remove tokens to and from the blocked list. -fn update_blocked_tokens_list( - mut deps: DepsMut, - env: Env, - info: MessageInfo, - add: Option>, - remove: Option>, -) -> Result { - if add.is_none() && remove.is_none() { - return Err(ContractError::Std(StdError::generic_err( - "Need to provide add or remove parameters", - ))); - } - - let mut cfg = CONFIG.load(deps.storage)?; - - // Permission check - if info.sender != cfg.owner && Some(info.sender) != cfg.guardian { - return Err(ContractError::Unauthorized {}); - } - - // Remove tokens from blacklist - if let Some(asset_infos) = remove { - for asset_info in asset_infos { - let index = cfg - .blocked_tokens_list - .iter() - .position(|x| *x == asset_info) - .ok_or_else(|| { - StdError::generic_err( - "Can't remove token. It is not found in the blocked list.", - ) - })?; - cfg.blocked_tokens_list.remove(index); - } - } - - // Add tokens to the blacklist - if let Some(asset_infos) = add { - let active_pools: Vec<_> = cfg.active_pools.iter().map(|pool| pool.0.clone()).collect(); - mass_update_pools(deps.branch(), &env, &cfg, &active_pools)?; - - for asset_info in asset_infos { - // ASTRO or chain's native assets (ust, uluna, inj, etc) cannot be blacklisted - if asset_info.is_native_token() && !asset_info.is_ibc() - || asset_info.eq(&cfg.astro_token) - { - return Err(ContractError::AssetCannotBeBlocked { - asset: asset_info.to_string(), - }); - } - - if !cfg.blocked_tokens_list.contains(&asset_info) { - cfg.blocked_tokens_list.push(asset_info.clone()); - - // Find active pools with blacklisted tokens - for pool in &mut cfg.active_pools { - let pair_info = pair_info_by_pool(&deps.querier, &pool.0)?; - if pair_info.asset_infos.contains(&asset_info) { - // Recalculate total allocation points before resetting the pool allocation points - cfg.total_alloc_point = cfg.total_alloc_point.checked_sub(pool.1)?; - // Sets allocation points to zero for each pool with blacklisted tokens - pool.1 = Uint128::zero(); - } - } - } - } - } - - CONFIG.save(deps.storage, &cfg)?; - Ok(Response::new().add_attribute("action", "update_tokens_blockedlist")) -} - -/// Sets a new Generator vesting contract address. -/// -/// * **vesting_contract** new vesting contract address. -/// -/// * **generator_controller** new generator controller contract address. -/// -/// * **guardian** new generator guardian address. -/// -/// ## Executor -/// Only the owner can execute this. -#[allow(clippy::too_many_arguments)] -pub fn execute_update_config( - deps: DepsMut, - info: MessageInfo, - vesting_contract: Option, - generator_controller: Option, - guardian: Option, - voting_escrow_delegation: Option, - voting_escrow: Option, - checkpoint_generator_limit: Option, -) -> Result { - let mut config = CONFIG.load(deps.storage)?; - - // Permission check - if info.sender != config.owner { - return Err(ContractError::Unauthorized {}); - } - - if let Some(vesting_contract) = vesting_contract { - config.vesting_contract = deps.api.addr_validate(&vesting_contract)?; - } - - if let Some(generator_controller) = generator_controller { - config.generator_controller = Some(deps.api.addr_validate(&generator_controller)?); - } - - if let Some(guardian) = guardian { - config.guardian = Some(deps.api.addr_validate(guardian.as_str())?); - } - - if let Some(generator_limit) = checkpoint_generator_limit { - config.checkpoint_generator_limit = Some(generator_limit); - } - - if let Some(voting_escrow_delegation) = voting_escrow_delegation { - config.voting_escrow_delegation = Some(deps.api.addr_validate(&voting_escrow_delegation)?); - } - - if let Some(voting_escrow) = voting_escrow { - config.voting_escrow = Some(deps.api.addr_validate(&voting_escrow)?); - } - - CONFIG.save(deps.storage, &config)?; - - Ok(Response::new().add_attribute("action", "update_config")) -} - -/// Creates a new generator and adds it to [`POOL_INFO`] (if it does not exist yet) and updates -/// total allocation points (in [`Config`]). -/// -/// * **pools** is a vector of set that contains LP token address and allocation point. -/// -/// ## Executor -/// Can only be called by the owner or generator controller -pub fn execute_setup_pools( - mut deps: DepsMut, - env: Env, - info: MessageInfo, - pools: Vec<(String, Uint128)>, -) -> Result { - let mut cfg = CONFIG.load(deps.storage)?; - if info.sender != cfg.owner && Some(info.sender) != cfg.generator_controller { - return Err(ContractError::Unauthorized {}); - } - - let pools_set: HashSet = pools.clone().into_iter().map(|pc| pc.0).collect(); - if pools_set.len() != pools.len() { - return Err(ContractError::PoolDuplicate {}); - } - - let mut setup_pools: Vec<(Addr, Uint128)> = vec![]; - - let blacklisted_pair_types: Vec = deps - .querier - .query_wasm_smart(&cfg.factory, &FactoryQueryMsg::BlacklistedPairTypes {})?; - - for (addr, alloc_point) in pools { - let pool_addr = deps.api.addr_validate(&addr)?; - let pair_info = pair_info_by_pool(&deps.querier, &pool_addr)?; - - // check if assets in the blocked list - for asset in &pair_info.asset_infos { - if cfg.blocked_tokens_list.contains(asset) { - return Err(StdError::generic_err(format!("Token {asset} is blocked!")).into()); - } - } - - // check if pair type is blacklisted - if blacklisted_pair_types.contains(&pair_info.pair_type) { - return Err(StdError::generic_err(format!( - "Pair type ({}) is blacklisted!", - pair_info.pair_type - )) - .into()); - } - - // If a pair gets deregistered from the factory, we should raise error. - let _: PairInfo = deps - .querier - .query_wasm_smart( - &cfg.factory, - &FactoryQueryMsg::Pair { - asset_infos: pair_info.asset_infos.clone(), - }, - ) - .map_err(|_| { - ContractError::Std(StdError::generic_err(format!( - "The pair is not registered: {}-{}", - pair_info.asset_infos[0], pair_info.asset_infos[1] - ))) - })?; - - setup_pools.push((pool_addr, alloc_point)); - } - let prev_pools: Vec<_> = cfg.active_pools.iter().map(|pool| pool.0.clone()).collect(); - - mass_update_pools(deps.branch(), &env, &cfg, &prev_pools)?; - - for (lp_token, _) in &setup_pools { - if let Some(mut pool_info) = POOL_INFO.may_load(deps.storage, lp_token)? { - pool_info.last_reward_block = cfg.start_block.max(env.block.height.into()); - POOL_INFO.save(deps.storage, lp_token, &pool_info)?; - } else { - create_pool(deps.branch(), &env, lp_token, &cfg)?; - } - } - - cfg.total_alloc_point = setup_pools.iter().map(|(_, alloc_point)| alloc_point).sum(); - cfg.active_pools = setup_pools; - - CONFIG.save(deps.storage, &cfg)?; - - Ok(Response::new().add_attribute("action", "setup_pools")) -} - -/// Updates the amount of accrued rewards for a specific generator (if specified in input parameters), otherwise updates rewards for -/// all pools that are in [`POOL_INFO`]. -/// -/// * **update_single_pool** whether a single generator should be updated and if yes, which one. -/// -/// * **on_reply** action to be performed on reply. -fn update_rewards_and_execute( - deps: DepsMut, - env: Env, - update_specified_pools: Option>, - action_on_reply: ExecuteOnReply, -) -> Result { - let pools = match update_specified_pools { - Some(lp_tokens) => { - // Check for duplicate lp tokens - if lp_tokens.len() > 1 { - let mut uniq: HashSet<&Addr> = HashSet::new(); - if !lp_tokens.iter().all(|a| uniq.insert(a)) { - return Err(ContractError::PoolDuplicate {}); - } - } - - lp_tokens - .iter() - .map(|lp_token| Ok((lp_token.clone(), POOL_INFO.load(deps.storage, lp_token)?))) - .collect::>>()? - } - None => { - let config = CONFIG.load(deps.storage)?; - - config - .active_pools - .iter() - .map(|(lp_token, _)| { - Ok((lp_token.clone(), POOL_INFO.load(deps.storage, lp_token)?)) - }) - .collect::>>()? - } - }; - - let mut messages = vec![]; - for (lp_token, mut pool) in pools { - if let Some(reward_proxy) = pool.reward_proxy.clone() { - let msg_opt = get_proxy_rewards(deps.querier, &mut pool, &reward_proxy)?; - POOL_INFO.save(deps.storage, &lp_token, &pool)?; - if let Some(msg) = msg_opt { - messages.push(msg); - } - } - } - - if !messages.is_empty() { - messages.push(action_on_reply.into_submsg(&env)?); - Ok(Response::new().add_submessages(messages)) - } else { - handle_callback(deps, env, action_on_reply) - } -} - -/// Fetches accrued proxy rewards. Snapshots the old amount of rewards that are still unclaimed. Returns a [`ContractError`] -/// on failure. Otherwise returns object of type [`Some(SubMsg)`] if there is pending tokens -/// or returns [`None`] in opposite case. -/// -/// * **pool** generator associated with the `lp_token`. -/// -/// * **reward_proxy** address of the dual rewards proxy for the target LP/generator. -fn get_proxy_rewards( - querier: QuerierWrapper, - pool: &mut PoolInfo, - reward_proxy: &Addr, -) -> Result, ContractError> { - let reward_amount: Uint128 = - querier.query_wasm_smart(reward_proxy, &ProxyQueryMsg::Reward {})?; - - pool.proxy_reward_balance_before_update = reward_amount; - - let res: Uint128 = querier.query_wasm_smart(reward_proxy, &ProxyQueryMsg::PendingToken {})?; - - Ok(if !res.is_zero() { - Some(SubMsg::new(WasmMsg::Execute { - contract_addr: reward_proxy.to_string(), - funds: vec![], - msg: to_json_binary(&ProxyExecuteMsg::UpdateRewards {})?, - })) - } else { - None - }) -} - -/// The entry point to the contract for processing replies from submessages. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result { - match msg { - Reply { - id: INIT_REWARDS_HOLDER_ID, - result: - SubMsgResult::Ok(SubMsgResponse { - data: Some(data), .. - }), - } => { - let init_response = parse_instantiate_response_data(data.as_slice()) - .map_err(|e| StdError::generic_err(format!("{e}")))?; - - let rewards_holder = deps.api.addr_validate(&init_response.contract_address)?; - PROXY_REWARDS_HOLDER.save(deps.storage, &rewards_holder)?; - - Ok(Response::new().add_attribute("action", "init_rewards_holder")) - } - _ => Err(ContractError::FailedToParseReply {}), - } -} - -/// Processes callback. -fn handle_callback( - deps: DepsMut, - env: Env, - action: ExecuteOnReply, -) -> Result { - match action { - ExecuteOnReply::ClaimRewards { lp_tokens, account } => { - claim_rewards(deps, env, lp_tokens, account) - } - ExecuteOnReply::Deposit { - lp_token, - account, - amount, - } => deposit(deps, env, lp_token, account, amount), - ExecuteOnReply::Withdraw { - lp_token, - account, - amount, - } => withdraw(deps, env, lp_token, account, amount), - ExecuteOnReply::SetTokensPerBlock { amount } => set_tokens_per_block(deps, env, amount), - ExecuteOnReply::MigrateProxy { - lp_addr, - new_proxy_addr, - } => migrate_proxy_callback(deps, env, lp_addr, new_proxy_addr), - ExecuteOnReply::MigrateProxyDepositLP { - lp_addr, - prev_proxy_addr, - amount, - } => migrate_proxy_deposit_lp(deps, lp_addr, prev_proxy_addr, amount), - } -} - -/// Sets the allocation points to zero for the generator associated with the specified LP token. Recalculates total allocation points. -pub fn deactivate_pool( - deps: DepsMut, - mut cfg: Config, - lp_token: Addr, -) -> Result { - // Get old allocation points for the pool and subtract them from the total allocation points - let old_alloc_point = get_alloc_point(&cfg.active_pools, &lp_token); - cfg.total_alloc_point = cfg.total_alloc_point.checked_sub(old_alloc_point)?; - - // Set the pool allocation points to zero - for pool in &mut cfg.active_pools { - if pool.0 == lp_token { - pool.1 = Uint128::zero(); - break; - } - } - - CONFIG.save(deps.storage, &cfg)?; - - Ok(Response::new().add_attribute("action", "deactivate_pool")) -} - -/// Sets a new amount of ASTRO distributed per block among all active generators. Before that, we -/// will need to update all pools in order to correctly account for accrued rewards. -/// -/// * **amount** new count of tokens per block. -fn set_tokens_per_block( - mut deps: DepsMut, - env: Env, - amount: Uint128, -) -> Result { - let mut cfg = CONFIG.load(deps.storage)?; - - let pools: Vec<_> = cfg.active_pools.iter().map(|pool| pool.0.clone()).collect(); - - mass_update_pools(deps.branch(), &env, &cfg, &pools)?; - - cfg.tokens_per_block = amount; - CONFIG.save(deps.storage, &cfg)?; - - Ok(Response::new().add_attribute("action", "set_tokens_per_block")) -} - -/// Updates the amount of accrued rewards for all generators. -/// -/// * **lp_tokens** is the list of LP tokens which should be updated. -pub fn mass_update_pools( - deps: DepsMut, - env: &Env, - cfg: &Config, - lp_tokens: &[Addr], -) -> Result<(), ContractError> { - for lp_token in lp_tokens { - let mut pool = POOL_INFO.load(deps.storage, lp_token)?; - accumulate_rewards_per_share(&deps.querier, env, lp_token, &mut pool, cfg)?; - POOL_INFO.save(deps.storage, lp_token, &pool)?; - } - - Ok(()) -} - -/// Updates the amount of accrued rewards for a specific generator. -/// -/// * **lp_token** sets the liquidity pool to be updated and claimed. -/// -/// * **account** receiver address. -pub fn claim_rewards( - mut deps: DepsMut, - env: Env, - lp_tokens: Vec, - account: Addr, -) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - mass_update_pools(deps.branch(), &env, &cfg, &lp_tokens)?; - - let mut send_rewards_msg = vec![]; - for lp_token in &lp_tokens { - let mut pool = POOL_INFO.load(deps.storage, lp_token)?; - let user = USER_INFO.compatible_load(deps.storage, (lp_token, &account))?; - - send_rewards_msg.append(&mut send_pending_rewards( - deps.as_ref(), - &cfg, - &pool, - &user, - &account, - )?); - - // Update user's amount - let amount = user.amount; - let mut user = update_user_balance(user, &pool, amount)?; - let lp_balance = query_lp_balance(deps.as_ref(), &env.contract.address, lp_token, &pool)?; - - // Update user's virtual amount - update_virtual_amount( - deps.querier, - &cfg, - &mut pool, - &mut user, - &account, - lp_balance, - )?; - - USER_INFO.save(deps.storage, (lp_token, &account), &user)?; - POOL_INFO.save(deps.storage, lp_token, &pool)?; - } - - Ok(Response::default() - .add_attribute("action", "claim_rewards") - .add_messages(send_rewards_msg)) -} - -/// Accrues the amount of rewards distributed for each staked LP token in a specific generator. -/// Also update reward variables for the given generator. -/// -/// * **lp_token** LP token whose rewards per share we update. -/// -/// * **pool** generator associated with the `lp_token`. -pub fn accumulate_rewards_per_share( - querier: &QuerierWrapper, - env: &Env, - lp_token: &Addr, - pool: &mut PoolInfo, - cfg: &Config, -) -> StdResult<()> { - if let Some(proxy) = &pool.reward_proxy { - let proxy_lp_supply: Uint128 = - querier.query_wasm_smart(proxy, &ProxyQueryMsg::Deposit {})?; - - if !proxy_lp_supply.is_zero() { - let reward_amount: Uint128 = - querier.query_wasm_smart(proxy, &ProxyQueryMsg::Reward {})?; - - let token_rewards = - reward_amount.saturating_sub(pool.proxy_reward_balance_before_update); - - let share = Decimal::from_ratio(token_rewards, proxy_lp_supply); - pool.accumulated_proxy_rewards_per_share - .update(proxy, share)?; - pool.proxy_reward_balance_before_update = reward_amount; - } - } - - // we should calculate rewards by previous virtual amount - let lp_supply = pool.total_virtual_supply; - - if env.block.height > pool.last_reward_block.u64() { - if !lp_supply.is_zero() { - let alloc_point = get_alloc_point(&cfg.active_pools, lp_token); - let token_rewards = calculate_rewards( - env.block.height - pool.last_reward_block.u64(), - &alloc_point, - cfg, - )?; - - let share = Decimal::from_ratio(token_rewards, lp_supply); - pool.reward_global_index = pool.reward_global_index.checked_add(share)?; - } - - pool.last_reward_block = Uint64::from(env.block.height); - } - - Ok(()) -} - -/// Receives a message of type [`Cw20ReceiveMsg`] and processes it depending on the received template. -/// * **cw20_msg** CW20 message to process. -fn receive_cw20( - mut deps: DepsMut, - env: Env, - info: MessageInfo, - cw20_msg: Cw20ReceiveMsg, -) -> Result { - let amount = cw20_msg.amount; - let lp_token = info.sender; - let cfg = CONFIG.load(deps.storage)?; - - if !POOL_INFO.has(deps.storage, &lp_token) { - create_pool(deps.branch(), &env, &lp_token, &cfg)?; - } - - match from_json(&cw20_msg.msg)? { - Cw20HookMsg::Deposit {} => update_rewards_and_execute( - deps, - env, - Some(vec![lp_token.clone()]), - ExecuteOnReply::Deposit { - lp_token, - account: Addr::unchecked(cw20_msg.sender), - amount, - }, - ), - Cw20HookMsg::DepositFor(beneficiary) => { - let account = deps.api.addr_validate(&beneficiary)?; - update_rewards_and_execute( - deps, - env, - Some(vec![lp_token.clone()]), - ExecuteOnReply::Deposit { - lp_token, - account, - amount, - }, - ) - } - } -} - -/// Distributes pending proxy rewards for a specific staker. -/// -/// * **pool** generator where the a user was staked. -/// -/// * **user** staker for which we claim accrued proxy rewards. -/// -/// * **to** address that will receive the proxy rewards. -pub fn send_pending_rewards( - deps: Deps, - cfg: &Config, - pool: &PoolInfo, - user: &UserInfoV2, - to: &Addr, -) -> Result, ContractError> { - if user.amount.is_zero() { - return Ok(vec![]); - } - - let mut messages = vec![]; - - let pending_rewards = (pool.reward_global_index - user.reward_user_index) - .checked_mul_uint128(user.virtual_amount)?; - - if !pending_rewards.is_zero() { - messages.push(WasmMsg::Execute { - contract_addr: cfg.vesting_contract.to_string(), - msg: to_json_binary(&VestingExecuteMsg::Claim { - recipient: Some(to.to_string()), - amount: Some(pending_rewards), - })?, - funds: vec![], - }); - } - - let proxy_rewards = accumulate_pool_proxy_rewards(pool, user)?; - - let proxy_rewards_holder = PROXY_REWARDS_HOLDER.load(deps.storage)?; - for (proxy, pending_proxy_rewards) in proxy_rewards { - if !pending_proxy_rewards.is_zero() { - match &pool.reward_proxy { - Some(reward_proxy) if reward_proxy == proxy => { - messages.push(WasmMsg::Execute { - contract_addr: proxy.to_string(), - funds: vec![], - msg: to_json_binary(&ProxyExecuteMsg::SendRewards { - account: to.to_string(), - amount: pending_proxy_rewards, - })?, - }); - } - _ => { - // Old proxy rewards are paid from reward holder - let asset_info = PROXY_REWARD_ASSET.load(deps.storage, &proxy)?; - messages.push(WasmMsg::Execute { - contract_addr: proxy_rewards_holder.to_string(), - funds: vec![], - msg: to_json_binary(&cw1_whitelist::msg::ExecuteMsg::Execute { - msgs: vec![Asset { - info: asset_info, - amount: pending_proxy_rewards, - } - .into_msg::(to.clone())?], - })?, - }); - } - } - } - } - - Ok(messages) -} - -/// Deposit LP tokens in a generator to receive token emissions. -/// -/// * **lp_token** LP token to deposit. -/// -/// * **beneficiary** address that will take ownership of the staked LP tokens. -/// -/// * **amount** amount of LP tokens to deposit. -pub fn deposit( - deps: DepsMut, - env: Env, - lp_token: Addr, - beneficiary: Addr, - amount: Uint128, -) -> Result { - let user = USER_INFO - .compatible_load(deps.storage, (&lp_token, &beneficiary)) - .unwrap_or_default(); - - let cfg = CONFIG.load(deps.storage)?; - let mut pool = POOL_INFO.load(deps.storage, &lp_token)?; - - accumulate_rewards_per_share(&deps.querier, &env, &lp_token, &mut pool, &cfg)?; - - // Send pending rewards (if any) to the depositor - let mut messages = send_pending_rewards(deps.as_ref(), &cfg, &pool, &user, &beneficiary)?; - - let mut lp_balance = query_lp_balance(deps.as_ref(), &env.contract.address, &lp_token, &pool)?; - - // If a reward proxy is set - send LP tokens to the proxy - if !amount.is_zero() && pool.reward_proxy.is_some() { - // Consider deposited LP tokens - lp_balance += amount; - messages.push(wasm_execute( - &lp_token, - &Cw20ExecuteMsg::Send { - contract: pool.reward_proxy.clone().unwrap().to_string(), - msg: to_json_binary(&ProxyCw20HookMsg::Deposit {})?, - amount, - }, - vec![], - )?); - } - - // Update user's LP token balance - let updated_amount = user.amount.checked_add(amount)?; - let mut user = update_user_balance(user, &pool, updated_amount)?; - - update_virtual_amount( - deps.querier, - &cfg, - &mut pool, - &mut user, - &beneficiary, - lp_balance, - )?; - - POOL_INFO.save(deps.storage, &lp_token, &pool)?; - USER_INFO.save(deps.storage, (&lp_token, &beneficiary), &user)?; - - Ok(Response::new() - .add_messages(messages) - .add_attribute("action", "deposit") - .add_attribute("amount", amount)) -} - -/// Withdraw LP tokens from a generator. -/// -/// * **lp_token** LP token to withdraw. -/// -/// * **account** user whose LP tokens we withdraw. -/// -/// * **amount** amount of LP tokens to withdraw. -pub fn withdraw( - deps: DepsMut, - env: Env, - lp_token: Addr, - account: Addr, - amount: Uint128, -) -> Result { - let user = USER_INFO - .compatible_load(deps.storage, (&lp_token, &account)) - .unwrap_or_default(); - if user.amount < amount { - return Err(ContractError::BalanceTooSmall {}); - } - - let cfg = CONFIG.load(deps.storage)?; - let mut pool = POOL_INFO.load(deps.storage, &lp_token)?; - - accumulate_rewards_per_share(&deps.querier, &env, &lp_token, &mut pool, &cfg)?; - - // Send pending rewards to the user - let mut send_rewards_msgs = send_pending_rewards(deps.as_ref(), &cfg, &pool, &user, &account)?; - - // Instantiate the transfer call for the LP token - let transfer_msg = match &pool.reward_proxy { - Some(proxy) => WasmMsg::Execute { - contract_addr: proxy.to_string(), - funds: vec![], - msg: to_json_binary(&ProxyExecuteMsg::Withdraw { - account: account.to_string(), - amount, - })?, - }, - None => WasmMsg::Execute { - contract_addr: lp_token.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Transfer { - recipient: account.to_string(), - amount, - })?, - funds: vec![], - }, - }; - send_rewards_msgs.push(transfer_msg); - - // Update user's balance - let updated_amount = user.amount.checked_sub(amount)?; - let mut user = update_user_balance(user, &pool, updated_amount)?; - let lp_balance = query_lp_balance(deps.as_ref(), &env.contract.address, &lp_token, &pool)?; - - update_virtual_amount( - deps.querier, - &cfg, - &mut pool, - &mut user, - &account, - lp_balance, - )?; - - POOL_INFO.save(deps.storage, &lp_token, &pool)?; - - if !user.amount.is_zero() { - USER_INFO.save(deps.storage, (&lp_token, &account), &user)?; - } else { - USER_INFO.remove(deps.storage, (&lp_token, &account)); - } - - Ok(Response::new() - .add_messages(send_rewards_msgs) - .add_attribute("action", "withdraw") - .add_attribute("amount", amount)) -} -/// Withdraw LP tokens without caring about rewards. TO BE USED IN EMERGENCY SITUATIONS ONLY. -/// -/// * **lp_token** LP token to withdraw. -pub fn emergency_withdraw( - deps: DepsMut, - info: MessageInfo, - lp_token: String, -) -> Result { - let lp_token = deps.api.addr_validate(&lp_token)?; - - let mut pool = POOL_INFO.load(deps.storage, &lp_token)?; - let user = USER_INFO.compatible_load(deps.storage, (&lp_token, &info.sender))?; - - // Instantiate the transfer call for the LP token - let transfer_msg; - if let Some(proxy) = &pool.reward_proxy { - let accumulated_proxy_rewards: HashMap<_, _> = accumulate_pool_proxy_rewards(&pool, &user)? - .into_iter() - .collect(); - // All users' proxy rewards become orphaned - pool.orphan_proxy_rewards = pool - .orphan_proxy_rewards - .inner_ref() - .iter() - .map(|(addr, amount)| { - let user_amount = accumulated_proxy_rewards - .get(addr) - .cloned() - .unwrap_or_default(); - let amount = amount.checked_add(user_amount)?; - Ok((addr.clone(), amount)) - }) - .collect::>>()? - .into(); - - transfer_msg = WasmMsg::Execute { - contract_addr: proxy.to_string(), - msg: to_json_binary(&ProxyExecuteMsg::EmergencyWithdraw { - account: info.sender.to_string(), - amount: user.amount, - })?, - funds: vec![], - }; - } else { - transfer_msg = WasmMsg::Execute { - contract_addr: lp_token.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Transfer { - recipient: info.sender.to_string(), - amount: user.amount, - })?, - funds: vec![], - }; - } - - // Change the user's balance - USER_INFO.remove(deps.storage, (&lp_token, &info.sender)); - POOL_INFO.save(deps.storage, &lp_token, &pool)?; - - Ok(Response::new() - .add_message(transfer_msg) - .add_attribute("action", "emergency_withdraw") - .add_attribute("amount", user.amount)) -} - -/// Sends orphaned proxy rewards (which are left behind by emergency withdrawals) to another address. -/// -/// * **recipient** recipient of the orphaned rewards. -/// -/// * **lp_token** LP token whose orphaned rewards we send out. -fn send_orphan_proxy_rewards( - deps: DepsMut, - info: MessageInfo, - recipient: String, - lp_token: String, -) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - if info.sender != cfg.owner { - return Err(ContractError::Unauthorized {}); - }; - - let lp_token = deps.api.addr_validate(&lp_token)?; - let recipient = deps.api.addr_validate(&recipient)?; - - let mut pool = POOL_INFO.load(deps.storage, &lp_token)?; - - if pool.orphan_proxy_rewards.inner_ref().is_empty() { - return Err(ContractError::ZeroOrphanRewards {}); - } - - let proxy_rewards_holder = PROXY_REWARDS_HOLDER.load(deps.storage)?; - let submessages = pool - .orphan_proxy_rewards - .inner_ref() - .iter() - .filter(|(_, value)| !value.is_zero()) - .map(|(proxy, amount)| { - let msg = match &pool.reward_proxy { - Some(reward_proxy) if reward_proxy == proxy => SubMsg::new(WasmMsg::Execute { - contract_addr: reward_proxy.to_string(), - funds: vec![], - msg: to_json_binary(&ProxyExecuteMsg::SendRewards { - account: recipient.to_string(), - amount: *amount, - })?, - }), - _ => { - let asset_info = PROXY_REWARD_ASSET.load(deps.storage, proxy)?; - SubMsg::new(WasmMsg::Execute { - contract_addr: proxy_rewards_holder.to_string(), - funds: vec![], - msg: to_json_binary(&cw1_whitelist::msg::ExecuteMsg::Execute { - msgs: vec![Asset { - info: asset_info, - amount: *amount, - } - .into_msg::(&recipient)?], - })?, - }) - } - }; - - Ok(msg) - }) - .collect::>>()?; - - // Clear the orphaned proxy rewards - pool.orphan_proxy_rewards = Default::default(); - - POOL_INFO.save(deps.storage, &lp_token, &pool)?; - - Ok(Response::new() - .add_submessages(submessages) - .add_attribute("action", "send_orphan_rewards") - .add_attribute("recipient", recipient) - .add_attribute("lp_token", lp_token.to_string())) -} - -/// Builds init msg to initialize whitelist contract which keeps proxy rewards. -/// -/// * **admin** - whitelist contract admin (don't confuse with contract's admin which is able to migrate contract) -/// * **whitelist_code_id** - whitelist contract code id -fn init_proxy_rewards_holder( - owner: &Addr, - admin: &Addr, - whitelist_code_id: u64, -) -> Result { - let msg = SubMsg::reply_on_success( - CosmosMsg::Wasm(WasmMsg::Instantiate { - admin: Some(owner.to_string()), - code_id: whitelist_code_id, - funds: vec![], - label: "Proxy rewards holder".to_string(), - msg: to_json_binary(&cw1_whitelist::msg::InstantiateMsg { - admins: vec![admin.to_string()], - mutable: false, - })?, - }), - INIT_REWARDS_HOLDER_ID, - ); - - Ok(msg) -} - -/// Entry point of proxy migration process. Updates rewards state and appends callback to process -/// the next stage. -fn migrate_proxy( - deps: DepsMut, - env: Env, - info: MessageInfo, - lp_token: String, - new_proxy: String, -) -> Result { - let lp_addr = deps.api.addr_validate(&lp_token)?; - let new_proxy_addr = deps.api.addr_validate(&new_proxy)?; - - let cfg = CONFIG.load(deps.storage)?; - - // Permission check - if info.sender != cfg.owner { - return Err(ContractError::Unauthorized {}); - } - - // Check the pool has reward proxy - let pool_info = POOL_INFO.load(deps.storage, &lp_addr)?; - if let Some(proxy) = &pool_info.reward_proxy { - if proxy == new_proxy_addr { - return Err(StdError::generic_err("Can not migrate to the same proxy").into()); - } - } else { - return Err(StdError::generic_err("Pool does not have proxy").into()); - } - - update_rewards_and_execute( - deps, - env, - Some(vec![lp_addr.clone()]), - ExecuteOnReply::MigrateProxy { - lp_addr, - new_proxy_addr, - }, - ) -} - -/// Updates proxy state. Stores necessary mappings for old rewards and sets empty state for proxy. -/// Appends callback to stake LP tokens to the new proxy contract. -fn migrate_proxy_callback( - mut deps: DepsMut, - env: Env, - lp_addr: Addr, - new_proxy_addr: Addr, -) -> Result { - let mut pool_info = POOL_INFO.load(deps.storage, &lp_addr)?; - let cfg = CONFIG.load(deps.storage)?; - accumulate_rewards_per_share(&deps.querier, &env, &lp_addr, &mut pool_info, &cfg)?; - - // We've checked this before the callback so it's safe to unwrap here - let prev_proxy_addr = pool_info.reward_proxy.clone().unwrap(); - - let proxy_lp_balance: Uint128 = deps - .querier - .query_wasm_smart(&prev_proxy_addr, &ProxyQueryMsg::Deposit {})?; - - // Since we migrate to another proxy the proxy reward balance becomes 0. - pool_info.proxy_reward_balance_before_update = Uint128::zero(); - // Save a new index and orphan rewards for the new proxy - pool_info - .accumulated_proxy_rewards_per_share - .update(&new_proxy_addr, Decimal::zero())?; - pool_info - .orphan_proxy_rewards - .update(&new_proxy_addr, Uint128::zero())?; - // Set new proxy - pool_info.reward_proxy = Some(new_proxy_addr.clone()); - - POOL_INFO.save(deps.storage, &lp_addr, &pool_info)?; - - update_proxy_asset(deps.branch(), &new_proxy_addr)?; - - let mut response = Response::new(); - - // Transfer whole proxy reward balance to the rewards holder - let rewards_amount: Uint128 = deps - .querier - .query_wasm_smart(&prev_proxy_addr, &ProxyQueryMsg::Reward {})?; - if !rewards_amount.is_zero() { - let rewards_holder = PROXY_REWARDS_HOLDER.load(deps.storage)?; - let trasfer_rewards_msg = SubMsg::new(WasmMsg::Execute { - contract_addr: prev_proxy_addr.to_string(), - msg: to_json_binary(&ProxyExecuteMsg::SendRewards { - account: rewards_holder.to_string(), - amount: rewards_amount, - })?, - funds: vec![], - }); - response = response.add_submessage(trasfer_rewards_msg); - } - - // Migrate all LP tokens to new proxy contract - if !proxy_lp_balance.is_zero() { - // Firstly, transfer LP tokens to the generator address - let transfer_lp_msg = SubMsg::new(WasmMsg::Execute { - contract_addr: prev_proxy_addr.to_string(), - msg: to_json_binary(&ProxyExecuteMsg::Withdraw { - account: env.contract.address.to_string(), - amount: proxy_lp_balance, - })?, - funds: vec![], - }); - // Secondly, depositing them to new proxy through generator balance - let proxy_deposit_msg = ExecuteOnReply::MigrateProxyDepositLP { - lp_addr, - prev_proxy_addr, - amount: proxy_lp_balance, - } - .into_submsg(&env)?; - Ok(response.add_submessages(vec![transfer_lp_msg, proxy_deposit_msg])) - } else { - // Nothing to migrate - Ok(response.add_attributes([ - attr("action", "migrate_proxy"), - attr("lp_token", lp_addr), - attr("from", prev_proxy_addr), - attr("to", new_proxy_addr), - ])) - } -} - -/// Stakes LP tokens into the new proxy contract. -fn migrate_proxy_deposit_lp( - deps: DepsMut, - lp_addr: Addr, - prev_proxy: Addr, - amount: Uint128, -) -> Result { - let pool_info = POOL_INFO.load(deps.storage, &lp_addr)?; - // We've set it before the callback so it's safe to unwrap here - let new_proxy = pool_info.reward_proxy.unwrap(); - - // Depositing LP tokens to new proxy - let deposit_msg = WasmMsg::Execute { - contract_addr: lp_addr.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Send { - contract: new_proxy.to_string(), - msg: to_json_binary(&ProxyCw20HookMsg::Deposit {})?, - amount, - })?, - funds: vec![], - }; - - Ok(Response::new().add_message(deposit_msg).add_attributes([ - attr("action", "migrate_proxy"), - attr("lp_token", lp_addr), - attr("from", prev_proxy), - attr("to", new_proxy), - ])) -} - -/// Sets the reward proxy contract for a specific generator. -fn move_to_proxy( - mut deps: DepsMut, - env: Env, - info: MessageInfo, - lp_token: String, - proxy: String, -) -> Result { - let lp_addr = deps.api.addr_validate(&lp_token)?; - let proxy_addr = deps.api.addr_validate(&proxy)?; - - let cfg = CONFIG.load(deps.storage)?; - - // Permission check - if info.sender != cfg.owner { - return Err(ContractError::Unauthorized {}); - } - - if !POOL_INFO.has(deps.storage, &lp_addr) { - create_pool(deps.branch(), &env, &lp_addr, &cfg)?; - } - - let mut pool_info = POOL_INFO.load(deps.storage, &lp_addr)?; - if pool_info.reward_proxy.is_some() { - return Err(ContractError::PoolAlreadyHasRewardProxyContract {}); - } - - update_proxy_asset(deps.branch(), &proxy_addr)?; - pool_info - .orphan_proxy_rewards - .update(&proxy_addr, Uint128::zero())?; - pool_info - .accumulated_proxy_rewards_per_share - .update(&proxy_addr, Decimal::zero())?; - pool_info.reward_proxy = Some(proxy_addr); - - let res: BalanceResponse = deps.querier.query_wasm_smart( - &lp_addr, - &Cw20QueryMsg::Balance { - address: env.contract.address.to_string(), - }, - )?; - - let messages = if !res.balance.is_zero() { - vec![WasmMsg::Execute { - contract_addr: lp_addr.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Send { - contract: pool_info.reward_proxy.clone().unwrap().to_string(), - msg: to_json_binary(&ProxyCw20HookMsg::Deposit {})?, - amount: res.balance, - })?, - funds: vec![], - }] - } else { - vec![] - }; - - POOL_INFO.save(deps.storage, &lp_addr, &pool_info)?; - - Ok(Response::new() - .add_messages(messages) - .add_attributes(vec![attr("action", "move_to_proxy"), attr("proxy", proxy)])) -} - -/// Exposes all the queries available in the contract. -/// -/// ## Queries -/// * **QueryMsg::PoolLength {}** Returns the amount of instantiated generators using a [`PoolLengthResponse`] object. -/// -/// * **QueryMsg::Deposit { lp_token, user }** Returns the amount of LP tokens staked by a user in a specific generator. -/// -/// * **QueryMsg::PendingToken { lp_token, user }** Returns the amount of pending rewards a user earned using -/// a [`PendingTokenResponse`] object. -/// -/// * **QueryMsg::Config {}** Returns the Generator contract configuration using a [`ConfigResponse`] object. -/// -/// * **QueryMsg::RewardInfo { lp_token }** Returns reward information about a specific generator -/// using a [`RewardInfoResponse`] object. -/// -/// * **QueryMsg::OrphanProxyRewards { lp_token }** Returns the amount of orphaned proxy rewards for a specific generator. -/// -/// * **QueryMsg::PoolInfo { lp_token }** Returns general information about a generator using a [`PoolInfoResponse`] object. -/// -/// * **QueryMsg::SimulateFutureReward { lp_token, future_block }** Returns the amount of token rewards a generator will -/// distribute up to a future block. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> Result { - match msg { - QueryMsg::TotalVirtualSupply { generator } => { - Ok(to_json_binary(&total_virtual_supply(deps, generator)?)?) - } - QueryMsg::ActivePoolLength {} => { - let config = CONFIG.load(deps.storage)?; - Ok(to_json_binary(&config.active_pools.len())?) - } - QueryMsg::PoolLength {} => { - let length = POOL_INFO - .keys(deps.storage, None, None, Order::Ascending) - .count(); - Ok(to_json_binary(&length)?) - } - QueryMsg::UserVirtualAmount { lp_token, user } => Ok(to_json_binary( - &query_virtual_amount(deps, lp_token, user)?, - )?), - QueryMsg::Deposit { lp_token, user } => { - Ok(to_json_binary(&query_deposit(deps, lp_token, user)?)?) - } - QueryMsg::PendingToken { lp_token, user } => { - Ok(to_json_binary(&pending_token(deps, env, lp_token, user)?)?) - } - QueryMsg::Config {} => Ok(to_json_binary(&CONFIG.load(deps.storage)?)?), - QueryMsg::RewardInfo { lp_token } => { - Ok(to_json_binary(&query_reward_info(deps, lp_token)?)?) - } - QueryMsg::OrphanProxyRewards { lp_token } => Ok(to_json_binary( - &query_orphan_proxy_rewards(deps, lp_token)?, - )?), - QueryMsg::PoolInfo { lp_token } => { - Ok(to_json_binary(&query_pool_info(deps, env, lp_token)?)?) - } - QueryMsg::SimulateFutureReward { - lp_token, - future_block, - } => { - let cfg = CONFIG.load(deps.storage)?; - let alloc_point = - get_alloc_point(&cfg.active_pools, &deps.api.addr_validate(&lp_token)?); - - Ok(to_json_binary(&calculate_rewards( - future_block - env.block.height, - &alloc_point, - &cfg, - )?)?) - } - QueryMsg::BlockedTokensList {} => Ok(to_json_binary( - &CONFIG.load(deps.storage)?.blocked_tokens_list, - )?), - QueryMsg::PoolStakers { - lp_token, - start_after, - limit, - } => Ok(to_json_binary(&query_list_of_stakers( - deps, - lp_token, - start_after, - limit, - )?)?), - QueryMsg::RewardProxiesList {} => Ok(to_json_binary( - &PROXY_REWARD_ASSET - .keys(deps.storage, None, None, Order::Ascending) - .collect::, StdError>>()?, - )?), - } -} - -/// Return total virtual supply by pool -pub fn total_virtual_supply(deps: Deps, generator: String) -> Result { - let generator_addr = deps.api.addr_validate(&generator)?; - let pool = POOL_INFO.load(deps.storage, &generator_addr)?; - - Ok(pool.total_virtual_supply) -} - -/// Returns the amount of LP tokens a user staked in a specific generator. -/// -/// * **lp_token** LP token for which we query the user's balance for. -/// -/// * **user** user whose balance we query. -pub fn query_deposit(deps: Deps, lp_token: String, user: String) -> Result { - let lp_token = deps.api.addr_validate(&lp_token)?; - let user = deps.api.addr_validate(&user)?; - - let user_info = USER_INFO - .compatible_load(deps.storage, (&lp_token, &user)) - .unwrap_or_default(); - Ok(user_info.amount) -} - -/// Returns the user virtual amount in a specific generator. -/// -/// * **lp_token** LP token for which we query the user's emission rewards for. -/// -/// * **user** user whose virtual amount we're query. -pub fn query_virtual_amount( - deps: Deps, - lp_token: String, - user: String, -) -> Result { - let lp_token = deps.api.addr_validate(&lp_token)?; - let user = deps.api.addr_validate(&user)?; - - let user_info = USER_INFO - .compatible_load(deps.storage, (&lp_token, &user)) - .unwrap_or_default(); - Ok(user_info.virtual_amount) -} - -/// Calculates and returns the pending token rewards for a specific user. -/// -/// * **lp_token** LP token staked by the user whose pending rewards we calculate. -/// -/// * **user** user for which we fetch the amount of pending token rewards. -pub fn pending_token( - deps: Deps, - env: Env, - lp_token: String, - user: String, -) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - let lp_token = deps.api.addr_validate(&lp_token)?; - let user = deps.api.addr_validate(&user)?; - - let pool = POOL_INFO.load(deps.storage, &lp_token)?; - let user_info = USER_INFO - .compatible_load(deps.storage, (&lp_token, &user)) - .unwrap_or_default(); - - let mut pending_on_proxy = None; - - if let Some(proxy) = &pool.reward_proxy { - let proxy_lp_supply: Uint128 = deps - .querier - .query_wasm_smart(proxy, &ProxyQueryMsg::Deposit {})?; - - if !proxy_lp_supply.is_zero() { - let proxy_rewards = accumulate_pool_proxy_rewards(&pool, &user_info)? - .into_iter() - .map(|(proxy_addr, mut reward)| { - // Add reward pending on proxy - if proxy_addr.eq(proxy) { - let res: Option = deps - .querier - .query_wasm_smart(proxy, &ProxyQueryMsg::PendingToken {})?; - if let Some(token_rewards) = res { - let share = user_info - .amount - .multiply_ratio(token_rewards, proxy_lp_supply); - reward = reward.checked_add(share)?; - } - } - let info = PROXY_REWARD_ASSET.load(deps.storage, &proxy_addr)?; - Ok(Asset { - info, - amount: reward, - }) - }) - .collect::>>()?; - - pending_on_proxy = Some(proxy_rewards); - } - } - - let lp_supply = pool.total_virtual_supply; - - let mut acc_per_share = pool.reward_global_index; - if env.block.height > pool.last_reward_block.u64() && !lp_supply.is_zero() { - let alloc_point = get_alloc_point(&cfg.active_pools, &lp_token); - - let token_rewards = calculate_rewards( - env.block.height - pool.last_reward_block.u64(), - &alloc_point, - &cfg, - )?; - let share = Decimal::from_ratio(token_rewards, lp_supply); - acc_per_share = pool.reward_global_index.checked_add(share)?; - } - - // we should calculate rewards by virtual amount - let pending = (acc_per_share - user_info.reward_user_index) - .checked_mul_uint128(user_info.virtual_amount)?; - - Ok(PendingTokenResponse { - pending, - pending_on_proxy, - }) -} - -/// Returns reward information for a specific generator using a [`RewardInfoResponse`] object. -/// ## Params -/// -/// * **lp_token** LP token whose generator we query for reward information. -fn query_reward_info(deps: Deps, lp_token: String) -> Result { - let config = CONFIG.load(deps.storage)?; - - let lp_token = deps.api.addr_validate(&lp_token)?; - - let pool = POOL_INFO.load(deps.storage, &lp_token)?; - - let proxy_reward_token = pool - .reward_proxy - .map(|proxy| { - deps.querier - .query_wasm_smart(proxy, &ProxyQueryMsg::RewardInfo {}) - }) - .transpose()?; - - Ok(RewardInfoResponse { - base_reward_token: config.astro_token, - proxy_reward_token, - }) -} - -/// Returns a vector of pairs (asset, amount), where 'asset' is an object of type [`AssetInfo`] -/// and 'amount' is amount of orphaned proxy rewards for a specific generator. -/// -/// * **lp_token** LP token whose generator we query for orphaned rewards. -fn query_orphan_proxy_rewards( - deps: Deps, - lp_token: String, -) -> Result, ContractError> { - let lp_token = deps.api.addr_validate(&lp_token)?; - - let pool = POOL_INFO.load(deps.storage, &lp_token)?; - if pool.reward_proxy.is_some() { - let orphan_rewards = pool - .orphan_proxy_rewards - .inner_ref() - .iter() - .map(|(proxy, amount)| { - let asset = PROXY_REWARD_ASSET.load(deps.storage, proxy)?; - Ok((asset, *amount)) - }) - .collect::>>()?; - Ok(orphan_rewards) - } else { - Err(ContractError::PoolDoesNotHaveAdditionalRewards {}) - } -} - -/// Returns a generator's configuration using a [`PoolInfoResponse`] object. -/// -/// * **lp_token** LP token whose generator we query. -fn query_pool_info( - deps: Deps, - env: Env, - lp_token: String, -) -> Result { - let config = CONFIG.load(deps.storage)?; - - let lp_token = deps.api.addr_validate(&lp_token)?; - let pool = POOL_INFO.load(deps.storage, &lp_token)?; - - let lp_supply: Uint128; - let mut pending_on_proxy = None; - let mut pending_astro_rewards = Uint128::zero(); - - // If proxy rewards are live for this LP token, calculate its pending proxy rewards - match &pool.reward_proxy { - Some(proxy) => { - lp_supply = deps - .querier - .query_wasm_smart(proxy, &ProxyQueryMsg::Deposit {})?; - - // If LP tokens are staked via a proxy contract, fetch current pending proxy rewards - if !lp_supply.is_zero() { - let res: Uint128 = deps - .querier - .query_wasm_smart(proxy, &ProxyQueryMsg::PendingToken {})?; - - if !res.is_zero() { - pending_on_proxy = Some(res); - } - } - } - None => { - lp_supply = query_token_balance( - &deps.querier, - lp_token.clone(), - env.contract.address.clone(), - )?; - } - } - - let alloc_point = get_alloc_point(&config.active_pools, &lp_token); - - // Calculate pending ASTRO rewards - if env.block.height > pool.last_reward_block.u64() && !lp_supply.is_zero() { - pending_astro_rewards = calculate_rewards( - env.block.height - pool.last_reward_block.u64(), - &alloc_point, - &config, - )?; - } - - // Calculate ASTRO tokens being distributed per block to this LP token pool - let astro_tokens_per_block = config - .tokens_per_block - .checked_mul(alloc_point)? - .checked_div(config.total_alloc_point) - .unwrap_or_else(|_| Uint128::zero()); - - Ok(PoolInfoResponse { - alloc_point, - astro_tokens_per_block, - last_reward_block: pool.last_reward_block.u64(), - current_block: env.block.height, - pending_astro_rewards, - reward_proxy: pool.reward_proxy, - pending_proxy_rewards: pending_on_proxy, - accumulated_proxy_rewards_per_share: pool - .accumulated_proxy_rewards_per_share - .inner_ref() - .clone(), - proxy_reward_balance_before_update: pool.proxy_reward_balance_before_update, - orphan_proxy_rewards: pool.orphan_proxy_rewards.inner_ref().clone(), - lp_supply, - global_reward_index: pool.reward_global_index, - }) -} - -/// Returns a list of stakers that currently have funds in a specific generator. -/// -/// * **lp_token** LP token whose generator we query for stakers. -/// -/// * **start_after** optional field that specifies whether the function should return a list of stakers starting from a -/// specific address onward. -/// -/// * **limit** max amount of staker addresses to return. -pub fn query_list_of_stakers( - deps: Deps, - lp_token: String, - start_after: Option, - limit: Option, -) -> Result, ContractError> { - let lp_addr = deps.api.addr_validate(&lp_token)?; - let mut active_stakers: Vec = vec![]; - - if POOL_INFO.has(deps.storage, &lp_addr) { - let limit = limit.unwrap_or(DEFAULT_LIMIT).min(MAX_LIMIT) as usize; - let start = addr_opt_validate(deps.api, &start_after)?; - let start = start.as_ref().map(Bound::exclusive); - - active_stakers = USER_INFO - .prefix(&lp_addr) - .range(deps.storage, start, None, Order::Ascending) - .filter_map(|stakers| { - stakers - .ok() - .map(|staker| StakerResponse { - account: staker.0.to_string(), - amount: staker.1.amount, - }) - .filter(|active_staker| !active_staker.amount.is_zero()) - }) - .take(limit) - .collect(); - } - - Ok(active_stakers) -} - -/// Calculates and returns the amount of accrued rewards since the last reward checkpoint for a specific generator. -/// -/// * **alloc_point** allocation points for specific generator. -pub fn calculate_rewards(n_blocks: u64, alloc_point: &Uint128, cfg: &Config) -> StdResult { - let r = Uint128::from(n_blocks) - .checked_mul(cfg.tokens_per_block)? - .checked_mul(*alloc_point)? - .checked_div(cfg.total_alloc_point) - .unwrap_or_else(|_| Uint128::zero()); - - Ok(r) -} - -/// Gets allocation point of the pool. -/// -/// * **pools** is a vector of set that contains LP token address and allocation point. -pub fn get_alloc_point(pools: &[(Addr, Uint128)], lp_token: &Addr) -> Uint128 { - pools - .iter() - .find_map(|(addr, alloc_point)| { - if addr == lp_token { - return Some(*alloc_point); - } - None - }) - .unwrap_or_else(Uint128::zero) -} - -/// Creates pool if it is allowed in the factory. -pub fn create_pool( - deps: DepsMut, - env: &Env, - lp_token: &Addr, - cfg: &Config, -) -> Result<(), ContractError> { - let factory_cfg: FactoryConfigResponse = deps - .querier - .query_wasm_smart(&cfg.factory, &FactoryQueryMsg::Config {})?; - - let pair_info = pair_info_by_pool(&deps.querier, lp_token)?; - let pair_config = factory_cfg - .pair_configs - .into_iter() - .find(|pair| pair.pair_type == pair_info.pair_type) - .ok_or(ContractError::PairNotRegistered {})?; - - if pair_config.is_disabled || pair_config.is_generator_disabled { - return Err(ContractError::GeneratorIsDisabled {}); - } - - POOL_INFO.save( - deps.storage, - lp_token, - &PoolInfo { - last_reward_block: cfg.start_block.max(Uint64::from(env.block.height)), - reward_proxy: None, - accumulated_proxy_rewards_per_share: Default::default(), - proxy_reward_balance_before_update: Uint128::zero(), - orphan_proxy_rewards: Default::default(), - has_asset_rewards: false, - reward_global_index: Decimal::zero(), - total_virtual_supply: Default::default(), - }, - )?; - - Ok(()) -} - -/// Manages contract migration -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(mut deps: DepsMut, env: Env, msg: MigrateMsg) -> Result { - let contract_version = get_contract_version(deps.storage)?; - - match contract_version.contract.as_ref() { - "astroport-generator" => match contract_version.version.as_ref() { - "2.2.0" | "2.2.0+togrb" => { - migration::migrate_configs_from_v220(&mut deps, &msg)?; - } - "2.3.0" => { - if env.block.chain_id == "neutron-1" { - migration::fix_neutron_users_reward_indexes(&mut deps)?; - } - } - "2.3.1" => {} - _ => return Err(ContractError::MigrationError {}), - }, - _ => return Err(ContractError::MigrationError {}), - }; - - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - let mut response = Response::new(); - // Initialize the contract if it is not already initialized - if PROXY_REWARDS_HOLDER.may_load(deps.storage)?.is_none() { - let config = CONFIG.load(deps.storage)?; - let init_reward_holder_msg = init_proxy_rewards_holder( - &config.owner, - &env.contract.address, - msg.whitelist_code_id.unwrap(), - )?; - response = response.add_submessage(init_reward_holder_msg); - } - - Ok(response - .add_attribute("previous_contract_name", &contract_version.contract) - .add_attribute("previous_contract_version", &contract_version.version) - .add_attribute("new_contract_name", CONTRACT_NAME) - .add_attribute("new_contract_version", CONTRACT_VERSION)) -} diff --git a/contracts/tokenomics/generator/src/error.rs b/contracts/tokenomics/generator/src/error.rs deleted file mode 100644 index 3b61be57e..000000000 --- a/contracts/tokenomics/generator/src/error.rs +++ /dev/null @@ -1,57 +0,0 @@ -use cosmwasm_std::{OverflowError, StdError}; -use thiserror::Error; - -/// This enum describes generator contract errors -#[derive(Error, Debug, PartialEq)] -pub enum ContractError { - #[error("{0}")] - Std(#[from] StdError), - - #[error("Unauthorized")] - Unauthorized {}, - - #[error("Insufficient balance in contract to process claim")] - BalanceTooSmall {}, - - #[error("Reward proxy not allowed!")] - RewardProxyNotAllowed {}, - - #[error("Pool doesn't have additional rewards!")] - PoolDoesNotHaveAdditionalRewards {}, - - #[error("Insufficient amount of orphan rewards!")] - ZeroOrphanRewards {}, - - #[error("Contract can't be migrated!")] - MigrationError {}, - - #[error("The pool already has a reward proxy contract!")] - PoolAlreadyHasRewardProxyContract {}, - - #[error("Generator is disabled!")] - GeneratorIsDisabled {}, - - #[error("Duplicate of pool")] - PoolDuplicate {}, - - #[error("Pair is not registered in factory!")] - PairNotRegistered {}, - - #[error("ASTRO or native assets cannot be blocked! You are trying to block {asset}")] - AssetCannotBeBlocked { asset: String }, - - #[error("Maximum generator limit exceeded!")] - GeneratorsLimitExceeded {}, - - #[error("You can not withdraw 0 LP tokens.")] - ZeroWithdraw {}, - - #[error("Failed to parse or process reply message")] - FailedToParseReply {}, -} - -impl From for ContractError { - fn from(o: OverflowError) -> Self { - StdError::from(o).into() - } -} diff --git a/contracts/tokenomics/generator/src/lib.rs b/contracts/tokenomics/generator/src/lib.rs deleted file mode 100644 index 194c0780d..000000000 --- a/contracts/tokenomics/generator/src/lib.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod contract; -pub mod error; -mod migration; -pub mod state; diff --git a/contracts/tokenomics/generator/src/migration.rs b/contracts/tokenomics/generator/src/migration.rs deleted file mode 100644 index 9783e6d26..000000000 --- a/contracts/tokenomics/generator/src/migration.rs +++ /dev/null @@ -1,93 +0,0 @@ -use crate::state::{CONFIG, USER_INFO}; -use astroport::asset::AssetInfo; - -use astroport::generator::{Config, MigrateMsg}; -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Addr, Decimal, DepsMut, StdError, StdResult, Uint128, Uint64}; -use cw_storage_plus::Item; - -/// This structure stores the core parameters for the Generator contract. -#[cw_serde] -pub struct ConfigV220 { - /// Address allowed to change contract parameters - pub owner: Addr, - /// The Factory address - pub factory: Addr, - /// Contract address which can only set active generators and their alloc points - pub generator_controller: Option, - /// The voting escrow contract address - pub voting_escrow: Option, - /// [`AssetInfo`] of the ASTRO token - pub astro_token: AssetInfo, - /// Total amount of ASTRO rewards per block - pub tokens_per_block: Uint128, - /// Total allocation points. Must be the sum of all allocation points in all active generators - pub total_alloc_point: Uint128, - /// The block number when the ASTRO distribution starts - pub start_block: Uint64, - /// The vesting contract from which rewards are distributed - pub vesting_contract: Addr, - /// The list of active pools with allocation points - pub active_pools: Vec<(Addr, Uint128)>, - /// The list of blocked tokens - pub blocked_tokens_list: Vec, - /// The guardian address which can add or remove tokens from blacklist - pub guardian: Option, - /// The amount of generators - pub checkpoint_generator_limit: Option, -} - -/// Stores the contract config(V2.2.0) at the given key -pub const CONFIG_V220: Item = Item::new("config"); - -/// Migrate config from V2.2.0 -pub fn migrate_configs_from_v220(deps: &mut DepsMut, msg: &MigrateMsg) -> StdResult<()> { - let cfg_220 = CONFIG_V220.load(deps.storage)?; - - let mut cfg = Config { - owner: cfg_220.owner, - factory: cfg_220.factory, - generator_controller: cfg_220.generator_controller, - voting_escrow: cfg_220.voting_escrow, - voting_escrow_delegation: None, - astro_token: cfg_220.astro_token, - tokens_per_block: cfg_220.tokens_per_block, - total_alloc_point: cfg_220.total_alloc_point, - start_block: cfg_220.start_block, - vesting_contract: cfg_220.vesting_contract, - active_pools: cfg_220.active_pools, - blocked_tokens_list: cfg_220.blocked_tokens_list, - guardian: cfg_220.guardian, - checkpoint_generator_limit: cfg_220.checkpoint_generator_limit, - }; - - if let Some(voting_escrow_delegation) = &msg.voting_escrow_delegation { - cfg.voting_escrow_delegation = Some(deps.api.addr_validate(voting_escrow_delegation)?); - } - - CONFIG.save(deps.storage, &cfg) -} - -pub fn fix_neutron_users_reward_indexes(deps: &mut DepsMut) -> StdResult<()> { - let pool1 = - Addr::unchecked("neutron1sx99fxy4lqx0nv3ys86tkdrch82qygxyec5c8dxsk9raz4at5zpq48m66c"); - let pool2 = - Addr::unchecked("neutron1jkcf80nd4pfc2krce3xk9m9y994pllq58avx89sfzqlalej4frus27ms3a"); - - let depositor = - Addr::unchecked("neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj"); - - // We already know that the new user info structure is used and that the values of that type exist there - USER_INFO.update::<_, StdError>(deps.storage, (&pool1, &depositor), |v| { - let mut r = v.unwrap(); - r.reward_user_index += Decimal::raw(1960025734161847622); - Ok(r) - })?; - USER_INFO.update::<_, StdError>(deps.storage, (&pool2, &depositor), |v| { - let mut r = v.unwrap(); - r.reward_user_index += Decimal::raw(1301823709312052739); - Ok(r) - })?; - - Ok(()) -} diff --git a/contracts/tokenomics/generator/src/state.rs b/contracts/tokenomics/generator/src/state.rs deleted file mode 100644 index c9dd38434..000000000 --- a/contracts/tokenomics/generator/src/state.rs +++ /dev/null @@ -1,305 +0,0 @@ -use astroport::asset::AssetInfo; -use astroport::common::OwnershipProposal; -use astroport::restricted_vector::RestrictedVector; -use astroport::DecimalCheckedOps; -use astroport::{ - generator::{PoolInfo, UserInfo, UserInfoV2}, - generator_proxy::QueryMsg as ProxyQueryMsg, -}; -use astroport_governance::voting_escrow::{get_total_voting_power, get_voting_power}; -use astroport_governance::voting_escrow_delegation::get_adjusted_balance; -use cosmwasm_std::{Addr, Decimal, Deps, DepsMut, QuerierWrapper, StdResult, Storage, Uint128}; - -use astroport::generator::Config; -use cw20::BalanceResponse; -use cw_storage_plus::{Item, Map}; - -use std::collections::HashMap; - -/// Constants to update user's virtual amount. For more info see update_virtual_amount() documentation. -/// 0.4 of the LP tokens amount. -const REAL_SHARE: Decimal = Decimal::raw(400000000000000000); -/// 0.6 of the user's voting power aka vxASTRO balance. -const VXASTRO_SHARE: Decimal = Decimal::raw(600000000000000000); - -/// Stores the contract config at the given key -pub const CONFIG: Item = Item::new("config"); -/// This is a map that contains information about all generators. -/// -/// The first key is the address of a LP token, the second key is an object of type [`PoolInfo`]. -pub const POOL_INFO: Map<&Addr, PoolInfo> = Map::new("pool_info"); - -/// This is a map that contains information about all stakers. -/// -/// The first key is an LP token address, the second key is a depositor address. -pub const USER_INFO: Map<(&Addr, &Addr), UserInfoV2> = Map::new("user_info"); -/// Old USER_INFO storage interface for backward compatibility -pub const OLD_USER_INFO: Map<(&Addr, &Addr), UserInfo> = Map::new("user_info"); -/// Previous proxy rewards holder -pub const PROXY_REWARDS_HOLDER: Item = Item::new("proxy_rewards_holder"); -/// The struct which maps previous proxy addresses to reward assets -pub const PROXY_REWARD_ASSET: Map<&Addr, AssetInfo> = Map::new("proxy_reward_asset"); - -pub trait CompatibleLoader { - fn compatible_load(&self, store: &dyn Storage, key: K) -> StdResult; -} - -impl CompatibleLoader<(&Addr, &Addr), UserInfoV2> for Map<'_, (&Addr, &Addr), UserInfoV2> { - fn compatible_load(&self, store: &dyn Storage, key: (&Addr, &Addr)) -> StdResult { - self.load(store, key).or_else(|_| { - let old_user_info = OLD_USER_INFO.load(store, key)?; - let pool_info = POOL_INFO.load(store, key.0)?; - let mut reward_debt_proxy = RestrictedVector::default(); - if let Some((first_reward_proxy, _)) = pool_info - .accumulated_proxy_rewards_per_share - .inner_ref() - .first() - { - reward_debt_proxy = RestrictedVector::new( - first_reward_proxy.clone(), - old_user_info.reward_debt_proxy, - ) - } - - let current_reward = pool_info - .reward_global_index - .checked_mul_uint128(old_user_info.amount)? - .checked_sub(old_user_info.reward_debt)?; - - let user_index = pool_info.reward_global_index - - Decimal::from_ratio(current_reward, old_user_info.amount); - - let user_info = UserInfoV2 { - amount: old_user_info.amount, - reward_user_index: user_index, - reward_debt_proxy, - virtual_amount: old_user_info.amount, - }; - - Ok(user_info) - }) - } -} - -/// ## Pagination settings -/// The maximum amount of users that can be read at once from [`USER_INFO`] -pub const MAX_LIMIT: u32 = 30; - -/// The default amount of users to read from [`USER_INFO`] -pub const DEFAULT_LIMIT: u32 = 10; - -/// Contains a proposal to change contract ownership. -pub const OWNERSHIP_PROPOSAL: Item = Item::new("ownership_proposal"); - -/// The default limit of generators to update user emission -pub const CHECKPOINT_GENERATORS_LIMIT: u32 = 24; - -/// Update user balance. -pub fn update_user_balance( - mut user: UserInfoV2, - pool: &PoolInfo, - amount: Uint128, -) -> StdResult { - user.amount = amount; - user.reward_user_index = pool.reward_global_index; - - user.reward_debt_proxy = pool - .accumulated_proxy_rewards_per_share - .inner_ref() - .iter() - .map(|(proxy, rewards_per_share)| { - let rewards_debt = rewards_per_share.checked_mul_uint128(user.amount)?; - Ok((proxy.clone(), rewards_debt)) - }) - .collect::>>()? - .into(); - - Ok(user) -} - -/// Returns the vector of reward amount per proxy taking into account the amount of debited rewards. -pub fn accumulate_pool_proxy_rewards( - pool: &PoolInfo, - user: &UserInfoV2, -) -> StdResult> { - if pool - .accumulated_proxy_rewards_per_share - .inner_ref() - .is_empty() - { - return Ok(vec![]); - } - let rewards_debt_map: HashMap<_, _> = - user.reward_debt_proxy.inner_ref().iter().cloned().collect(); - pool.accumulated_proxy_rewards_per_share - .inner_ref() - .iter() - .map(|(proxy, rewards_per_share)| { - let reward_debt = rewards_debt_map.get(proxy).cloned().unwrap_or_default(); - let pending_proxy_rewards = rewards_per_share - .checked_mul_uint128(user.amount)? - .saturating_sub(reward_debt); - - Ok((proxy.clone(), pending_proxy_rewards)) - }) - .collect() -} - -/// Saves map between a proxy and an asset info if it is not saved yet. -pub fn update_proxy_asset(deps: DepsMut, proxy_addr: &Addr) -> StdResult<()> { - if !PROXY_REWARD_ASSET.has(deps.storage, proxy_addr) { - let proxy_cfg: astroport::generator_proxy::ConfigResponse = deps - .querier - .query_wasm_smart(proxy_addr, &astroport::generator_proxy::QueryMsg::Config {})?; - let asset = AssetInfo::Token { - contract_addr: deps.api.addr_validate(&proxy_cfg.reward_token_addr)?, - }; - PROXY_REWARD_ASSET.save(deps.storage, proxy_addr, &asset)? - } - - Ok(()) -} - -/// Updates virtual amount for specified user and generator -/// -/// **b_u = min(0.4 * b_u + 0.6 * S * (w_i / W), b_u)** -/// -/// - b_u is the amount of LP tokens a user staked in a generator -/// -/// - S is the total amount of LP tokens staked in a generator -/// - w_i is a user’s current vxASTRO balance -/// - W is the total amount of vxASTRO -pub(crate) fn update_virtual_amount( - querier: QuerierWrapper, - cfg: &Config, - pool: &mut PoolInfo, - user_info: &mut UserInfoV2, - account: &Addr, - lp_balance: Uint128, -) -> StdResult<()> { - let mut user_vp = Uint128::zero(); - let mut total_vp = Uint128::zero(); - - if let Some(voting_escrow) = &cfg.voting_escrow { - if let Some(voting_delegation) = &cfg.voting_escrow_delegation { - user_vp = get_adjusted_balance( - &querier, - voting_delegation.to_string(), - account.to_string(), - None, - )?; - } else { - user_vp = get_voting_power(&querier, voting_escrow, account.to_string())?; - } - - total_vp = get_total_voting_power(&querier, voting_escrow)?; - } - - let user_virtual_share = user_info.amount * REAL_SHARE; - - let total_virtual_share = lp_balance * VXASTRO_SHARE; - - let vx_share_emission = if !total_vp.is_zero() { - Decimal::from_ratio(user_vp, total_vp) - } else { - Decimal::zero() - }; - - let current_virtual_amount = user_info - .amount - .min(user_virtual_share + vx_share_emission * total_virtual_share); - - pool.total_virtual_supply = pool - .total_virtual_supply - .checked_sub(user_info.virtual_amount)? - .checked_add(current_virtual_amount)?; - - user_info.virtual_amount = current_virtual_amount; - - Ok(()) -} - -/// Query total LP tokens balance for specified generator. -/// If tokens are staked in proxy, then query proxy balance. Otherwise query generator contract balance. -pub(crate) fn query_lp_balance( - deps: Deps, - generator_addr: &Addr, - lp_token: &Addr, - pool_info: &PoolInfo, -) -> StdResult { - let lp_amount = if let Some(proxy) = &pool_info.reward_proxy { - deps.querier - .query_wasm_smart(proxy, &ProxyQueryMsg::Deposit {})? - } else { - let res: BalanceResponse = deps.querier.query_wasm_smart( - lp_token, - &cw20::Cw20QueryMsg::Balance { - address: generator_addr.to_string(), - }, - )?; - res.balance - }; - Ok(lp_amount) -} - -#[cfg(test)] -mod tests { - - use cosmwasm_std::{ - testing::{mock_dependencies, MOCK_CONTRACT_ADDR}, - Uint64, - }; - - use super::*; - - #[test] - fn compatible_load() { - let mut deps = mock_dependencies(); - - let mock_address = Addr::unchecked(MOCK_CONTRACT_ADDR); - - POOL_INFO - .save( - deps.as_mut().storage, - &mock_address, - &PoolInfo { - last_reward_block: Uint64::zero(), - reward_global_index: Decimal::from_ratio(10u128, 1u128), - reward_proxy: Some(mock_address.clone()), - accumulated_proxy_rewards_per_share: RestrictedVector::new( - mock_address.clone(), - Decimal::from_ratio(10u128, 1u128), - ), - proxy_reward_balance_before_update: Uint128::new(20), - orphan_proxy_rewards: RestrictedVector::default(), - has_asset_rewards: false, - total_virtual_supply: Uint128::new(2), - }, - ) - .unwrap(); - - OLD_USER_INFO - .save( - deps.as_mut().storage, - (&mock_address, &mock_address), - &UserInfo { - amount: Uint128::new(2), - reward_debt: Uint128::new(10), - reward_debt_proxy: Uint128::new(10), - }, - ) - .unwrap(); - - assert_eq!( - USER_INFO - .compatible_load(deps.as_ref().storage, (&mock_address, &mock_address)) - .unwrap(), - UserInfoV2 { - amount: Uint128::new(2), - reward_debt_proxy: RestrictedVector::new(mock_address.clone(), Uint128::new(10)), - reward_user_index: Decimal::from_ratio(5u128, 1u128), - virtual_amount: Uint128::new(2) - } - ); - } -} diff --git a/contracts/tokenomics/incentives/Cargo.toml b/contracts/tokenomics/incentives/Cargo.toml index 1757f0d0b..76c0cf3f0 100644 --- a/contracts/tokenomics/incentives/Cargo.toml +++ b/contracts/tokenomics/incentives/Cargo.toml @@ -15,15 +15,15 @@ crate-type = ["cdylib", "rlib"] library = [] [dependencies] -cosmwasm-std = "1.3" -cw-storage-plus = "0.15" -cosmwasm-schema = "1.4" -cw2 = "1" +cosmwasm-std.workspace = true +cw-storage-plus.workspace = true +cosmwasm-schema.workspace = true +cw2.workspace = true cw20 = "1" -cw-utils = "1" -astroport = { path = "../../../packages/astroport", version = "3.11.0" } -thiserror = "1" -itertools = "0.11" +cw-utils.workspace = true +astroport = { path = "../../../packages/astroport", version = "4" } +thiserror.workspace = true +itertools.workspace = true [dev-dependencies] cw-multi-test = "1.0.0" diff --git a/contracts/tokenomics/maker/Cargo.toml b/contracts/tokenomics/maker/Cargo.toml index 3b9d68ec0..53aff84a9 100644 --- a/contracts/tokenomics/maker/Cargo.toml +++ b/contracts/tokenomics/maker/Cargo.toml @@ -25,13 +25,13 @@ crate-type = ["cdylib", "rlib"] backtraces = ["cosmwasm-std/backtraces"] [dependencies] -cosmwasm-std = "1.5" -cw2 = "1" +cosmwasm-std.workspace = true +cw2.workspace = true cw20 = "1" -cw-storage-plus = "0.15" -astroport = { path = "../../../packages/astroport", version = "3.12" } -thiserror = "1" -cosmwasm-schema = "1.5" +cw-storage-plus.workspace = true +astroport = { path = "../../../packages/astroport", version = "4" } +thiserror.workspace = true +cosmwasm-schema.workspace = true astro-satellite-package = { git = "https://github.com/astroport-fi/astroport_ibc", version = "1" } [dev-dependencies] @@ -40,6 +40,5 @@ astroport-factory = { path = "../../factory" } astroport-pair = { path = "../../pair" } cw-multi-test = "1.0.0" astroport-pair-stable = { path = "../../pair_stable" } -astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "1" } -astroport-escrow-fee-distributor = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "1" } +astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "2" } astroport-native-coin-registry = { path = "../../periphery/native_coin_registry" } diff --git a/contracts/tokenomics/maker/tests/maker_integration.rs b/contracts/tokenomics/maker/tests/maker_integration.rs index 8066cc6e1..4b7fdbbac 100644 --- a/contracts/tokenomics/maker/tests/maker_integration.rs +++ b/contracts/tokenomics/maker/tests/maker_integration.rs @@ -4,10 +4,11 @@ use std::str::FromStr; use astroport_governance::utils::EPOCH_START; use cosmwasm_std::{ - attr, coin, to_json_binary, Addr, Coin, Decimal, QueryRequest, Uint128, Uint64, WasmQuery, + attr, coin, to_json_binary, Addr, Binary, Coin, Decimal, Deps, DepsMut, Empty, Env, + MessageInfo, QueryRequest, Response, StdResult, Uint128, Uint64, WasmQuery, }; use cw20::{BalanceResponse, Cw20QueryMsg, MinterResponse}; -use cw_multi_test::{next_block, App, ContractWrapper, Executor}; +use cw_multi_test::{next_block, App, Contract, ContractWrapper, Executor}; use astroport::asset::{ native_asset, native_asset_info, token_asset, token_asset_info, Asset, AssetInfo, PairInfo, @@ -88,6 +89,24 @@ fn instantiate_coin_registry(mut app: &mut App, coins: Option> coin_registry_address } +fn mock_fee_distributor_contract() -> Box> { + let instantiate = |_: DepsMut, _: Env, _: MessageInfo, _: Empty| -> StdResult { + Ok(Default::default()) + }; + let execute = |_: DepsMut, + _: Env, + _: MessageInfo, + _: astroport_governance::escrow_fee_distributor::ExecuteMsg| + -> StdResult { Ok(Default::default()) }; + let empty_query = |_: Deps, _: Env, _: Empty| -> StdResult { unimplemented!() }; + + Box::new(ContractWrapper::new_with_empty( + execute, + instantiate, + empty_query, + )) +} + fn instantiate_contracts( mut router: &mut App, owner: Addr, @@ -198,27 +217,13 @@ fn instantiate_contracts( ) .unwrap(); - let escrow_fee_distributor_contract = Box::new(ContractWrapper::new_with_empty( - astroport_escrow_fee_distributor::contract::execute, - astroport_escrow_fee_distributor::contract::instantiate, - astroport_escrow_fee_distributor::contract::query, - )); - - let escrow_fee_distributor_code_id = router.store_code(escrow_fee_distributor_contract); - - let init_msg = astroport_governance::escrow_fee_distributor::InstantiateMsg { - owner: owner.to_string(), - astro_token: astro_token_instance.to_string(), - voting_escrow_addr: "voting".to_string(), - claim_many_limit: None, - is_claim_disabled: None, - }; + let escrow_fee_distributor_code_id = router.store_code(mock_fee_distributor_contract()); let governance_instance = router .instantiate_contract( escrow_fee_distributor_code_id, owner.clone(), - &init_msg, + &Empty {}, &[], "Astroport escrow fee distributor", None, diff --git a/contracts/tokenomics/staking/Cargo.toml b/contracts/tokenomics/staking/Cargo.toml index 1db6a5582..942587921 100644 --- a/contracts/tokenomics/staking/Cargo.toml +++ b/contracts/tokenomics/staking/Cargo.toml @@ -24,17 +24,17 @@ crate-type = ["cdylib", "rlib"] backtraces = ["cosmwasm-std/backtraces"] [dependencies] -cosmwasm-std = { version = "1.5", features = ["cosmwasm_1_1"] } -cw-storage-plus = "1.2" -thiserror = "1" -cw2 = "1.1" -astroport = { path = "../../../packages/astroport", version = "3" } -cw-utils = "1" -osmosis-std = "0.21" +cosmwasm-std = { workspace = true, features = ["cosmwasm_1_1"] } +cw-storage-plus.workspace = true +thiserror.workspace = true +cw2.workspace = true +astroport = { path = "../../../packages/astroport", version = "4" } +cw-utils.workspace = true +osmosis-std = "0.21.0" [dev-dependencies] anyhow = "1" -itertools = "0.12" -cosmwasm-schema = "1.5" +itertools.workspace = true +cosmwasm-schema.workspace = true cw-multi-test = { git = "https://github.com/astroport-fi/cw-multi-test", branch = "feat/bank_with_send_hooks", features = ["cosmwasm_1_1"] } astroport-tokenfactory-tracker = { path = "../../periphery/tokenfactory_tracker" } diff --git a/contracts/tokenomics/vesting/Cargo.toml b/contracts/tokenomics/vesting/Cargo.toml index 6c6fb61d6..1abd4e04e 100644 --- a/contracts/tokenomics/vesting/Cargo.toml +++ b/contracts/tokenomics/vesting/Cargo.toml @@ -17,18 +17,18 @@ backtraces = ["cosmwasm-std/backtraces"] library = [] [dependencies] -cw2 = "1.1" -cw20 = "0.15" -cosmwasm-std = "1.5" -cw-storage-plus = "0.15" -astroport = { path = "../../../packages/astroport", version = "3" } -thiserror = "1" -cw-utils = "1" -cosmwasm-schema = "1.5" +cw2.workspace = true +cw20 = "1.1" +cosmwasm-std.workspace = true +cw-storage-plus.workspace = true +astroport = { path = "../../../packages/astroport", version = "4" } +thiserror.workspace = true +cw-utils.workspace = true +cosmwasm-schema.workspace = true [dev-dependencies] cw-multi-test = "1.0.0" -cw20-base = "0.15" +cw20-base = "1.1" astro-token-converter = { path = "../../periphery/astro_converter", version = "1", features = ["library"] } astroport-vesting_131 = { package = "astroport-vesting", version = "=1.3.1", features = ["library"] } diff --git a/contracts/tokenomics/vesting/NOTICE b/contracts/tokenomics/vesting/NOTICE deleted file mode 100644 index 84b1c2103..000000000 --- a/contracts/tokenomics/vesting/NOTICE +++ /dev/null @@ -1,14 +0,0 @@ -CW20-Base: A reference implementation for fungible token on CosmWasm -Copyright (C) 2020 Confio OÜ - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/contracts/tokenomics/xastro_outpost_token/.cargo/config b/contracts/tokenomics/xastro_outpost_token/.cargo/config deleted file mode 100644 index 13f51ac69..000000000 --- a/contracts/tokenomics/xastro_outpost_token/.cargo/config +++ /dev/null @@ -1,5 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -unit-test = "test --lib" -schema = "run --example xastro_token_schema" diff --git a/contracts/tokenomics/xastro_outpost_token/Cargo.toml b/contracts/tokenomics/xastro_outpost_token/Cargo.toml deleted file mode 100644 index a7fa59a7b..000000000 --- a/contracts/tokenomics/xastro_outpost_token/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "astroport-xastro-outpost-token" -version = "1.0.0" -authors = ["Astroport"] -edition = "2021" -description = "Expanded implementation of a CosmWasm-20 compliant token for post intialization and saving history using timestamps" -license = "MIT" -repository = "https://github.com/CosmWasm/cosmwasm-plus" -homepage = "https://cosmwasm.com" -documentation = "https://docs.cosmwasm.com" - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -backtraces = ["cosmwasm-std/backtraces"] -# use library feature to disable all init/handle/query exports -library = [] - -[dependencies] -astroport = { path = "../../../packages/astroport", version = "3" } -cw2 = "0.15" -cw20 = "0.15" -cw20-base = { version = "0.15", features = ["library"] } -cw-storage-plus = "0.15" -cosmwasm-std = { version = "1.1", features = ["iterator"] } -snafu = { version = "0.6" } -cosmwasm-schema = "1.1" - -[dev-dependencies] -cw-multi-test = "1.0.0" diff --git a/contracts/tokenomics/xastro_outpost_token/README.md b/contracts/tokenomics/xastro_outpost_token/README.md deleted file mode 100644 index 14c8e245a..000000000 --- a/contracts/tokenomics/xastro_outpost_token/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Astroport xASTRO Token - -This is the Astroport xASTRO token implementation for use on Outposts. It allows -queries of address balance and total supply at specific timestamps. - ---- - -## CW20 Based Token Contract - -This is a basic implementation of a CW20 base contract which can be found [here](https://github.com/CosmWasm/cw-plus/tree/main/contracts/cw20-base). It implements the [CW20 spec](https://github.com/CosmWasm/cosmwasm-plus/tree/master/packages/cw20) and is designed to be imported into other contracts in order to easily build other CW20-compatible tokens with balance snapshotting logic. diff --git a/contracts/tokenomics/xastro_outpost_token/examples/xastro_outpost_token_schema.rs b/contracts/tokenomics/xastro_outpost_token/examples/xastro_outpost_token_schema.rs deleted file mode 100644 index 47ee71f07..000000000 --- a/contracts/tokenomics/xastro_outpost_token/examples/xastro_outpost_token_schema.rs +++ /dev/null @@ -1,12 +0,0 @@ -use cosmwasm_schema::write_api; - -use astroport::xastro_outpost_token::QueryMsg; -use cw20_base::msg::{ExecuteMsg, InstantiateMsg}; - -fn main() { - write_api! { - instantiate: InstantiateMsg, - query: QueryMsg, - execute: ExecuteMsg - } -} diff --git a/contracts/tokenomics/xastro_outpost_token/src/contract.rs b/contracts/tokenomics/xastro_outpost_token/src/contract.rs deleted file mode 100644 index 05989027d..000000000 --- a/contracts/tokenomics/xastro_outpost_token/src/contract.rs +++ /dev/null @@ -1,839 +0,0 @@ -use cosmwasm_std::{ - attr, entry_point, to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Order, Response, - StdError, StdResult, Uint128, Uint64, -}; -use cw20::{ - AllAccountsResponse, BalanceResponse, Cw20Coin, Cw20ReceiveMsg, EmbeddedLogo, Logo, LogoInfo, - MarketingInfoResponse, -}; -use cw20_base::allowances::{ - deduct_allowance, execute_decrease_allowance, execute_increase_allowance, query_allowance, -}; - -use crate::state::{ - capture_total_supply_history, check_sender_is_minter, get_total_supply_at, BALANCES, -}; -use astroport::asset::addr_opt_validate; -use astroport::xastro_outpost_token::{MigrateMsg, QueryMsg}; -use cw2::set_contract_version; -use cw20_base::contract::{ - execute_update_marketing, execute_upload_logo, query_download_logo, query_marketing_info, - query_minter, query_token_info, -}; -use cw20_base::enumerable::query_owner_allowances; -use cw20_base::msg::{ExecuteMsg, InstantiateMsg}; -use cw20_base::state::{MinterData, TokenInfo, LOGO, MARKETING_INFO, TOKEN_INFO}; -use cw20_base::ContractError; -use cw_storage_plus::Bound; - -/// Contract name that is used for migration. -const CONTRACT_NAME: &str = "astroport-xastro-outpost-token"; -/// Contract version that is used for migration. -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); - -// Settings for pagination. -const MAX_LIMIT: u32 = 30; -const DEFAULT_LIMIT: u32 = 10; - -const LOGO_SIZE_CAP: usize = 5 * 1024; - -/// Checks if data starts with XML preamble -fn verify_xml_preamble(data: &[u8]) -> Result<(), ContractError> { - // The easiest way to perform this check would be just match on regex, however regex - // compilation is heavy and probably not worth it. - - let preamble = data - .split_inclusive(|c| *c == b'>') - .next() - .ok_or(ContractError::InvalidXmlPreamble {})?; - - const PREFIX: &[u8] = b""; - - if !(preamble.starts_with(PREFIX) && preamble.ends_with(POSTFIX)) { - Err(ContractError::InvalidXmlPreamble {}) - } else { - Ok(()) - } - - // Additionally attributes format could be validated as they are well defined, as well as - // comments presence inside of preable, but it is probably not worth it. -} - -/// Validates XML logo -fn verify_xml_logo(logo: &[u8]) -> Result<(), ContractError> { - verify_xml_preamble(logo)?; - - if logo.len() > LOGO_SIZE_CAP { - Err(ContractError::LogoTooBig {}) - } else { - Ok(()) - } -} - -/// Validates png logo -fn verify_png_logo(logo: &[u8]) -> Result<(), ContractError> { - // PNG header format: - // 0x89 - magic byte, out of ASCII table to fail on 7-bit systems - // "PNG" ascii representation - // [0x0d, 0x0a] - dos style line ending - // 0x1a - dos control character, stop displaying rest of the file - // 0x0a - unix style line ending - const HEADER: [u8; 8] = [0x89, b'P', b'N', b'G', 0x0d, 0x0a, 0x1a, 0x0a]; - if logo.len() > LOGO_SIZE_CAP { - Err(ContractError::LogoTooBig {}) - } else if !logo.starts_with(&HEADER) { - Err(ContractError::InvalidPngHeader {}) - } else { - Ok(()) - } -} - -/// Checks if passed logo is correct, and if not, returns an error -fn verify_logo(logo: &Logo) -> Result<(), ContractError> { - match logo { - Logo::Embedded(EmbeddedLogo::Svg(logo)) => verify_xml_logo(logo), - Logo::Embedded(EmbeddedLogo::Png(logo)) => verify_png_logo(logo), - Logo::Url(_) => Ok(()), // Any reasonable url validation would be regex based, probably not worth it - } -} - -/// Creates a new contract with the specified parameters in the [`InstantiateMsg`]. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - mut deps: DepsMut, - env: Env, - _info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - // Check valid token info - msg.validate()?; - - // Create initial accounts - let total_supply = create_accounts(&mut deps, &env, &msg.initial_balances)?; - - if !total_supply.is_zero() { - capture_total_supply_history(deps.storage, &env, total_supply)?; - } - - // Check supply cap - if let Some(limit) = msg.get_cap() { - if total_supply > limit { - return Err(StdError::generic_err("Initial supply greater than cap").into()); - } - } - - let mint = match msg.mint { - Some(m) => Some(MinterData { - minter: deps.api.addr_validate(&m.minter)?, - cap: m.cap, - }), - None => None, - }; - - // Store token info - let data = TokenInfo { - name: msg.name, - symbol: msg.symbol, - decimals: msg.decimals, - total_supply, - mint, - }; - TOKEN_INFO.save(deps.storage, &data)?; - - if let Some(marketing) = msg.marketing { - let logo = if let Some(logo) = marketing.logo { - verify_logo(&logo)?; - LOGO.save(deps.storage, &logo)?; - - match logo { - Logo::Url(url) => Some(LogoInfo::Url(url)), - Logo::Embedded(_) => Some(LogoInfo::Embedded), - } - } else { - None - }; - - let data = MarketingInfoResponse { - project: marketing.project, - description: marketing.description, - marketing: marketing - .marketing - .map(|addr| deps.api.addr_validate(&addr)) - .transpose()?, - logo, - }; - MARKETING_INFO.save(deps.storage, &data)?; - } - - Ok(Response::default()) -} - -/// Mints tokens for specific accounts. -/// -/// * **accounts** array with accounts for which to mint tokens. -pub fn create_accounts(deps: &mut DepsMut, env: &Env, accounts: &[Cw20Coin]) -> StdResult { - let mut total_supply = Uint128::zero(); - - for row in accounts { - let address = deps.api.addr_validate(&row.address)?; - BALANCES.save( - deps.storage, - &address, - &row.amount, - env.block.time.seconds(), - )?; - total_supply += row.amount; - } - - Ok(total_supply) -} - -/// Exposes execute functions available in the contract. -/// -/// ## Variants -/// * **ExecuteMsg::Transfer { recipient, amount }** Transfers tokens to recipient. -/// -/// * **ExecuteMsg::Burn { amount }** Burns tokens. -/// -/// * **ExecuteMsg::Send { contract, amount, msg }** Sends tokens to contract and executes message. -/// -/// * **ExecuteMsg::Mint { recipient, amount }** Mints tokens. -/// -/// * **ExecuteMsg::IncreaseAllowance { spender, amount, expires }** Increases allowance. -/// -/// * **ExecuteMsg::DecreaseAllowance { spender, amount, expires }** Decreases allowance. -/// -/// * **ExecuteMsg::TransferFrom { owner, recipient, amount }** Transfers tokens from. -/// -/// * **ExecuteMsg::BurnFrom { owner, amount }** Burns tokens from. -/// -/// * **ExecuteMsg::SendFrom { owner, contract, amount, msg }** Sends tokens from. -/// -/// * **ExecuteMsg::UpdateMarketing { project, description, marketing }** Updates marketing info. -/// -/// * **ExecuteMsg::UploadLogo(logo)** Uploads logo. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - match msg { - ExecuteMsg::Transfer { recipient, amount } => { - execute_transfer(deps, env, info, recipient, amount) - } - ExecuteMsg::Burn { amount } => execute_burn(deps, env, info, amount), - ExecuteMsg::Send { - contract, - amount, - msg, - } => execute_send(deps, env, info, contract, amount, msg), - ExecuteMsg::Mint { recipient, amount } => execute_mint(deps, env, info, recipient, amount), - ExecuteMsg::IncreaseAllowance { - spender, - amount, - expires, - } => execute_increase_allowance(deps, env, info, spender, amount, expires), - ExecuteMsg::DecreaseAllowance { - spender, - amount, - expires, - } => execute_decrease_allowance(deps, env, info, spender, amount, expires), - ExecuteMsg::TransferFrom { - owner, - recipient, - amount, - } => execute_transfer_from(deps, env, info, owner, recipient, amount), - ExecuteMsg::BurnFrom { owner, amount } => execute_burn_from(deps, env, info, owner, amount), - ExecuteMsg::SendFrom { - owner, - contract, - amount, - msg, - } => execute_send_from(deps, env, info, owner, contract, amount, msg), - ExecuteMsg::UpdateMarketing { - project, - description, - marketing, - } => execute_update_marketing(deps, env, info, project, description, marketing), - ExecuteMsg::UploadLogo(logo) => execute_upload_logo(deps, env, info, logo), - _ => Err(StdError::generic_err("Unsupported execute message").into()), - } -} - -/// Executes a token transfer. -pub fn execute_transfer( - deps: DepsMut, - env: Env, - info: MessageInfo, - recipient: String, - amount: Uint128, -) -> Result { - if amount == Uint128::zero() { - return Err(ContractError::InvalidZeroAmount {}); - } - - let rcpt_addr = deps.api.addr_validate(&recipient)?; - - BALANCES.update( - deps.storage, - &info.sender, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_sub(amount)?) }, - )?; - BALANCES.update( - deps.storage, - &rcpt_addr, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_add(amount)?) }, - )?; - - Ok(Response::new().add_attributes(vec![ - attr("action", "transfer"), - attr("from", info.sender), - attr("to", rcpt_addr), - attr("amount", amount), - ])) -} - -/// Burns a token. -/// -/// * **amount** amount of tokens that the function caller wants to burn from their own account. -pub fn execute_burn( - deps: DepsMut, - env: Env, - info: MessageInfo, - amount: Uint128, -) -> Result { - if amount == Uint128::zero() { - return Err(ContractError::InvalidZeroAmount {}); - } - - let config = TOKEN_INFO.load(deps.storage)?; - check_sender_is_minter(&info.sender, &config)?; - - // Lower the sender's balance - BALANCES.update( - deps.storage, - &info.sender, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_sub(amount)?) }, - )?; - - // Reduce total_supply - let token_info = TOKEN_INFO.update(deps.storage, |mut info| -> StdResult<_> { - info.total_supply = info.total_supply.checked_sub(amount)?; - Ok(info) - })?; - - capture_total_supply_history(deps.storage, &env, token_info.total_supply)?; - - let res = Response::new().add_attributes(vec![ - attr("action", "burn"), - attr("from", info.sender), - attr("amount", amount), - ]); - Ok(res) -} - -/// Mints a token. -pub fn execute_mint( - deps: DepsMut, - env: Env, - info: MessageInfo, - recipient: String, - amount: Uint128, -) -> Result { - if amount == Uint128::zero() { - return Err(ContractError::InvalidZeroAmount {}); - } - - let mut config = TOKEN_INFO.load(deps.storage)?; - check_sender_is_minter(&info.sender, &config)?; - - // Update supply and enforce cap - config.total_supply = config - .total_supply - .checked_add(amount) - .map_err(StdError::from)?; - if let Some(limit) = config.get_cap() { - if config.total_supply > limit { - return Err(ContractError::CannotExceedCap {}); - } - } - - TOKEN_INFO.save(deps.storage, &config)?; - - capture_total_supply_history(deps.storage, &env, config.total_supply)?; - - // Add amount to recipient balance - let rcpt_addr = deps.api.addr_validate(&recipient)?; - BALANCES.update( - deps.storage, - &rcpt_addr, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_add(amount)?) }, - )?; - - Ok(Response::new().add_attributes(vec![ - attr("action", "mint"), - attr("to", rcpt_addr), - attr("amount", amount), - ])) -} - -/// Executes a token send. -/// -/// * **contract** token contract. -/// -/// * **amount** amount of tokens to send. -/// -/// * **msg** internal serialized message. -pub fn execute_send( - deps: DepsMut, - env: Env, - info: MessageInfo, - contract: String, - amount: Uint128, - msg: Binary, -) -> Result { - if amount == Uint128::zero() { - return Err(ContractError::InvalidZeroAmount {}); - } - - let rcpt_addr = deps.api.addr_validate(&contract)?; - - // Move the tokens to the contract - BALANCES.update( - deps.storage, - &info.sender, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_sub(amount)?) }, - )?; - BALANCES.update( - deps.storage, - &rcpt_addr, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_add(amount)?) }, - )?; - - let res = Response::new() - .add_attributes(vec![ - attr("action", "send"), - attr("from", &info.sender), - attr("to", &rcpt_addr), - attr("amount", amount), - ]) - .add_message( - Cw20ReceiveMsg { - sender: info.sender.into(), - amount, - msg, - } - .into_cosmos_msg(contract)?, - ); - Ok(res) -} - -/// Executes a transfer from. -/// -/// * **owner** account from which to transfer tokens. -/// -/// * **recipient** transfer recipient. -/// -/// * **amount** amount to transfer. -pub fn execute_transfer_from( - deps: DepsMut, - env: Env, - info: MessageInfo, - owner: String, - recipient: String, - amount: Uint128, -) -> Result { - let rcpt_addr = deps.api.addr_validate(&recipient)?; - let owner_addr = deps.api.addr_validate(&owner)?; - - // Deduct allowance before doing anything else - deduct_allowance(deps.storage, &owner_addr, &info.sender, &env.block, amount)?; - - BALANCES.update( - deps.storage, - &owner_addr, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_sub(amount)?) }, - )?; - BALANCES.update( - deps.storage, - &rcpt_addr, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_add(amount)?) }, - )?; - - let res = Response::new().add_attributes(vec![ - attr("action", "transfer_from"), - attr("from", owner), - attr("to", recipient), - attr("by", info.sender), - attr("amount", amount), - ]); - Ok(res) -} - -/// Executes a burn from. -/// -/// * **owner** account from which to burn tokens. -/// -/// * **amount** amount of tokens to burn. -pub fn execute_burn_from( - deps: DepsMut, - env: Env, - info: MessageInfo, - owner: String, - amount: Uint128, -) -> Result { - let owner_addr = deps.api.addr_validate(&owner)?; - - let config = TOKEN_INFO.load(deps.storage)?; - check_sender_is_minter(&info.sender, &config)?; - - // Deduct allowance before doing anything else - deduct_allowance(deps.storage, &owner_addr, &info.sender, &env.block, amount)?; - - // Lower balance - BALANCES.update( - deps.storage, - &owner_addr, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_sub(amount)?) }, - )?; - - // Reduce total_supply - let token_info = TOKEN_INFO.update(deps.storage, |mut meta| -> StdResult<_> { - meta.total_supply = meta.total_supply.checked_sub(amount)?; - Ok(meta) - })?; - - capture_total_supply_history(deps.storage, &env, token_info.total_supply)?; - - let res = Response::new().add_attributes(vec![ - attr("action", "burn_from"), - attr("from", owner), - attr("by", info.sender), - attr("amount", amount), - ]); - Ok(res) -} - -/// Executes a send from. -/// -/// * **owner** account from which to send tokens. -/// -/// * **contract** token contract address. -/// -/// * **amount** amount of tokens to send. -/// -/// * **msg** internal serialized message. -pub fn execute_send_from( - deps: DepsMut, - env: Env, - info: MessageInfo, - owner: String, - contract: String, - amount: Uint128, - msg: Binary, -) -> Result { - let rcpt_addr = deps.api.addr_validate(&contract)?; - let owner_addr = deps.api.addr_validate(&owner)?; - - // Deduct allowance before doing anything else - deduct_allowance(deps.storage, &owner_addr, &info.sender, &env.block, amount)?; - - // Move the tokens to the contract - BALANCES.update( - deps.storage, - &owner_addr, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_sub(amount)?) }, - )?; - BALANCES.update( - deps.storage, - &rcpt_addr, - env.block.time.seconds(), - |balance| -> StdResult<_> { Ok(balance.unwrap_or_default().checked_add(amount)?) }, - )?; - - let res = Response::new() - .add_attributes(vec![ - attr("action", "send_from"), - attr("from", &owner), - attr("to", &contract), - attr("by", &info.sender), - attr("amount", amount), - ]) - .add_message( - Cw20ReceiveMsg { - sender: info.sender.into(), - amount, - msg, - } - .into_cosmos_msg(contract)?, - ); - Ok(res) -} - -/// Exposes all the queries available in the contract. -/// -/// ## Queries -/// * **Balance { address: String }** Returns the current balance of the given address, 0 if unset. -/// Uses a [`BalanceResponse`] object. -/// -/// * **BalanceAt { address, timestamp }** Returns the balance of the given address at the given timestamp -/// using a [`BalanceResponse`] object. -/// -/// * **TotalSupplyAt { timestamp }** Returns the total supply at the given timestamp. -/// -/// * **TokenInfo {}** Returns the token metadata - name, decimals, supply, etc -/// using a [`cw20::TokenInfoResponse`] object. -/// -/// * **Minter {}** Returns the address that can mint tokens and the hard cap on the total amount of tokens using -/// a [`cw20::MinterResponse`] object. -/// -/// * **QueryMsg::Allowance { owner, spender }** Returns how much the spender can use from the owner account, 0 if unset. -/// Uses a [`cw20::AllowanceResponse`] object. -/// -/// * **QueryMsg::AllAllowances { owner, start_after, limit }** Returns all allowances this owner has approved -/// using a [`cw20::AllAllowancesResponse`] object. -/// -/// * **QueryMsg::AllAccounts { start_after, limit }** Returns all accounts that have a balance -/// using a [`cw20::AllAccountsResponse`] object. -/// -/// * **QueryMsg::MarketingInfo {}** Returns the token metadata -/// using a [`cw20::MarketingInfoResponse`] object. -/// -/// * **QueryMsg::DownloadLogo {}** Downloads the embedded logo data (if stored on-chain) -/// and returns the result using a [`cw20::DownloadLogoResponse`] object. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { - match msg { - QueryMsg::Balance { address } => to_json_binary(&query_balance(deps, address)?), - QueryMsg::BalanceAt { address, timestamp } => { - to_json_binary(&query_balance_at(deps, address, timestamp)?) - } - QueryMsg::TotalSupplyAt { timestamp } => { - to_json_binary(&get_total_supply_at(deps.storage, timestamp)?) - } - QueryMsg::TokenInfo {} => to_json_binary(&query_token_info(deps)?), - QueryMsg::Minter {} => to_json_binary(&query_minter(deps)?), - QueryMsg::Allowance { owner, spender } => { - to_json_binary(&query_allowance(deps, owner, spender)?) - } - QueryMsg::AllAllowances { - owner, - start_after, - limit, - } => to_json_binary(&query_owner_allowances(deps, owner, start_after, limit)?), - QueryMsg::AllAccounts { start_after, limit } => { - to_json_binary(&query_all_accounts(deps, start_after, limit)?) - } - QueryMsg::MarketingInfo {} => to_json_binary(&query_marketing_info(deps)?), - QueryMsg::DownloadLogo {} => to_json_binary(&query_download_logo(deps)?), - } -} - -/// Returns the specified account's balance. -pub fn query_balance(deps: Deps, address: String) -> StdResult { - let address = deps.api.addr_validate(&address)?; - let balance = BALANCES - .may_load(deps.storage, &address)? - .unwrap_or_default(); - Ok(BalanceResponse { balance }) -} - -/// Returns the balance of the given address at the given timestamp. -pub fn query_balance_at( - deps: Deps, - address: String, - timestamp: Uint64, -) -> StdResult { - let address = deps.api.addr_validate(&address)?; - let balance = BALANCES - .may_load_at_height(deps.storage, &address, timestamp.u64())? - .unwrap_or_default(); - Ok(BalanceResponse { balance }) -} - -/// Returns the current balances of multiple accounts. -/// -/// * **start_after** account from which to start querying for balances. -/// -/// * **limit** amount of account balances to return. -pub fn query_all_accounts( - deps: Deps, - start_after: Option, - limit: Option, -) -> StdResult { - let limit = limit.unwrap_or(DEFAULT_LIMIT).min(MAX_LIMIT) as usize; - let start = addr_opt_validate(deps.api, &start_after)?; - let start = start.as_ref().map(Bound::exclusive); - - let accounts = BALANCES - .keys(deps.storage, start, None, Order::Ascending) - .take(limit) - .map(|addr| addr.map(Into::into)) - .collect::>()?; - - Ok(AllAccountsResponse { accounts }) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> StdResult { - Err(StdError::generic_err( - "Cannot migrate. No migrations available", - )) -} - -#[cfg(test)] -mod tests { - use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; - use cosmwasm_std::{Addr, StdError}; - - use super::*; - use cw20_base::msg::InstantiateMarketingInfo; - - mod marketing { - use cw20::DownloadLogoResponse; - use cw20_base::contract::{query_download_logo, query_marketing_info}; - - use super::*; - - #[test] - fn basic() { - let mut deps = mock_dependencies(); - let instantiate_msg = InstantiateMsg { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - initial_balances: vec![], - mint: None, - marketing: Some(InstantiateMarketingInfo { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some("marketing".to_owned()), - logo: Some(Logo::Url("url".to_owned())), - }), - }; - - let info = mock_info("creator", &[]); - let env = mock_env(); - let res = instantiate(deps.as_mut(), env, info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - assert_eq!( - query_marketing_info(deps.as_ref()).unwrap(), - MarketingInfoResponse { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some(Addr::unchecked("marketing")), - logo: Some(LogoInfo::Url("url".to_owned())), - } - ); - - let err = query_download_logo(deps.as_ref()).unwrap_err(); - assert!( - matches!(err, StdError::NotFound { .. }), - "Expected StdError::NotFound, received {}", - err - ); - } - - #[test] - fn svg() { - let mut deps = mock_dependencies(); - let img = "".as_bytes(); - let instantiate_msg = InstantiateMsg { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - initial_balances: vec![], - mint: None, - marketing: Some(InstantiateMarketingInfo { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some("marketing".to_owned()), - logo: Some(Logo::Embedded(EmbeddedLogo::Svg(img.into()))), - }), - }; - - let info = mock_info("creator", &[]); - let env = mock_env(); - let res = instantiate(deps.as_mut(), env, info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - assert_eq!( - query_marketing_info(deps.as_ref()).unwrap(), - MarketingInfoResponse { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some(Addr::unchecked("marketing")), - logo: Some(LogoInfo::Embedded), - } - ); - - let res: DownloadLogoResponse = query_download_logo(deps.as_ref()).unwrap(); - assert_eq! { - res, - DownloadLogoResponse{ - data: img.into(), - mime_type: "image/svg+xml".to_owned(), - } - } - } - - #[test] - fn png() { - let mut deps = mock_dependencies(); - const PNG_HEADER: [u8; 8] = [0x89, b'P', b'N', b'G', 0x0d, 0x0a, 0x1a, 0x0a]; - let instantiate_msg = InstantiateMsg { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - initial_balances: vec![], - mint: None, - marketing: Some(InstantiateMarketingInfo { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some("marketing".to_owned()), - logo: Some(Logo::Embedded(EmbeddedLogo::Png(PNG_HEADER.into()))), - }), - }; - - let info = mock_info("creator", &[]); - let env = mock_env(); - let res = instantiate(deps.as_mut(), env, info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - assert_eq!( - query_marketing_info(deps.as_ref()).unwrap(), - MarketingInfoResponse { - project: Some("Project".to_owned()), - description: Some("Description".to_owned()), - marketing: Some(Addr::unchecked("marketing")), - logo: Some(LogoInfo::Embedded), - } - ); - - let res: DownloadLogoResponse = query_download_logo(deps.as_ref()).unwrap(); - assert_eq! { - res, - DownloadLogoResponse{ - data: PNG_HEADER.into(), - mime_type: "image/png".to_owned(), - } - } - } - } -} diff --git a/contracts/tokenomics/xastro_outpost_token/src/lib.rs b/contracts/tokenomics/xastro_outpost_token/src/lib.rs deleted file mode 100644 index fea2cb877..000000000 --- a/contracts/tokenomics/xastro_outpost_token/src/lib.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod contract; -pub mod state; - -#[cfg(test)] -mod testing; diff --git a/contracts/tokenomics/xastro_outpost_token/src/state.rs b/contracts/tokenomics/xastro_outpost_token/src/state.rs deleted file mode 100644 index 4f03163f3..000000000 --- a/contracts/tokenomics/xastro_outpost_token/src/state.rs +++ /dev/null @@ -1,53 +0,0 @@ -use cosmwasm_std::{Addr, Env, Order, StdResult, Storage, Uint128, Uint64}; -use cw20_base::{state::TokenInfo, ContractError}; -use cw_storage_plus::{Bound, Map, SnapshotMap, Strategy}; - -/// Contains snapshotted coins balances at every block. -pub const BALANCES: SnapshotMap<&Addr, Uint128> = SnapshotMap::new( - "balance", - "balance__checkpoints", - "balance__changelog", - Strategy::EveryBlock, -); - -/// Contains the history of the xASTRO total supply. -pub const TOTAL_SUPPLY_HISTORY: Map = Map::new("total_supply_history"); - -/// Snapshots the total token supply at current timestamp. -/// -/// * **total_supply** current token total supply. -pub fn capture_total_supply_history( - storage: &mut dyn Storage, - env: &Env, - total_supply: Uint128, -) -> StdResult<()> { - TOTAL_SUPPLY_HISTORY.save(storage, env.block.time.seconds(), &total_supply) -} - -/// Returns the total token supply at the given timestamp. -pub fn get_total_supply_at(storage: &dyn Storage, timestamp: Uint64) -> StdResult { - // Look for the last value recorded before the current timestamp (if none then value is zero) - let end = Bound::inclusive(timestamp); - let last_value_up_to_second = TOTAL_SUPPLY_HISTORY - .range(storage, None, Some(end), Order::Descending) - .next(); - - if let Some(value) = last_value_up_to_second { - let (_, v) = value?; - return Ok(v); - } - - Ok(Uint128::zero()) -} - -/// Checks that the sender is the minter. This is to authorise minting and burning of tokens -pub fn check_sender_is_minter(sender: &Addr, config: &TokenInfo) -> Result<(), ContractError> { - if let Some(ref mint_data) = config.mint { - if mint_data.minter != sender { - return Err(ContractError::Unauthorized {}); - } - } else { - return Err(ContractError::Unauthorized {}); - } - Ok(()) -} diff --git a/contracts/tokenomics/xastro_outpost_token/src/testing.rs b/contracts/tokenomics/xastro_outpost_token/src/testing.rs deleted file mode 100644 index 6d1935ffd..000000000 --- a/contracts/tokenomics/xastro_outpost_token/src/testing.rs +++ /dev/null @@ -1,990 +0,0 @@ -use crate::contract::{ - execute, execute_burn_from, execute_send_from, execute_transfer_from, instantiate, - query_all_accounts, query_balance, query_balance_at, -}; -use crate::state::get_total_supply_at; -use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info, MOCK_CONTRACT_ADDR}; -use cosmwasm_std::{ - Addr, Binary, BlockInfo, ContractInfo, CosmosMsg, Deps, DepsMut, Env, StdError, SubMsg, - Timestamp, Uint128, Uint64, WasmMsg, -}; -use cw20::{ - AllAccountsResponse, BalanceResponse, Cw20Coin, Cw20ReceiveMsg, MinterResponse, - TokenInfoResponse, -}; -use cw20_base::allowances::execute_increase_allowance; -use cw20_base::contract::{query_minter, query_token_info}; -use cw20_base::msg::{ExecuteMsg, InstantiateMsg}; -use cw20_base::ContractError; - -pub struct MockEnvParams { - pub block_time: Timestamp, - pub block_height: u64, -} - -impl Default for MockEnvParams { - fn default() -> Self { - MockEnvParams { - block_time: Timestamp::from_seconds(1_571_797_419), - block_height: 1, - } - } -} - -pub fn test_mock_env(mock_env_params: MockEnvParams) -> Env { - Env { - block: BlockInfo { - height: mock_env_params.block_height, - time: mock_env_params.block_time, - chain_id: "cosmos-testnet-14002".to_string(), - }, - transaction: None, - contract: ContractInfo { - address: Addr::unchecked(MOCK_CONTRACT_ADDR), - }, - } -} - -fn get_balance>(deps: Deps, address: T) -> Uint128 { - query_balance(deps, address.into()).unwrap().balance -} - -// This will set up the instantiation for other tests -fn do_instantiate_with_minter( - deps: DepsMut, - addr: &str, - amount: Uint128, - minter: &str, - cap: Option, -) -> TokenInfoResponse { - _do_instantiate( - deps, - addr, - amount, - Some(MinterResponse { - minter: minter.to_string(), - cap, - }), - ) -} - -// This will set up the instantiation for other tests without a minter -fn do_instantiate(deps: DepsMut, addr: &str, amount: Uint128) -> TokenInfoResponse { - _do_instantiate(deps, addr, amount, None) -} - -// This will set up the instantiation for other tests -fn _do_instantiate( - mut deps: DepsMut, - addr: &str, - amount: Uint128, - mint: Option, -) -> TokenInfoResponse { - let instantiate_msg = InstantiateMsg { - name: "Auto Gen".to_string(), - symbol: "AUTO".to_string(), - decimals: 3, - initial_balances: vec![Cw20Coin { - address: addr.to_string(), - amount, - }], - mint: mint.clone(), - marketing: None, - }; - let info = mock_info("creator", &[]); - let env = mock_env(); - let res = instantiate(deps.branch(), env, info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - let meta = query_token_info(deps.as_ref()).unwrap(); - assert_eq!( - meta, - TokenInfoResponse { - name: "Auto Gen".to_string(), - symbol: "AUTO".to_string(), - decimals: 3, - total_supply: amount, - } - ); - assert_eq!(get_balance(deps.as_ref(), addr), amount); - assert_eq!(query_minter(deps.as_ref()).unwrap(), mint,); - meta -} - -mod instantiate { - use super::*; - - #[test] - fn basic() { - let mut deps = mock_dependencies(); - let amount = Uint128::from(11223344u128); - let instantiate_msg = InstantiateMsg { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - initial_balances: vec![Cw20Coin { - address: String::from("addr0000"), - amount, - }], - mint: None, - marketing: None, - }; - let info = mock_info("creator", &[]); - let env = mock_env(); - let res = instantiate(deps.as_mut(), env, info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - assert_eq!( - query_token_info(deps.as_ref()).unwrap(), - TokenInfoResponse { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - total_supply: amount, - } - ); - assert_eq!( - get_balance(deps.as_ref(), "addr0000"), - Uint128::new(11223344) - ); - } - - #[test] - fn mintable() { - let mut deps = mock_dependencies(); - let amount = Uint128::new(11223344); - let minter = String::from("asmodat"); - let limit = Uint128::new(511223344); - let instantiate_msg = InstantiateMsg { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - initial_balances: vec![Cw20Coin { - address: "addr0000".into(), - amount, - }], - mint: Some(MinterResponse { - minter: minter.clone(), - cap: Some(limit), - }), - marketing: None, - }; - let info = mock_info("creator", &[]); - let env = mock_env(); - let res = instantiate(deps.as_mut(), env, info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - assert_eq!( - query_token_info(deps.as_ref()).unwrap(), - TokenInfoResponse { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - total_supply: amount, - } - ); - assert_eq!( - get_balance(deps.as_ref(), "addr0000"), - Uint128::new(11223344) - ); - assert_eq!( - query_minter(deps.as_ref()).unwrap(), - Some(MinterResponse { - minter, - cap: Some(limit), - }), - ); - } - - #[test] - fn mintable_over_cap() { - let mut deps = mock_dependencies(); - let amount = Uint128::new(11223344); - let minter = String::from("asmodat"); - let limit = Uint128::new(11223300); - let instantiate_msg = InstantiateMsg { - name: "Cash Token".to_string(), - symbol: "CASH".to_string(), - decimals: 9, - initial_balances: vec![Cw20Coin { - address: String::from("addr0000"), - amount, - }], - mint: Some(MinterResponse { - minter, - cap: Some(limit), - }), - marketing: None, - }; - let info = mock_info("creator", &[]); - let env = mock_env(); - let err = instantiate(deps.as_mut(), env, info, instantiate_msg).unwrap_err(); - assert_eq!( - err, - StdError::generic_err("Initial supply greater than cap").into() - ); - } -} - -#[test] -fn can_mint_by_minter() { - let mut deps = mock_dependencies(); - - let genesis = String::from("genesis"); - let amount = Uint128::new(11223344); - let minter = String::from("asmodat"); - let limit = Uint128::new(511223344); - do_instantiate_with_minter(deps.as_mut(), &genesis, amount, &minter, Some(limit)); - - // Minter can mint coins to some winner - let winner = String::from("lucky"); - let prize = Uint128::new(222_222_222); - let msg = ExecuteMsg::Mint { - recipient: winner.clone(), - amount: prize, - }; - - let info = mock_info(minter.as_ref(), &[]); - let env = mock_env(); - let res = execute(deps.as_mut(), env, info, msg).unwrap(); - assert_eq!(0, res.messages.len()); - assert_eq!(get_balance(deps.as_ref(), genesis), amount); - assert_eq!(get_balance(deps.as_ref(), winner.clone()), prize); - - // But cannot mint nothing - let msg = ExecuteMsg::Mint { - recipient: winner.clone(), - amount: Uint128::zero(), - }; - let info = mock_info(minter.as_ref(), &[]); - let env = mock_env(); - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert_eq!(err, ContractError::InvalidZeroAmount {}); - - // But if it exceeds cap (even over multiple rounds), it fails - let msg = ExecuteMsg::Mint { - recipient: winner, - amount: Uint128::new(333_222_222), - }; - let info = mock_info(minter.as_ref(), &[]); - let env = mock_env(); - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert_eq!(err, ContractError::CannotExceedCap {}); -} - -#[test] -fn others_cannot_mint() { - let mut deps = mock_dependencies(); - do_instantiate_with_minter( - deps.as_mut(), - &String::from("genesis"), - Uint128::new(1234), - &String::from("minter"), - None, - ); - - let msg = ExecuteMsg::Mint { - recipient: String::from("lucky"), - amount: Uint128::new(222), - }; - let info = mock_info("anyone else", &[]); - let env = mock_env(); - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert_eq!(err, ContractError::Unauthorized {}); -} - -#[test] -fn no_one_mints_if_minter_unset() { - let mut deps = mock_dependencies(); - do_instantiate(deps.as_mut(), &String::from("genesis"), Uint128::new(1234)); - - let msg = ExecuteMsg::Mint { - recipient: String::from("lucky"), - amount: Uint128::new(222), - }; - let info = mock_info("genesis", &[]); - let env = mock_env(); - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert_eq!(err, ContractError::Unauthorized {}); -} - -#[test] -fn instantiate_multiple_accounts() { - let mut deps = mock_dependencies(); - let amount1 = Uint128::from(11223344u128); - let addr1 = String::from("addr0001"); - let amount2 = Uint128::from(7890987u128); - let addr2 = String::from("addr0002"); - let instantiate_msg = InstantiateMsg { - name: "Bash Shell".to_string(), - symbol: "BASH".to_string(), - decimals: 6, - initial_balances: vec![ - Cw20Coin { - address: addr1.clone(), - amount: amount1, - }, - Cw20Coin { - address: addr2.clone(), - amount: amount2, - }, - ], - mint: None, - marketing: None, - }; - let info = mock_info("creator", &[]); - let env = mock_env(); - let res = instantiate(deps.as_mut(), env, info, instantiate_msg).unwrap(); - assert_eq!(0, res.messages.len()); - - assert_eq!( - query_token_info(deps.as_ref()).unwrap(), - TokenInfoResponse { - name: "Bash Shell".to_string(), - symbol: "BASH".to_string(), - decimals: 6, - total_supply: amount1 + amount2, - } - ); - assert_eq!(get_balance(deps.as_ref(), addr1), amount1); - assert_eq!(get_balance(deps.as_ref(), addr2), amount2); -} - -#[test] -fn transfer() { - let mut deps = mock_dependencies(); - let addr1 = String::from("addr0001"); - let addr2 = String::from("addr0002"); - let amount1 = Uint128::from(12340000u128); - let transfer = Uint128::from(76543u128); - let too_much = Uint128::from(12340321u128); - - do_instantiate(deps.as_mut(), &addr1, amount1); - - // Cannot transfer nothing - let info = mock_info(addr1.as_ref(), &[]); - let env = mock_env(); - let msg = ExecuteMsg::Transfer { - recipient: addr2.clone(), - amount: Uint128::zero(), - }; - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert_eq!(err, ContractError::InvalidZeroAmount {}); - - // Cannot send more than we have - let info = mock_info(addr1.as_ref(), &[]); - let env = mock_env(); - let msg = ExecuteMsg::Transfer { - recipient: addr2.clone(), - amount: too_much, - }; - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert!(matches!(err, ContractError::Std(StdError::Overflow { .. }))); - - // Cannot send from empty account - let info = mock_info(addr2.as_ref(), &[]); - let env = mock_env(); - let msg = ExecuteMsg::Transfer { - recipient: addr1.clone(), - amount: transfer, - }; - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert!(matches!(err, ContractError::Std(StdError::Overflow { .. }))); - - // Valid transfer - let info = mock_info(addr1.as_ref(), &[]); - let env = test_mock_env(MockEnvParams { - block_height: 100_000, - block_time: Timestamp::from_seconds(600_000), - }); - let msg = ExecuteMsg::Transfer { - recipient: addr2.clone(), - amount: transfer, - }; - let res = execute(deps.as_mut(), env, info, msg).unwrap(); - assert_eq!(res.messages.len(), 0); - - let remainder = amount1.checked_sub(transfer).unwrap(); - assert_eq!(get_balance(deps.as_ref(), addr1.clone()), remainder); - assert_eq!(get_balance(deps.as_ref(), addr2.clone()), transfer); - assert_eq!( - query_balance_at(deps.as_ref(), addr1, Uint64::from(600_000u64)) - .unwrap() - .balance, - amount1 - ); - assert_eq!( - query_balance_at(deps.as_ref(), addr2, Uint64::from(600_000u64)) - .unwrap() - .balance, - Uint128::zero() - ); - assert_eq!( - query_token_info(deps.as_ref()).unwrap().total_supply, - amount1 - ); -} - -#[test] -fn burn() { - let mut deps = mock_dependencies(); - let addr1 = String::from("addr0001"); - let amount1 = Uint128::from(12340000u128); - let burn = Uint128::from(76543u128); - let too_much = Uint128::from(12340321u128); - - do_instantiate_with_minter(deps.as_mut(), &addr1, amount1, &addr1, None); - - // Cannot burn nothing - let info = mock_info(addr1.as_ref(), &[]); - let env = mock_env(); - let msg = ExecuteMsg::Burn { - amount: Uint128::zero(), - }; - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert_eq!(err, ContractError::InvalidZeroAmount {}); - assert_eq!( - query_token_info(deps.as_ref()).unwrap().total_supply, - amount1 - ); - - // Cannot burn more than we have - let info = mock_info(addr1.as_ref(), &[]); - let env = mock_env(); - let msg = ExecuteMsg::Burn { amount: too_much }; - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert!(matches!(err, ContractError::Std(StdError::Overflow { .. }))); - assert_eq!( - query_token_info(deps.as_ref()).unwrap().total_supply, - amount1 - ); - - // valid burn reduces total supply - let info = mock_info(addr1.as_ref(), &[]); - let env = test_mock_env(MockEnvParams { - block_height: 200_000, - block_time: Timestamp::from_seconds(1_200_000_000), - }); - let msg = ExecuteMsg::Burn { amount: burn }; - execute(deps.as_mut(), env, info, msg).unwrap(); - - let remainder = amount1.checked_sub(burn).unwrap(); - assert_eq!(get_balance(deps.as_ref(), addr1.clone()), remainder); - assert_eq!( - query_balance_at(deps.as_ref(), addr1, Uint64::from(1_200_000_000u64)) - .unwrap() - .balance, - amount1 - ); - assert_eq!( - query_token_info(deps.as_ref()).unwrap().total_supply, - remainder - ); - assert_eq!( - get_total_supply_at(&deps.storage, Uint64::from(1_200_000_000u64)).unwrap(), - remainder - ); -} - -#[test] -fn burn_unauthorized() { - let mut deps = mock_dependencies(); - let addr1 = String::from("addr0001"); - let amount1 = Uint128::from(12340000u128); - - do_instantiate(deps.as_mut(), &addr1, amount1); - - // Cannot burn if we're not the minter - let info = mock_info(addr1.as_ref(), &[]); - let env = test_mock_env(MockEnvParams { - block_height: 200_000, - block_time: Timestamp::from_seconds(1_200_000_000), - }); - let msg = ExecuteMsg::Burn { amount: amount1 }; - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert_eq!(err, ContractError::Unauthorized {}); - - // Even though the call was unauthorised, ensure the balance is unchanged - assert_eq!(get_balance(deps.as_ref(), addr1), amount1); - assert_eq!( - query_token_info(deps.as_ref()).unwrap().total_supply, - amount1 - ); -} - -#[test] -fn send() { - let mut deps = mock_dependencies(); - let addr1 = String::from("addr0001"); - let contract = String::from("addr0002"); - let amount1 = Uint128::from(12340000u128); - let transfer = Uint128::from(76543u128); - let too_much = Uint128::from(12340321u128); - let send_msg = Binary::from(r#"{"some":123}"#.as_bytes()); - - do_instantiate(deps.as_mut(), &addr1, amount1); - - // Cannot send nothing - let info = mock_info(addr1.as_ref(), &[]); - let env = mock_env(); - let msg = ExecuteMsg::Send { - contract: contract.clone(), - amount: Uint128::zero(), - msg: send_msg.clone(), - }; - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert_eq!(err, ContractError::InvalidZeroAmount {}); - - // Cannot send more than we have - let info = mock_info(addr1.as_ref(), &[]); - let env = mock_env(); - let msg = ExecuteMsg::Send { - contract: contract.clone(), - amount: too_much, - msg: send_msg.clone(), - }; - let err = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert!(matches!(err, ContractError::Std(StdError::Overflow { .. }))); - - // Valid transfer - let info = mock_info(addr1.as_ref(), &[]); - let env = mock_env(); - let msg = ExecuteMsg::Send { - contract: contract.clone(), - amount: transfer, - msg: send_msg.clone(), - }; - let res = execute(deps.as_mut(), env.clone(), info, msg).unwrap(); - assert_eq!(res.messages.len(), 1); - - // Ensure proper send message was sent - // This is the message we want delivered to the other side - let binary_msg = Cw20ReceiveMsg { - sender: addr1.clone(), - amount: transfer, - msg: send_msg, - } - .into_binary() - .unwrap(); - // And this is how it must be wrapped for the vm to process it - assert_eq!( - res.messages[0], - SubMsg::new(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: contract.clone(), - msg: binary_msg, - funds: vec![], - })) - ); - - // Ensure balance is properly transferred - let remainder = amount1.checked_sub(transfer).unwrap(); - assert_eq!(get_balance(deps.as_ref(), addr1.clone()), remainder); - assert_eq!(get_balance(deps.as_ref(), contract.clone()), transfer); - assert_eq!( - query_token_info(deps.as_ref()).unwrap().total_supply, - amount1 - ); - assert_eq!( - query_balance_at(deps.as_ref(), addr1, Uint64::from(env.block.time.seconds())) - .unwrap() - .balance, - Uint128::zero() - ); - assert_eq!( - query_balance_at( - deps.as_ref(), - contract, - Uint64::from(env.block.time.seconds()) - ) - .unwrap() - .balance, - Uint128::zero() - ); -} - -#[test] -fn snapshots_are_taken_and_retrieved_correctly() { - let mut deps = mock_dependencies(); - - let addr1 = String::from("addr1"); - let addr2 = String::from("addr2"); - - let mut current_total_supply = Uint128::new(100_000); - let mut current_block = 12_345; - let mut current_time = Timestamp::from_seconds(1_571_797_419); - let mut current_addr1_balance = current_total_supply; - let mut current_addr2_balance = Uint128::zero(); - - // Allow addr2 to burn tokens to check logic - let minter = String::from("addr2"); - do_instantiate_with_minter(deps.as_mut(), &addr1, current_total_supply, &minter, None); - - let mut expected_total_supplies = vec![(current_time.seconds(), current_total_supply)]; - let mut expected_addr1_balances = vec![(current_time.seconds(), current_addr1_balance)]; - let mut expected_addr2_balances: Vec<(u64, Uint128)> = vec![]; - - // Mint to addr2 3 times - for _i in 0..3 { - current_block += 100_000; - current_time = current_time.plus_seconds(600_000); - - let mint_amount = Uint128::new(20_000); - current_total_supply += mint_amount; - current_addr2_balance += mint_amount; - - let info = mock_info(minter.as_str(), &[]); - let env = test_mock_env(MockEnvParams { - block_height: current_block, - block_time: current_time, - }); - - let msg = ExecuteMsg::Mint { - recipient: addr2.clone(), - amount: mint_amount, - }; - - execute(deps.as_mut(), env, info, msg).unwrap(); - - expected_total_supplies.push((current_time.seconds(), current_total_supply)); - expected_addr2_balances.push((current_time.seconds(), current_addr2_balance)); - } - - // Transfer from addr1 to addr2 4 times - for _i in 0..4 { - current_block += 60_000; - current_time = current_time.plus_seconds(360_000); - - let transfer_amount = Uint128::new(10_000); - current_addr1_balance -= transfer_amount; - current_addr2_balance += transfer_amount; - - let info = mock_info(addr1.as_str(), &[]); - let env = test_mock_env(MockEnvParams { - block_height: current_block, - block_time: current_time, - }); - - let msg = ExecuteMsg::Transfer { - recipient: addr2.clone(), - amount: transfer_amount, - }; - - execute(deps.as_mut(), env, info, msg).unwrap(); - - expected_addr1_balances.push((current_time.seconds(), current_addr1_balance)); - expected_addr2_balances.push((current_time.seconds(), current_addr2_balance)); - } - - // Burn from addr2 3 times - for _i in 0..3 { - current_block += 50_000; - current_time = current_time.plus_seconds(300_000); - - let burn_amount = Uint128::new(20_000); - current_total_supply -= burn_amount; - current_addr2_balance -= burn_amount; - - let info = mock_info(addr2.as_str(), &[]); - - let env = test_mock_env(MockEnvParams { - block_height: current_block, - block_time: current_time, - }); - - let msg = ExecuteMsg::Burn { - amount: burn_amount, - }; - - execute(deps.as_mut(), env, info, msg).unwrap(); - - expected_total_supplies.push((current_time.seconds(), current_total_supply)); - expected_addr2_balances.push((current_time.seconds(), current_addr2_balance)); - } - - // Check total supply - let mut total_supply_previous_value = Uint128::zero(); - for (timestamp, expected_total_supply) in expected_total_supplies { - // Previous second gives previous value - assert_eq!( - get_total_supply_at(&deps.storage, Uint64::from(timestamp - 1)).unwrap(), - total_supply_previous_value - ); - - // Current second gives expected value - assert_eq!( - get_total_supply_at(&deps.storage, Uint64::from(timestamp)).unwrap(), - expected_total_supply, - ); - - // Next second still gives expected value - assert_eq!( - get_total_supply_at(&deps.storage, Uint64::from(timestamp + 10)).unwrap(), - expected_total_supply, - ); - - total_supply_previous_value = expected_total_supply; - } - - // Check addr1 balances - let mut balance_previous_value = Uint128::zero(); - for (timestamp, expected_balance) in expected_addr1_balances { - // Previous second gives previous value - assert_eq!( - query_balance_at(deps.as_ref(), addr1.clone(), Uint64::from(timestamp - 10)) - .unwrap() - .balance, - balance_previous_value - ); - - // Current second gives previous value - assert_eq!( - query_balance_at(deps.as_ref(), addr1.clone(), Uint64::from(timestamp)) - .unwrap() - .balance, - balance_previous_value - ); - - // Only the next second still gives expected value - assert_eq!( - query_balance_at(deps.as_ref(), addr1.clone(), Uint64::from(timestamp + 1)) - .unwrap() - .balance, - expected_balance - ); - - balance_previous_value = expected_balance; - } - - // Check addr2 balances - let mut balance_previous_value = Uint128::zero(); - for (timestamp, expected_balance) in expected_addr2_balances { - // Previous second gives previous value - assert_eq!( - query_balance_at(deps.as_ref(), addr2.clone(), Uint64::from(timestamp - 10)) - .unwrap() - .balance, - balance_previous_value - ); - - // The current second gives the previous value - assert_eq!( - query_balance_at(deps.as_ref(), addr2.clone(), Uint64::from(timestamp)) - .unwrap() - .balance, - balance_previous_value - ); - - // Only the next second still gives expected value - assert_eq!( - query_balance_at(deps.as_ref(), addr2.clone(), Uint64::from(timestamp + 1)) - .unwrap() - .balance, - expected_balance - ); - - balance_previous_value = expected_balance; - } -} - -#[test] -fn test_balance_history() { - let mut deps = mock_dependencies(); - let user1 = mock_info("user1", &[]); - do_instantiate_with_minter( - deps.as_mut(), - user1.sender.as_str(), - Uint128::new(1_000), - "user2", - None, - ); - - // Test transfer_from - let mut env = mock_env(); - env.block.height += 1; - env.block.time = env.block.time.plus_seconds(1); - let user2 = mock_info("user2", &[]); - - execute_increase_allowance( - deps.as_mut(), - env.clone(), - user1.clone(), - user2.sender.to_string(), - Uint128::new(1000), - None, - ) - .unwrap(); - - execute_transfer_from( - deps.as_mut(), - env.clone(), - user2.clone(), - user1.sender.to_string(), - user2.sender.to_string(), - Uint128::new(1), - ) - .unwrap(); - - assert_eq!( - query_balance_at( - deps.as_ref(), - user1.sender.to_string(), - Uint64::from(env.block.time.seconds()) - ) - .unwrap(), - BalanceResponse { - balance: Uint128::new(1000) - } - ); - assert_eq!( - query_balance_at( - deps.as_ref(), - user2.sender.to_string(), - Uint64::from(env.block.time.seconds()) - ) - .unwrap(), - BalanceResponse { - balance: Uint128::new(0) - } - ); - assert_eq!( - query_balance(deps.as_ref(), user1.sender.to_string()).unwrap(), - BalanceResponse { - balance: Uint128::new(999) - } - ); - assert_eq!( - query_balance(deps.as_ref(), user2.sender.to_string()).unwrap(), - BalanceResponse { - balance: Uint128::new(1) - } - ); - - // Test burn_from - let mut env = mock_env(); - env.block.height += 2; - env.block.time = env.block.time.plus_seconds(2); - - execute_burn_from( - deps.as_mut(), - env.clone(), - user2.clone(), - user1.sender.to_string(), - Uint128::new(1), - ) - .unwrap(); - - assert_eq!( - query_balance_at( - deps.as_ref(), - user1.sender.to_string(), - Uint64::from(env.block.time.seconds()) - ) - .unwrap(), - BalanceResponse { - balance: Uint128::new(999) - } - ); - assert_eq!( - query_balance_at( - deps.as_ref(), - user2.sender.to_string(), - Uint64::from(env.block.time.seconds()) - ) - .unwrap(), - BalanceResponse { - balance: Uint128::new(1) - } - ); - assert_eq!( - query_balance(deps.as_ref(), user1.sender.to_string()).unwrap(), - BalanceResponse { - balance: Uint128::new(998) - } - ); - assert_eq!( - query_balance(deps.as_ref(), user2.sender.to_string()).unwrap(), - BalanceResponse { - balance: Uint128::new(1) - } - ); - - // Test send_from - let mut env = mock_env(); - env.block.height += 3; - env.block.time = env.block.time.plus_seconds(3); - - execute_send_from( - deps.as_mut(), - env.clone(), - user2.clone(), - user1.sender.to_string(), - MOCK_CONTRACT_ADDR.to_string(), - Uint128::new(1), - Binary::default(), - ) - .unwrap(); - - assert_eq!( - query_balance_at( - deps.as_ref(), - user1.sender.to_string(), - Uint64::from(env.block.time.seconds()) - ) - .unwrap(), - BalanceResponse { - balance: Uint128::new(998) - } - ); - assert_eq!( - query_balance_at( - deps.as_ref(), - user2.sender.to_string(), - Uint64::from(env.block.time.seconds()) - ) - .unwrap(), - BalanceResponse { - balance: Uint128::new(1) - } - ); - assert_eq!( - query_balance_at( - deps.as_ref(), - MOCK_CONTRACT_ADDR.to_string(), - Uint64::from(env.block.time.seconds()) - ) - .unwrap(), - BalanceResponse { - balance: Uint128::new(0) - } - ); - assert_eq!( - query_balance(deps.as_ref(), user1.sender.to_string()).unwrap(), - BalanceResponse { - balance: Uint128::new(997) - } - ); - assert_eq!( - query_balance(deps.as_ref(), user2.sender.to_string()).unwrap(), - BalanceResponse { - balance: Uint128::new(1) - } - ); - assert_eq!( - query_balance(deps.as_ref(), MOCK_CONTRACT_ADDR.to_string()).unwrap(), - BalanceResponse { - balance: Uint128::new(1) - } - ); - - // Test query_all_accounts - assert_eq!( - query_all_accounts(deps.as_ref(), None, None).unwrap(), - AllAccountsResponse { - accounts: vec![ - MOCK_CONTRACT_ADDR.to_string(), - user1.sender.to_string(), - user2.sender.to_string(), - ] - } - ); -} diff --git a/contracts/tokenomics/xastro_token/Cargo.toml b/contracts/tokenomics/xastro_token/Cargo.toml index a90cbe9b8..c545b75d3 100644 --- a/contracts/tokenomics/xastro_token/Cargo.toml +++ b/contracts/tokenomics/xastro_token/Cargo.toml @@ -18,7 +18,7 @@ backtraces = ["cosmwasm-std/backtraces"] library = [] [dependencies] -astroport = { path = "../../../packages/astroport", version = "3" } +astroport = "3" cw2 = "0.15" cw20 = "0.15" cw20-base = { version = "0.15", features = ["library"] } diff --git a/packages/astroport/Cargo.toml b/packages/astroport/Cargo.toml index 58f9c741a..9bc7c9c8b 100644 --- a/packages/astroport/Cargo.toml +++ b/packages/astroport/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "astroport" -version = "3.13.0" +version = "4.0.0" authors = ["Astroport"] edition = "2021" description = "Common Astroport types, queriers and other utils" @@ -17,20 +17,19 @@ backtraces = ["cosmwasm-std/backtraces"] injective = ["injective-math", "thiserror"] [dependencies] -cw20 = { version = "0.15" } -cosmwasm-std = { version = "1.1" } +cw20 = "1.1" +cosmwasm-std.workspace = true uint = "0.9" -cw-storage-plus = "0.15" -itertools = "0.10" -cosmwasm-schema = "1.1" +cw-storage-plus.workspace = true +itertools.workspace = true +cosmwasm-schema.workspace = true astroport-circular-buffer = { version = "0.2", path = "../circular_buffer" } -cw-utils = "1.0" -cw3 = "1.0" +cw-utils.workspace = true cw-asset = "3.0.0" # optional injective-math = { version = "0.1", optional = true } -thiserror = { version = "1.0", optional = true } +thiserror = { workspace = true, optional = true } [dev-dependencies] test-case = "3.1.0" diff --git a/packages/astroport/src/generator.rs b/packages/astroport/src/generator.rs deleted file mode 100644 index 1e99e30bf..000000000 --- a/packages/astroport/src/generator.rs +++ /dev/null @@ -1,425 +0,0 @@ -use crate::asset::{Asset, AssetInfo}; -use crate::factory::PairType; -use crate::restricted_vector::RestrictedVector; -use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{ - to_json_binary, Addr, Decimal, Env, StdResult, SubMsg, Uint128, Uint64, WasmMsg, -}; -use cw20::Cw20ReceiveMsg; - -/// This structure describes the parameters used for creating a contract. -#[cw_serde] -pub struct InstantiateMsg { - /// Address that can change contract settings - pub owner: String, - /// Address of factory contract - pub factory: String, - /// Address that can set active generators and their alloc points - pub generator_controller: Option, - /// The voting escrow delegation contract address - pub voting_escrow_delegation: Option, - /// The voting escrow contract address - pub voting_escrow: Option, - /// Address of guardian - pub guardian: Option, - /// [`AssetInfo`] of the ASTRO token - pub astro_token: AssetInfo, - /// Amount of ASTRO distributed per block among all pairs - pub tokens_per_block: Uint128, - /// Start block for distributing ASTRO - pub start_block: Uint64, - /// The ASTRO vesting contract that drips ASTRO rewards - pub vesting_contract: String, - /// Whitelist code id - pub whitelist_code_id: u64, -} - -#[cw_serde] -pub enum ExecuteMsg { - /// Update the address of the ASTRO vesting contract - /// ## Executor - /// Only the owner can execute it. - UpdateConfig { - /// The new vesting contract address - vesting_contract: Option, - /// The new generator controller contract address - generator_controller: Option, - /// The new generator guardian - guardian: Option, - /// The new voting escrow delegation contract address - voting_escrow_delegation: Option, - /// The new voting escrow contract address - voting_escrow: Option, - /// The amount of generators - checkpoint_generator_limit: Option, - }, - /// Setup generators with their respective allocation points. - /// ## Executor - /// Only the owner or generator controller can execute this. - SetupPools { - /// The list of pools with allocation point. - pools: Vec<(String, Uint128)>, - }, - /// Update rewards and return it to user. - ClaimRewards { - /// the LP token contract address - lp_tokens: Vec, - }, - /// Withdraw LP tokens from the Generator - Withdraw { - /// The address of the LP token to withdraw - lp_token: String, - /// The amount to withdraw - amount: Uint128, - }, - /// Withdraw LP tokens from the Generator without withdrawing outstanding rewards - EmergencyWithdraw { - /// The address of the LP token to withdraw - lp_token: String, - }, - /// Sends orphan proxy rewards (which were left behind after emergency withdrawals) to another address - SendOrphanProxyReward { - /// The transfer recipient - recipient: String, - /// The address of the LP token contract for which we send orphaned rewards - lp_token: String, - }, - /// Receives a message of type [`Cw20ReceiveMsg`] - Receive(Cw20ReceiveMsg), - /// Set a new amount of ASTRO to distribute per block - /// ## Executor - /// Only the owner can execute this. - SetTokensPerBlock { - /// The new amount of ASTRO to distro per block - amount: Uint128, - }, - /// Creates a request to change contract ownership - /// ## Executor - /// Only the current owner can execute this. - ProposeNewOwner { - /// The newly proposed owner - owner: String, - /// The validity period of the proposal to change the contract owner - expires_in: u64, - }, - /// Removes a request to change contract ownership - /// ## Executor - /// Only the current owner can execute this - DropOwnershipProposal {}, - /// Claims contract ownership - /// ## Executor - /// Only the newly proposed owner can execute this - ClaimOwnership {}, - /// Sets a new proxy contract for a specific generator - /// Sets a proxy for the pool - /// ## Executor - /// Only the current owner or generator controller can execute this - MoveToProxy { - lp_token: String, - proxy: String, - }, - MigrateProxy { - lp_token: String, - new_proxy: String, - }, - /// Add or remove token to the block list - UpdateBlockedTokenslist { - /// Tokens to add - add: Option>, - /// Tokens to remove - remove: Option>, - }, - /// Sets the allocation point to zero for the specified pool - DeactivatePool { - lp_token: String, - }, - /// Sets the allocation point to zero for each pool by the pair type - DeactivateBlacklistedPools { - pair_types: Vec, - }, - /// Updates the boost emissions for specified user and generators - CheckpointUserBoost { - generators: Vec, - user: Option, - }, - /// Process action after the callback - Callback { - action: ExecuteOnReply, - }, -} - -#[cw_serde] -pub enum ExecuteOnReply { - /// Updates reward and returns it to user. - ClaimRewards { - /// The list of LP tokens contract - lp_tokens: Vec, - /// The rewards recipient - account: Addr, - }, - /// Stake LP tokens in the Generator to receive token emissions - Deposit { - /// The LP token to stake - lp_token: Addr, - /// The account that receives ownership of the staked tokens - account: Addr, - /// The amount of tokens to deposit - amount: Uint128, - }, - /// Withdraw LP tokens from the Generator - Withdraw { - /// The LP tokens to withdraw - lp_token: Addr, - /// The account that receives the withdrawn LP tokens - account: Addr, - /// The amount of tokens to withdraw - amount: Uint128, - }, - /// Sets a new amount of ASTRO to distribute per block between all active generators - SetTokensPerBlock { - /// The new amount of ASTRO to distribute per block - amount: Uint128, - }, - /// Migrate LP tokens and collected rewards to new proxy - MigrateProxy { lp_addr: Addr, new_proxy_addr: Addr }, - /// Stake LP tokens into new reward proxy - MigrateProxyDepositLP { - lp_addr: Addr, - prev_proxy_addr: Addr, - amount: Uint128, - }, -} - -impl ExecuteOnReply { - pub fn into_submsg(self, env: &Env) -> StdResult { - let msg = SubMsg::new(WasmMsg::Execute { - contract_addr: env.contract.address.to_string(), - msg: to_json_binary(&ExecuteMsg::Callback { action: self })?, - funds: vec![], - }); - - Ok(msg) - } -} - -#[cw_serde] -#[derive(QueryResponses)] -pub enum QueryMsg { - /// Returns the length of the array that contains all the active pool generators - #[returns(usize)] - ActivePoolLength {}, - /// PoolLength returns the length of the array that contains all the instantiated pool generators - #[returns(usize)] - PoolLength {}, - /// Deposit returns the LP token amount deposited in a specific generator - #[returns(Uint128)] - Deposit { lp_token: String, user: String }, - /// Returns the current virtual amount in a specific generator - #[returns(Uint128)] - UserVirtualAmount { lp_token: String, user: String }, - /// Returns the total virtual supply of generator - #[returns(Uint128)] - TotalVirtualSupply { generator: String }, - /// PendingToken returns the amount of rewards that can be claimed by an account that deposited a specific LP token in a generator - #[returns(PendingTokenResponse)] - PendingToken { lp_token: String, user: String }, - /// Config returns the main contract parameters - #[returns(Config)] - Config {}, - /// RewardInfo returns reward information for a specified LP token - #[returns(RewardInfoResponse)] - RewardInfo { lp_token: String }, - /// OrphanProxyRewards returns orphaned reward information for the specified LP token - #[returns(Vec<(AssetInfo, Uint128)>)] - OrphanProxyRewards { lp_token: String }, - /// PoolInfo returns information about a pool associated with the specified LP token alongside - /// the total pending amount of ASTRO and proxy rewards claimable by generator stakers (for that LP token) - #[returns(PoolInfoResponse)] - PoolInfo { lp_token: String }, - /// SimulateFutureReward returns the amount of ASTRO that will be distributed until a future block and for a specific generator - #[returns(Uint128)] - SimulateFutureReward { lp_token: String, future_block: u64 }, - /// Returns a list of stakers for a specific generator - #[returns(Vec)] - PoolStakers { - lp_token: String, - start_after: Option, - limit: Option, - }, - /// Returns the blocked list of tokens - #[returns(Vec)] - BlockedTokensList {}, - /// Returns a list of reward proxy contracts which have been ever used - #[returns(Vec)] - RewardProxiesList {}, -} - -/// This structure holds the response returned when querying the amount of pending rewards that can be withdrawn from a 3rd party -/// rewards contract -#[cw_serde] -pub struct PendingTokenResponse { - /// The amount of pending ASTRO - pub pending: Uint128, - /// The amount of pending 3rd party reward tokens - pub pending_on_proxy: Option>, -} - -/// This structure describes the main information of pool -#[cw_serde] -pub struct PoolInfo { - /// Accumulated amount of reward per share unit. Used for reward calculations - pub last_reward_block: Uint64, - pub reward_global_index: Decimal, - /// the reward proxy contract - pub reward_proxy: Option, - /// Accumulated reward indexes per reward proxy. Vector of pairs (reward_proxy, index). - pub accumulated_proxy_rewards_per_share: RestrictedVector, - /// for calculation of new proxy rewards - pub proxy_reward_balance_before_update: Uint128, - /// the orphan proxy rewards which are left by emergency withdrawals. Vector of pairs (reward_proxy, index). - pub orphan_proxy_rewards: RestrictedVector, - /// This field is not used anymore and can opt out on next migration of the structure - pub has_asset_rewards: bool, - /// Total virtual amount - pub total_virtual_supply: Uint128, -} - -/// This structure stores the outstanding amount of token rewards that a user accrued. -/// Currently the contract works with UserInfoV2 structure, but this structure is kept for -/// compatibility with the old version. -#[cw_serde] -#[derive(Default)] -pub struct UserInfo { - /// The amount of LP tokens staked - pub amount: Uint128, - /// The amount of ASTRO rewards a user already received or is not eligible for; used for proper reward calculation - pub reward_debt: Uint128, - /// Proxy reward amount a user already received or is not eligible for; used for proper reward calculation - pub reward_debt_proxy: Uint128, -} - -/// This structure stores the outstanding amount of token rewards that a user accrued. -#[cw_serde] -#[derive(Default)] -pub struct UserInfoV2 { - /// The amount of LP tokens staked - pub amount: Uint128, - /// The amount of ASTRO rewards a user already received or is not eligible for; used for proper reward calculation - pub reward_user_index: Decimal, - /// Proxy reward amount a user already received per reward proxy; used for proper reward calculation - /// Vector of pairs (reward_proxy, reward debited). - pub reward_debt_proxy: RestrictedVector, - /// The amount of user boosted emissions - pub virtual_amount: Uint128, -} - -/// This structure holds the response returned when querying for the token addresses used to reward a specific generator -#[cw_serde] -pub struct RewardInfoResponse { - /// [`AssetInfo`] of the base reward token - pub base_reward_token: AssetInfo, - /// The address of the 3rd party reward token - pub proxy_reward_token: Option, -} - -/// This structure holds the response returned when querying for a pool's information -#[cw_serde] -pub struct PoolInfoResponse { - /// The slice of ASTRO that this pool's generator gets per block - pub alloc_point: Uint128, - /// Amount of ASTRO tokens being distributed per block to this LP pool - pub astro_tokens_per_block: Uint128, - /// The last block when token emissions were snapshotted (distributed) - pub last_reward_block: u64, - /// Current block number. Useful for computing APRs off-chain - pub current_block: u64, - /// Total amount of ASTRO rewards already accumulated per LP token staked - pub global_reward_index: Decimal, - /// Pending amount of total ASTRO rewards which are claimable by stakers right now - pub pending_astro_rewards: Uint128, - /// The address of the 3rd party reward proxy contract - pub reward_proxy: Option, - /// Pending amount of total proxy rewards which are claimable by stakers right now - pub pending_proxy_rewards: Option, - /// Total amount of 3rd party token rewards already accumulated per LP token staked per proxy - pub accumulated_proxy_rewards_per_share: Vec<(Addr, Decimal)>, - /// Reward balance for the dual rewards proxy before updating accrued rewards - pub proxy_reward_balance_before_update: Uint128, - /// The amount of orphan proxy rewards which are left behind by emergency withdrawals and not yet transferred out - pub orphan_proxy_rewards: Vec<(Addr, Uint128)>, - /// Total amount of lp tokens staked in the pool's generator - pub lp_supply: Uint128, -} - -/// This structure stores the core parameters for the Generator contract. -#[cw_serde] -pub struct Config { - /// Address allowed to change contract parameters - pub owner: Addr, - /// The Factory address - pub factory: Addr, - /// Contract address which can only set active generators and their alloc points - pub generator_controller: Option, - /// The voting escrow contract address - pub voting_escrow: Option, - /// The voting escrow delegation contract address - pub voting_escrow_delegation: Option, - /// [`AssetInfo`] of the ASTRO token - pub astro_token: AssetInfo, - /// Total amount of ASTRO rewards per block - pub tokens_per_block: Uint128, - /// Total allocation points. Must be the sum of all allocation points in all active generators - pub total_alloc_point: Uint128, - /// The block number when the ASTRO distribution starts - pub start_block: Uint64, - /// The vesting contract from which rewards are distributed - pub vesting_contract: Addr, - /// The list of active pools with allocation points - pub active_pools: Vec<(Addr, Uint128)>, - /// The list of blocked tokens - pub blocked_tokens_list: Vec, - /// The guardian address which can add or remove tokens from blacklist - pub guardian: Option, - /// The amount of generators - pub checkpoint_generator_limit: Option, -} - -/// This structure describes a migration message. -#[cw_serde] -pub struct MigrateMsg { - /// The Factory address - pub factory: Option, - /// Contract address which can only set active generators and their alloc points - pub generator_controller: Option, - /// The blocked list of tokens - pub blocked_list_tokens: Option>, - /// The guardian address - pub guardian: Option, - /// Whitelist code id - pub whitelist_code_id: Option, - /// The voting escrow contract - pub voting_escrow: Option, - /// The voting escrow delegation contract - pub voting_escrow_delegation: Option, - /// The limit of generators - pub generator_limit: Option, -} - -/// This structure describes custom hooks for the CW20. -#[cw_serde] -pub enum Cw20HookMsg { - /// Deposit performs a token deposit on behalf of the message sender. - Deposit {}, - /// DepositFor performs a token deposit on behalf of another address that's not the message sender. - DepositFor(String), -} - -/// This structure holds the parameters used to return information about a staked in -/// a specific generator. -#[cw_serde] -pub struct StakerResponse { - // The staker's address - pub account: String, - // The amount that the staker currently has in the generator - pub amount: Uint128, -} diff --git a/packages/astroport/src/generator_proxy.rs b/packages/astroport/src/generator_proxy.rs deleted file mode 100644 index 9e2cd7ccd..000000000 --- a/packages/astroport/src/generator_proxy.rs +++ /dev/null @@ -1,90 +0,0 @@ -use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{Addr, Uint128}; -use cw20::Cw20ReceiveMsg; - -/// This structure describes the basic parameters for creating a contract. -#[cw_serde] -pub struct InstantiateMsg { - /// The generator contract address - pub generator_contract_addr: String, - /// The pair contract address used in this generator proxy - pub pair_addr: String, - /// The LP contract address which can be staked in the reward_contract - pub lp_token_addr: String, - /// The 3rd party reward contract address - pub reward_contract_addr: String, - /// The 3rd party reward token contract address - pub reward_token_addr: String, -} - -#[cw_serde] -pub enum Cw20HookMsg { - Deposit {}, -} - -/// This structure describes the execute messages available in the contract. -#[cw_serde] -pub enum ExecuteMsg { - /// Receives a message of type [`Cw20ReceiveMsg`] - Receive(Cw20ReceiveMsg), - /// Withdraw pending token rewards from the 3rd party staking contract - UpdateRewards {}, - /// Sends rewards to a recipient - SendRewards { account: String, amount: Uint128 }, - /// Withdraw LP tokens and outstanding token rewards - Withdraw { - /// The address that will receive the withdrawn tokens and rewards - account: String, - /// The amount of LP tokens to withdraw - amount: Uint128, - }, - /// Withdraw LP tokens without claiming rewards - EmergencyWithdraw { - /// The address that will receive the withdrawn tokens - account: String, - /// The amount of LP tokens to withdraw - amount: Uint128, - }, - /// Callback of type [`CallbackMsg`] - Callback(CallbackMsg), -} - -/// This structure describes the callback messages available in the contract. -#[cw_serde] -pub enum CallbackMsg { - TransferLpTokensAfterWithdraw { - /// The LP token recipient - account: Addr, - /// The previous LP balance for the contract. This is used to calculate - /// the amount of received LP tokens after withdrawing from a third party contract - prev_lp_balance: Uint128, - }, -} - -/// This structure describes query messages available in the contract. -#[cw_serde] -#[derive(QueryResponses)] -pub enum QueryMsg { - /// Returns the contract's core configuration - #[returns(ConfigResponse)] - Config {}, - /// Returns the amount of deposited LP tokens - #[returns(Uint128)] - Deposit {}, - /// Returns the amount of rewards to be distributed - #[returns(Uint128)] - Reward {}, - /// Returns the amount of pending rewards which can be claimed right now - #[returns(Uint128)] - PendingToken {}, - /// Returns the 3rd party reward token contract address - #[returns(Addr)] - RewardInfo {}, -} - -pub type ConfigResponse = InstantiateMsg; - -/// This structure describes a migration message. -/// We currently take no arguments for migrations -#[cw_serde] -pub struct MigrateMsg {} diff --git a/packages/astroport/src/lib.rs b/packages/astroport/src/lib.rs index 7bd1d3a3d..8ce3387d6 100644 --- a/packages/astroport/src/lib.rs +++ b/packages/astroport/src/lib.rs @@ -1,32 +1,30 @@ +use cosmwasm_std::{Decimal, Decimal256, StdError, StdResult, Uint128}; + +pub use decimal_checked_ops::DecimalCheckedOps; +pub use uints::U256; + pub mod asset; pub mod common; pub mod cosmwasm_ext; pub mod factory; pub mod fee_granter; -pub mod generator; -pub mod generator_proxy; #[cfg(feature = "injective")] pub mod injective_ext; pub mod maker; pub mod native_coin_registry; -pub mod native_coin_wrapper; pub mod observation; pub mod oracle; -pub mod outpost_handler; pub mod pair; -pub mod pair_bonded; pub mod pair_concentrated; pub mod pair_concentrated_inj; pub mod pair_xyk_sale_tax; pub mod querier; pub mod restricted_vector; pub mod router; -pub mod shared_multisig; pub mod staking; pub mod token; pub mod tokenfactory_tracker; pub mod vesting; -pub mod xastro_outpost_token; pub mod xastro_token; #[cfg(test)] @@ -41,14 +39,17 @@ mod testing; #[allow(clippy::all)] mod uints { use uint::construct_uint; + construct_uint! { pub struct U256(4); } } mod decimal_checked_ops { - use cosmwasm_std::{Decimal, Fraction, OverflowError, Uint128, Uint256}; use std::convert::TryInto; + + use cosmwasm_std::{Decimal, Fraction, OverflowError, Uint128, Uint256}; + pub trait DecimalCheckedOps { fn checked_add(self, other: Decimal) -> Result; fn checked_mul_uint128(self, other: Uint128) -> Result; @@ -79,8 +80,6 @@ mod decimal_checked_ops { } } -use cosmwasm_std::{Decimal, Decimal256, StdError, StdResult, Uint128}; - /// Converts [`Decimal256`] to [`Decimal`]. pub fn to_decimal(value: Decimal256) -> StdResult { let atomics = Uint128::try_from(value.atomics())?; @@ -88,6 +87,3 @@ pub fn to_decimal(value: Decimal256) -> StdResult { StdError::generic_err(format!("Failed to convert Decimal256 {} to Decimal", value)) }) } - -pub use decimal_checked_ops::DecimalCheckedOps; -pub use uints::U256; diff --git a/packages/astroport/src/native_coin_wrapper.rs b/packages/astroport/src/native_coin_wrapper.rs deleted file mode 100644 index 4ca2cb5f0..000000000 --- a/packages/astroport/src/native_coin_wrapper.rs +++ /dev/null @@ -1,54 +0,0 @@ -use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::Addr; -use cw20::Cw20ReceiveMsg; - -/// This structure stores the main parameters for the generator vesting contract. -#[cw_serde] -pub struct Config { - /// A coin to be wrapped - pub denom: String, - /// The token to be issued - pub token: Addr, -} - -/// This structure describes the parameters used for creating a contract. -#[cw_serde] -pub struct InstantiateMsg { - /// A coin to be wrapped - pub denom: String, - /// CW20 token code identifier - pub token_code_id: u64, - /// The decimals value of the CW20 token. - pub token_decimals: u8, -} - -/// This structure describes the execute messages available in the contract. -#[cw_serde] -pub enum ExecuteMsg { - /// Wraps the specified native coin and issues a cw20 token instead. - Wrap {}, - /// Receives a message of type [`Cw20ReceiveMsg`] - /// Receives the specified cw20 token and issues a wrapped native coin in return. - Receive(Cw20ReceiveMsg), -} - -/// This structure describes the query messages available in the contract. -#[cw_serde] -#[derive(QueryResponses)] -pub enum QueryMsg { - /// Returns the configuration for the contract. - #[returns(Config)] - Config {}, -} - -/// This structure describes a migration message. -/// We currently take no arguments for migrations. -#[cw_serde] -pub struct MigrateMsg {} - -/// This structure describes a CW20 hook message. -#[cw_serde] -pub enum Cw20HookMsg { - /// Receives the specified cw20 token and issues a wrapped native coin in return. - Unwrap {}, -} diff --git a/packages/astroport/src/outpost_handler.rs b/packages/astroport/src/outpost_handler.rs deleted file mode 100644 index 176af8299..000000000 --- a/packages/astroport/src/outpost_handler.rs +++ /dev/null @@ -1,23 +0,0 @@ -use cosmwasm_schema::cw_serde; - -/// Messages handled via CW20 transfers -#[cw_serde] -pub enum Cw20HookMsg { - /// Executes instructions received via an IBC transfer memo in the - /// CW20-ICS20 contract - OutpostMemo { - /// The channel the memo was received on - channel: String, - /// The original sender of the packet on the outpost - sender: String, - /// The original receiver of the packet on the Hub - receiver: String, - /// The memo containing the instruction to execute - memo: String, - }, - /// Handle failed CW20 IBC transfers - TransferFailure { - // The original receiver of the funds - receiver: String, - }, -} diff --git a/packages/astroport/src/pair_bonded.rs b/packages/astroport/src/pair_bonded.rs deleted file mode 100644 index c2fc7c056..000000000 --- a/packages/astroport/src/pair_bonded.rs +++ /dev/null @@ -1,88 +0,0 @@ -use cosmwasm_schema::{cw_serde, QueryResponses}; - -use crate::asset::{Asset, AssetInfo, PairInfo}; -use crate::pair::{ - ConfigResponse, CumulativePricesResponse, PoolResponse, ReverseSimulationResponse, - SimulationResponse, -}; - -use cosmwasm_std::{Addr, Binary, Decimal, Uint128}; -use cw20::Cw20ReceiveMsg; - -/// The default swap slippage -pub const DEFAULT_SLIPPAGE: &str = "0.005"; -/// The maximum allowed swap slippage -pub const MAX_ALLOWED_SLIPPAGE: &str = "0.5"; - -/// This structure stores the main config parameters for a constant product pair contract. -#[cw_serde] -pub struct Config { - /// General pair information (e.g pair type) - pub pair_info: PairInfo, - /// The factory contract address - pub factory_addr: Addr, -} - -/// This structure describes the execute messages available in the contract. -#[cw_serde] -pub enum ExecuteMsg { - /// Receives a message of type [`Cw20ReceiveMsg`] - Receive(Cw20ReceiveMsg), - /// ProvideLiquidity allows someone to provide liquidity in the pool - ProvideLiquidity { - /// The assets available in the pool - assets: [Asset; 2], - /// The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much - slippage_tolerance: Option, - /// Determines whether the LP tokens minted for the user is auto_staked in the Generator contract - auto_stake: Option, - /// The receiver of LP tokens - receiver: Option, - }, - /// Swap performs a swap in the pool - Swap { - offer_asset: Asset, - belief_price: Option, - max_spread: Option, - to: Option, - }, - /// Update the pair configuration - UpdateConfig { params: Binary }, - /// Callback to process post-swap operation - AssertAndSend { - offer_asset: Asset, - /// Information about an asset stored in a [`AssetInfo`] struct - ask_asset_info: AssetInfo, - /// Receiver who should receive the funds - receiver: Addr, - /// Sender who initiated the transaction - sender: Addr, - }, -} - -/// This structure describes the query messages available in the contract. -#[cw_serde] -#[derive(QueryResponses)] -pub enum QueryMsg { - /// Returns information about a pair in an object of type [`super::asset::PairInfo`]. - #[returns(PairInfo)] - Pair {}, - /// Returns information about a pool in an object of type [`PoolResponse`]. - #[returns(PoolResponse)] - Pool {}, - /// Returns contract configuration settings in a custom [`ConfigResponse`] structure. - #[returns(ConfigResponse)] - Config {}, - /// Returns information about the share of the pool in a vector that contains objects of type [`Asset`]. - #[returns(Vec)] - Share { amount: Uint128 }, - /// Returns information about a swap simulation in a [`SimulationResponse`] object. - #[returns(SimulationResponse)] - Simulation { offer_asset: Asset }, - /// Returns information about cumulative prices in a [`ReverseSimulationResponse`] object. - #[returns(ReverseSimulationResponse)] - ReverseSimulation { ask_asset: Asset }, - /// Returns information about the cumulative prices in a [`CumulativePricesResponse`] object - #[returns(CumulativePricesResponse)] - CumulativePrices {}, -} diff --git a/packages/astroport/src/shared_multisig.rs b/packages/astroport/src/shared_multisig.rs deleted file mode 100644 index 4b34e34b0..000000000 --- a/packages/astroport/src/shared_multisig.rs +++ /dev/null @@ -1,292 +0,0 @@ -use crate::asset::Asset; -use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{from_json, Addr, CosmosMsg, Decimal, Empty, StdResult, Uint128}; -use cw3::Vote; -use cw_storage_plus::{Key, KeyDeserialize, Prefixer, PrimaryKey}; -use cw_utils::{Duration, Expiration, Threshold, ThresholdResponse}; -use std::fmt::{Display, Formatter}; - -pub const TOTAL_WEIGHT: u64 = 2; -pub const DEFAULT_WEIGHT: u64 = 1; - -#[cw_serde] -pub struct Config { - pub threshold: Threshold, - pub total_weight: u64, - pub max_voting_period: Duration, - /// The factory contract address - pub factory_addr: Addr, - /// The generator contract address - pub generator_addr: Addr, - /// Address allowed to change contract parameters - pub manager1: Addr, - /// Address allowed to change contract parameters - pub manager2: Addr, - /// The target pool is the one where the contract can LP NTRN and ASTRO at the current pool price - pub target_pool: Option, - /// This is the pool into which liquidity will be migrated from the target pool. - pub migration_pool: Option, - /// Allows to withdraw funds for both managers - pub rage_quit_started: bool, - /// This is the denom that the first manager will manage. - pub denom1: String, - /// This is the denom that the second manager will manage. - pub denom2: String, -} - -#[cw_serde] -pub struct ConfigResponse { - pub threshold: ThresholdResponse, - pub max_voting_period: Duration, - pub manager1: String, - pub manager2: String, - pub target_pool: Option, - pub migration_pool: Option, - pub rage_quit_started: bool, - pub denom1: String, - pub denom2: String, - pub factory: String, - pub generator: String, -} - -#[cw_serde] -pub struct InstantiateMsg { - pub factory_addr: String, - pub generator_addr: String, - pub max_voting_period: Duration, - /// Address allowed to change contract parameters - pub manager1: String, - /// Address allowed to change contract parameters - pub manager2: String, - /// This is the denom that the first manager will manage. - pub denom1: String, - /// This is the denom that the second manager will manage. - pub denom2: String, - /// The target pool is the one where the contract can LP NTRN and ASTRO at the current pool price - pub target_pool: Option, -} - -#[cw_serde] -#[derive(Hash, Eq)] -pub enum PoolType { - Target, - Migration, -} - -impl Display for PoolType { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match self { - PoolType::Target => f.write_str("target"), - PoolType::Migration => f.write_str("migration"), - } - } -} - -#[cw_serde] -#[derive(Hash, Eq)] -pub enum MultisigRole { - Manager1, - Manager2, -} - -impl Display for MultisigRole { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match self { - MultisigRole::Manager1 => f.write_str("manager1"), - MultisigRole::Manager2 => f.write_str("manager2"), - } - } -} - -impl MultisigRole { - pub fn as_bytes(&self) -> &[u8] { - match self { - MultisigRole::Manager1 => "manager1".as_bytes(), - MultisigRole::Manager2 => "manager2".as_bytes(), - } - } -} - -impl<'a> PrimaryKey<'a> for &MultisigRole { - type Prefix = (); - - type SubPrefix = (); - - type Suffix = Self; - - type SuperSuffix = Self; - - fn key(&self) -> Vec { - vec![Key::Ref(self.as_bytes())] - } -} - -impl<'a> Prefixer<'a> for &MultisigRole { - fn prefix(&self) -> Vec { - vec![Key::Ref(self.as_bytes())] - } -} - -impl KeyDeserialize for &MultisigRole { - type Output = MultisigRole; - - #[inline(always)] - fn from_vec(value: Vec) -> StdResult { - from_json(value) - } -} - -#[cw_serde] -pub struct ProvideParams { - /// The slippage tolerance that allows liquidity provision only if the price in the pool - /// doesn't move too much - pub slippage_tolerance: Option, - /// Determines whether the LP tokens minted for the user is auto_staked in the Generator contract - pub auto_stake: Option, -} - -#[cw_serde] -pub enum ExecuteMsg { - UpdateConfig { - generator: Option, - factory: Option, - }, - SetupPools { - /// The target pool is the one where the contract can LP NTRN and ASTRO at the current pool price - target_pool: Option, - /// This is the pool into which liquidity will be migrated from the target pool. - migration_pool: Option, - }, - SetupMaxVotingPeriod { - max_voting_period: Duration, - }, - /// Withdraws coins from the target pool. Also it is possible to withdraw LP from the target - /// pool and make provide LP to the migration pool in the same transaction. - WithdrawTargetPoolLP { - withdraw_amount: Option, - provide_params: Option, - }, - /// Withdraws coins from the specified pool. - WithdrawRageQuitLP { - pool_type: PoolType, - withdraw_amount: Option, - }, - /// Withdraw LP tokens from the Generator - WithdrawGenerator { - /// The amount to withdraw - amount: Option, - }, - /// Update generator rewards and returns them to the Multisig. - ClaimGeneratorRewards {}, - /// Deposit the target LP tokens to the generator - DepositGenerator { - /// The amount to deposit - amount: Option, - }, - /// Provides liquidity to the specified pool - ProvideLiquidity { - pool_type: PoolType, - /// The assets available in the pool - assets: Vec, - /// The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much - slippage_tolerance: Option, - /// Determines whether the LP tokens minted for the user is auto_staked in the Generator contract - auto_stake: Option, - /// The receiver of LP tokens - receiver: Option, - }, - /// Transfers manager coins and other coins from the shared_multisig. - /// Executor: manager1 or manager2. - Transfer { - asset: Asset, - recipient: Option, - }, - CompleteTargetPoolMigration {}, - StartRageQuit {}, - Propose { - title: String, - description: String, - msgs: Vec>, - // note: we ignore API-spec'd earliest if passed, always opens immediately - latest: Option, - }, - Vote { - proposal_id: u64, - vote: Vote, - }, - Execute { - proposal_id: u64, - }, - Close { - proposal_id: u64, - }, - /// Creates a proposal to change contract manager1. The validity period for the proposal is set - /// in the `expires_in` variable. - ProposeNewManager1 { - /// Newly proposed contract manager - new_manager: String, - /// The date after which this proposal expires - expires_in: u64, - }, - /// Removes the existing offer to change contract manager1. - DropManager1Proposal {}, - /// Used to claim a new contract manager1. - ClaimManager1 {}, - /// Creates a proposal to change contract manager2. The validity period for the proposal is set - /// in the `expires_in` variable. - ProposeNewManager2 { - /// Newly proposed contract - new_manager: String, - /// The date after which this proposal expires - expires_in: u64, - }, - /// Removes the existing offer to change contract manager2. - DropManager2Proposal {}, - /// Used to claim a new second manager of contract. - ClaimManager2 {}, -} - -#[cw_serde] -#[derive(QueryResponses)] -pub enum QueryMsg { - #[returns(ConfigResponse)] - Config {}, - #[returns(cw3::ProposalResponse)] - Proposal { proposal_id: u64 }, - #[returns(cw3::ProposalListResponse)] - ListProposals { - start_after: Option, - limit: Option, - }, - #[returns(cw3::ProposalListResponse)] - ReverseProposals { - start_before: Option, - limit: Option, - }, - #[returns(cw3::VoteResponse)] - Vote { proposal_id: u64, voter: String }, - #[returns(cw3::VoteListResponse)] - ListVotes { proposal_id: u64 }, -} - -/// This structure describes a migration message. -/// We currently take no arguments for migrations. -#[cw_serde] -pub struct MigrateMsg {} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_multisig_role() { - assert_eq!(MultisigRole::Manager1.as_bytes(), "manager1".as_bytes()); - assert_eq!(MultisigRole::Manager2.as_bytes(), "manager2".as_bytes()); - } - - #[test] - fn test_multisig_role_display() { - assert_eq!(MultisigRole::Manager1.to_string(), "manager1"); - assert_eq!(MultisigRole::Manager2.to_string(), "manager2"); - } -} diff --git a/packages/astroport/src/xastro_outpost_token.rs b/packages/astroport/src/xastro_outpost_token.rs deleted file mode 100644 index 020df764a..000000000 --- a/packages/astroport/src/xastro_outpost_token.rs +++ /dev/null @@ -1,76 +0,0 @@ -use cosmwasm_schema::{cw_serde, QueryResponses}; - -use cosmwasm_std::{QuerierWrapper, StdResult, Uint128, Uint64}; -use cw20::{ - AllAccountsResponse, AllAllowancesResponse, AllowanceResponse, BalanceResponse, - DownloadLogoResponse, MarketingInfoResponse, MinterResponse, TokenInfoResponse, -}; - -/// This enum describes the query messages available in the contract. -#[cw_serde] -#[derive(QueryResponses)] -pub enum QueryMsg { - /// Balance returns the current balance of a given address, 0 if unset. - #[returns(BalanceResponse)] - Balance { address: String }, - /// BalanceAt returns balance of the given address at the given timestamp in seconds, 0 if unset. - #[returns(BalanceResponse)] - BalanceAt { address: String, timestamp: Uint64 }, - /// TotalSupplyAt returns the total token supply at the given timestamp in seconds. - #[returns(Uint128)] - TotalSupplyAt { timestamp: Uint64 }, - /// TokenInfo returns the contract's metadata - name, decimals, supply, etc. - #[returns(TokenInfoResponse)] - TokenInfo {}, - /// Returns who can mint xASTRO and the hard cap on maximum tokens after minting. - #[returns(Option)] - Minter {}, - /// Allowance returns an amount of tokens the spender can spend from the owner account, 0 if unset. - #[returns(AllowanceResponse)] - Allowance { owner: String, spender: String }, - /// AllAllowances returns all the allowances this token holder has approved. Supports pagination. - #[returns(AllAllowancesResponse)] - AllAllowances { - owner: String, - start_after: Option, - limit: Option, - }, - /// AllAccounts returns all the accounts that have xASTRO balances. Supports pagination. - #[returns(AllAccountsResponse)] - AllAccounts { - start_after: Option, - limit: Option, - }, - /// Returns marketing related contract metadata: - /// - description, logo, project url, etc. - #[returns(MarketingInfoResponse)] - MarketingInfo {}, - /// Downloads embeded logo data (if stored on chain). Errors if no logo data was stored for this contract. - #[returns(DownloadLogoResponse)] - DownloadLogo {}, -} - -/// This structure describes a migration message. -#[cw_serde] -pub struct MigrateMsg {} - -/// Queries current user's voting power from the xASTRO contract by timestamp. -/// -/// * **user** staker for which we calculate the voting power at a specific time. -/// -/// * **timestamp** timestamp at which we fetch the staker's voting power. -pub fn get_voting_power_at_time( - querier: &QuerierWrapper, - xastro_addr: impl Into, - user: impl Into, - timestamp: impl Into, -) -> StdResult { - let response: BalanceResponse = querier.query_wasm_smart( - xastro_addr, - &QueryMsg::BalanceAt { - address: user.into(), - timestamp: timestamp.into(), - }, - )?; - Ok(response.balance) -} diff --git a/packages/astroport_mocks/Cargo.toml b/packages/astroport_mocks/Cargo.toml index 04f3c79d0..d695f4dac 100644 --- a/packages/astroport_mocks/Cargo.toml +++ b/packages/astroport_mocks/Cargo.toml @@ -13,14 +13,12 @@ homepage = "https://astroport.fi" [dependencies] astroport = { path = "../astroport" } astroport-factory = { path = "../../contracts/factory" } -astroport-generator = { path = "../../contracts/tokenomics/generator" } astroport-native-coin-registry = { path = "../../contracts/periphery/native_coin_registry" } -astroport-shared-multisig = { path = "../../contracts/periphery/shared_multisig" } astroport-pair = { path = "../../contracts/pair" } astroport-pair-stable = { path = "../../contracts/pair_stable" } astroport-pair-concentrated = { path = "../../contracts/pair_concentrated" } astroport-staking = { path = "../../contracts/tokenomics/staking" } -astroport-token = { path = "../../contracts/token" } +cw20-base = "1" astroport-vesting = { path = "../../contracts/tokenomics/vesting" } astroport-xastro-token = { path = "../../contracts/tokenomics/xastro_token" } cosmwasm-schema = "1.2.5" diff --git a/packages/astroport_mocks/src/generator.rs b/packages/astroport_mocks/src/generator.rs deleted file mode 100644 index 115ca8c02..000000000 --- a/packages/astroport_mocks/src/generator.rs +++ /dev/null @@ -1,280 +0,0 @@ -use astroport::{ - asset::AssetInfo, - factory::ExecuteMsg as FactoryExecuteMsg, - generator::{Config, ExecuteMsg, InstantiateMsg, PendingTokenResponse, QueryMsg}, - token::ExecuteMsg as Cw20ExecuteMsg, - vesting::{ - Cw20HookMsg as VestingCw20HookMsg, VestingAccount, VestingSchedule, VestingSchedulePoint, - }, -}; -use cosmwasm_std::{to_json_binary, Addr, Api, CustomMsg, CustomQuery, Storage, Uint128}; -use cw_multi_test::{ - Bank, ContractWrapper, Distribution, Executor, Gov, Ibc, Module, Staking, Stargate, -}; -use serde::de::DeserializeOwned; - -use crate::{ - astroport_address, - factory::{MockFactory, MockFactoryBuilder}, - MockToken, MockTokenBuilder, MockVestingBuilder, WKApp, ASTROPORT, -}; - -pub fn store_code(app: &WKApp) -> u64 -where - B: Bank, - A: Api, - S: Storage, - C: Module, - X: Staking, - D: Distribution, - I: Ibc, - G: Gov, - T: Stargate, - C::ExecT: CustomMsg + DeserializeOwned + 'static, - C::QueryT: CustomQuery + DeserializeOwned + 'static, -{ - use astroport_generator as cnt; - let contract = Box::new( - ContractWrapper::new_with_empty( - cnt::contract::execute, - cnt::contract::instantiate, - cnt::contract::query, - ) - .with_reply_empty(cnt::contract::reply), - ); - - app.borrow_mut().store_code(contract) -} - -pub struct MockGeneratorBuilder { - pub app: WKApp, -} - -impl MockGeneratorBuilder -where - B: Bank, - A: Api, - S: Storage, - C: Module, - X: Staking, - D: Distribution, - I: Ibc, - G: Gov, - T: Stargate, - C::ExecT: CustomMsg + DeserializeOwned + 'static, - C::QueryT: CustomQuery + DeserializeOwned + 'static, -{ - pub fn new(app: &WKApp) -> Self { - Self { app: app.clone() } - } - pub fn instantiate(self) -> MockGenerator { - let code_id = store_code(&self.app); - let astroport = astroport_address(); - - let factory = MockFactoryBuilder::new(&self.app).instantiate(); - let astro_token = MockTokenBuilder::new(&self.app, "ASTRO").instantiate(); - let astro_token_info = astro_token.asset_info(); - let vesting = MockVestingBuilder::new(&self.app) - .with_astro_token(&astro_token_info) - .instantiate(); - - let start_block = self.app.borrow().block_info().height; - let whitelist_code_id = factory.whitelist_code_id(); - let address = self - .app - .borrow_mut() - .instantiate_contract( - code_id, - astroport.clone(), - &InstantiateMsg { - owner: ASTROPORT.to_owned(), - factory: factory.address.to_string(), - guardian: None, - astro_token: astro_token_info, - start_block: start_block.into(), - voting_escrow: None, - tokens_per_block: Uint128::new(1_000_000), - vesting_contract: vesting.address.to_string(), - generator_controller: None, - voting_escrow_delegation: None, - whitelist_code_id, - }, - &[], - "Astroport Generator", - Some(ASTROPORT.to_owned()), - ) - .unwrap(); - - self.app - .borrow_mut() - .execute_contract( - astroport.clone(), - factory.address, - &FactoryExecuteMsg::UpdateConfig { - fee_address: None, - token_code_id: None, - generator_address: Some(address.to_string()), - whitelist_code_id: None, - coin_registry_address: None, - }, - &[], - ) - .unwrap(); - - astro_token.mint(&astroport, Uint128::new(1_000_000_000_000)); - - let time = self.app.borrow().block_info().time.seconds(); - self.app - .borrow_mut() - .execute_contract( - astroport.clone(), - astro_token.address, - &Cw20ExecuteMsg::Send { - contract: vesting.address.to_string(), - amount: Uint128::new(1_000_000_000_000), - msg: to_json_binary(&VestingCw20HookMsg::RegisterVestingAccounts { - vesting_accounts: vec![VestingAccount { - address: address.to_string(), - schedules: vec![VestingSchedule { - start_point: VestingSchedulePoint { - time, - amount: Uint128::new(1_000_000_000_000), - }, - end_point: None, - }], - }], - }) - .unwrap(), - }, - &[], - ) - .unwrap(); - - self.app - .borrow_mut() - .execute_contract( - astroport, - address.clone(), - &ExecuteMsg::UpdateConfig { - vesting_contract: Some(vesting.address.to_string()), - generator_controller: None, - guardian: None, - voting_escrow_delegation: None, - voting_escrow: None, - checkpoint_generator_limit: None, - }, - &[], - ) - .unwrap(); - - MockGenerator { - app: self.app, - address, - } - } -} - -pub struct MockGenerator { - pub app: WKApp, - pub address: Addr, -} - -impl MockGenerator -where - B: Bank, - A: Api, - S: Storage, - C: Module, - X: Staking, - D: Distribution, - I: Ibc, - G: Gov, - T: Stargate, - C::ExecT: CustomMsg + DeserializeOwned + 'static, - C::QueryT: CustomQuery + DeserializeOwned + 'static, -{ - pub fn factory(&self) -> MockFactory { - let res: Config = self - .app - .borrow() - .wrap() - .query_wasm_smart(&self.address, &QueryMsg::Config {}) - .unwrap(); - - MockFactory { - app: self.app.clone(), - address: res.factory, - } - } - pub fn astro_token_info(&self) -> AssetInfo { - let res: Config = self - .app - .borrow() - .wrap() - .query_wasm_smart(self.address.clone(), &QueryMsg::Config {}) - .unwrap(); - - res.astro_token - } - - pub fn query_deposit( - &self, - lp_token: &MockToken, - user: &Addr, - ) -> Uint128 { - self.app - .borrow() - .wrap() - .query_wasm_smart( - self.address.to_string(), - &QueryMsg::Deposit { - lp_token: lp_token.address.to_string(), - user: user.into(), - }, - ) - .unwrap() - } - - pub fn setup_pools(&mut self, pools: &[(String, Uint128)]) { - self.app - .borrow_mut() - .execute_contract( - astroport_address(), - self.address.clone(), - &ExecuteMsg::SetupPools { - pools: pools.to_vec(), - }, - &[], - ) - .unwrap(); - } - - pub fn set_tokens_per_block(&mut self, amount: Uint128) { - self.app - .borrow_mut() - .execute_contract( - astroport_address(), - self.address.clone(), - &ExecuteMsg::SetTokensPerBlock { amount }, - &[], - ) - .unwrap(); - } - - pub fn pending_token(&self, lp_token: &Addr, user: &Addr) -> PendingTokenResponse { - let res: PendingTokenResponse = self - .app - .borrow() - .wrap() - .query_wasm_smart( - self.address.clone(), - &QueryMsg::PendingToken { - lp_token: lp_token.into(), - user: user.into(), - }, - ) - .unwrap(); - - res - } -} diff --git a/packages/astroport_mocks/src/lib.rs b/packages/astroport_mocks/src/lib.rs index b81b562a5..209291772 100644 --- a/packages/astroport_mocks/src/lib.rs +++ b/packages/astroport_mocks/src/lib.rs @@ -9,7 +9,6 @@ use cw_multi_test::{App, Module, WasmKeeper}; pub use { coin_registry::{MockCoinRegistry, MockCoinRegistryBuilder}, factory::{MockFactory, MockFactoryBuilder}, - generator::{MockGenerator, MockGeneratorBuilder}, pair::{MockXykPair, MockXykPairBuilder}, pair_concentrated::{MockConcentratedPair, MockConcentratedPairBuilder}, pair_stable::{MockStablePair, MockStablePairBuilder}, @@ -20,11 +19,9 @@ pub use { pub mod coin_registry; pub mod factory; -pub mod generator; pub mod pair; pub mod pair_concentrated; pub mod pair_stable; -pub mod shared_multisig; pub mod token; pub mod vesting; pub mod whitelist; diff --git a/packages/astroport_mocks/src/shared_multisig.rs b/packages/astroport_mocks/src/shared_multisig.rs deleted file mode 100644 index 7882cf130..000000000 --- a/packages/astroport_mocks/src/shared_multisig.rs +++ /dev/null @@ -1,444 +0,0 @@ -use anyhow::Result as AnyResult; -use cw_utils::Duration; - -use crate::{astroport_address, WKApp, ASTROPORT}; -use astroport::asset::{Asset, AssetInfo}; -use astroport::pair::ExecuteMsg as PairExecuteMsg; -use astroport::shared_multisig::{ - ConfigResponse, ExecuteMsg, InstantiateMsg, PoolType, ProvideParams, QueryMsg, -}; - -use cosmwasm_std::{ - Addr, Api, Coin, CosmosMsg, CustomMsg, CustomQuery, Decimal, StdResult, Storage, Uint128, -}; -use cw20::{BalanceResponse, Cw20QueryMsg}; -use cw3::{ProposalResponse, Vote, VoteListResponse, VoteResponse}; -use cw_multi_test::{ - AppResponse, Bank, ContractWrapper, Distribution, Executor, Gov, Ibc, Module, Staking, Stargate, -}; -use serde::de::DeserializeOwned; - -pub fn store_code(app: &WKApp) -> u64 -where - B: Bank, - A: Api, - S: Storage, - C: Module, - X: Staking, - D: Distribution, - I: Ibc, - G: Gov, - T: Stargate, - C::ExecT: CustomMsg + DeserializeOwned + 'static, - C::QueryT: CustomQuery + DeserializeOwned + 'static, -{ - let contract = Box::new(ContractWrapper::new_with_empty( - astroport_shared_multisig::contract::execute, - astroport_shared_multisig::contract::instantiate, - astroport_shared_multisig::contract::query, - )); - - app.borrow_mut().store_code(contract) -} - -pub struct MockSharedMultisigBuilder { - pub app: WKApp, -} - -impl MockSharedMultisigBuilder -where - B: Bank, - A: Api, - S: Storage, - C: Module, - X: Staking, - D: Distribution, - I: Ibc, - G: Gov, - T: Stargate, - C::ExecT: CustomMsg + DeserializeOwned + 'static, - C::QueryT: CustomQuery + DeserializeOwned + 'static, -{ - pub fn new(app: &WKApp) -> Self { - Self { app: app.clone() } - } - - pub fn instantiate( - self, - factory_addr: &Addr, - generator_addr: Option, - target_pool: Option, - ) -> MockSharedMultisig { - let code_id = store_code(&self.app); - let astroport = astroport_address(); - - let address = self - .app - .borrow_mut() - .instantiate_contract( - code_id, - astroport, - &InstantiateMsg { - factory_addr: factory_addr.to_string(), - generator_addr: generator_addr - .unwrap_or(Addr::unchecked("generator_addr")) - .to_string(), - max_voting_period: Duration::Height(3), - manager1: "manager1".to_string(), - manager2: "manager2".to_string(), - denom1: "untrn".to_string(), - denom2: "ibc/astro".to_string(), - target_pool, - }, - &[], - "Astroport Shared Multisig", - Some(ASTROPORT.to_owned()), - ) - .unwrap(); - - MockSharedMultisig { - app: self.app, - address, - } - } -} - -pub struct MockSharedMultisig { - pub app: WKApp, - pub address: Addr, -} - -impl MockSharedMultisig -where - B: Bank, - A: Api, - S: Storage, - C: Module, - X: Staking, - D: Distribution, - I: Ibc, - G: Gov, - T: Stargate, - C::ExecT: CustomMsg + DeserializeOwned + 'static, - C::QueryT: CustomQuery + DeserializeOwned + 'static, -{ - pub fn propose(&self, sender: &Addr, msgs: Vec) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::Propose { - title: "Create a new proposal".to_string(), - description: "Create a new proposal".to_string(), - msgs, - latest: None, - }, - &[], - ) - } - - pub fn vote(&self, sender: &Addr, proposal_id: u64, vote: Vote) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::Vote { proposal_id, vote }, - &[], - ) - } - - pub fn execute(&self, sender: &Addr, proposal_id: u64) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::Execute { proposal_id }, - &[], - ) - } - - pub fn transfer( - &self, - sender: &Addr, - asset: Asset, - recipient: Option, - ) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::Transfer { asset, recipient }, - &[], - ) - } - - pub fn setup_max_voting_period( - &self, - sender: &Addr, - max_voting_period: Duration, - ) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::SetupMaxVotingPeriod { max_voting_period }, - &[], - ) - } - - pub fn start_rage_quit(&self, sender: &Addr) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::StartRageQuit {}, - &[], - ) - } - - pub fn complete_target_pool_migration(&self, sender: &Addr) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::CompleteTargetPoolMigration {}, - &[], - ) - } - - pub fn setup_pools( - &self, - sender: &Addr, - target_pool: Option, - migration_pool: Option, - ) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::SetupPools { - target_pool, - migration_pool, - }, - &[], - ) - } - - pub fn provide( - &self, - sender: &Addr, - pool_type: PoolType, - assets: Option>, - slippage_tolerance: Option, - auto_stake: Option, - receiver: Option, - ) -> AnyResult { - let assets = if let Some(assets) = assets { - assets - } else { - vec![ - Asset { - info: AssetInfo::NativeToken { - denom: "untrn".to_string(), - }, - amount: Uint128::new(100_000_000), - }, - Asset { - info: AssetInfo::NativeToken { - denom: "ibc/astro".to_string(), - }, - amount: Uint128::new(100_000_000), - }, - ] - }; - - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::ProvideLiquidity { - pool_type, - assets, - slippage_tolerance, - auto_stake, - receiver, - }, - &[], - ) - } - - pub fn withdraw( - &self, - sender: &Addr, - withdraw_amount: Option, - provide_params: Option, - ) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::WithdrawTargetPoolLP { - withdraw_amount, - provide_params, - }, - &[], - ) - } - - pub fn withdraw_ragequit( - &self, - sender: &Addr, - pool_type: PoolType, - withdraw_amount: Option, - ) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::WithdrawRageQuitLP { - pool_type, - withdraw_amount, - }, - &[], - ) - } - - pub fn deposit_generator( - &self, - sender: &Addr, - amount: Option, - ) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::DepositGenerator { amount }, - &[], - ) - } - - pub fn withdraw_generator( - &self, - sender: &Addr, - amount: Option, - ) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::WithdrawGenerator { amount }, - &[], - ) - } - - pub fn claim_generator_rewards(&self, sender: &Addr) -> AnyResult { - self.app.borrow_mut().execute_contract( - sender.clone(), - self.address.clone(), - &ExecuteMsg::ClaimGeneratorRewards {}, - &[], - ) - } - - #[allow(clippy::too_many_arguments)] - pub fn swap( - &self, - sender: &Addr, - pair: &Addr, - denom: &String, - amount: u64, - ask_asset_info: Option, - belief_price: Option, - max_spread: Option, - to: Option, - ) -> AnyResult { - let msg = PairExecuteMsg::Swap { - offer_asset: Asset { - info: AssetInfo::NativeToken { - denom: denom.clone(), - }, - amount: Uint128::from(amount), - }, - ask_asset_info, - belief_price, - max_spread, - to, - }; - - let send_funds = vec![Coin { - denom: denom.to_owned(), - amount: Uint128::from(amount), - }]; - - self.app - .borrow_mut() - .execute_contract(sender.clone(), pair.clone(), &msg, &send_funds) - } - - pub fn query_config(&self) -> StdResult { - self.app - .borrow() - .wrap() - .query_wasm_smart(self.address.clone(), &QueryMsg::Config {}) - } - - pub fn query_vote(&self, proposal_id: u64, voter: &Addr) -> StdResult { - self.app.borrow().wrap().query_wasm_smart( - self.address.clone(), - &QueryMsg::Vote { - proposal_id, - voter: voter.to_string(), - }, - ) - } - - pub fn query_votes(&self, proposal_id: u64) -> StdResult { - self.app - .borrow() - .wrap() - .query_wasm_smart(self.address.clone(), &QueryMsg::ListVotes { proposal_id }) - } - - pub fn query_proposal(&self, proposal_id: u64) -> StdResult { - self.app - .borrow() - .wrap() - .query_wasm_smart(self.address.clone(), &QueryMsg::Proposal { proposal_id }) - } - - pub fn query_native_balance(&self, account: Option<&str>, denom: &str) -> StdResult { - self.app - .borrow() - .wrap() - .query_balance(account.unwrap_or(self.address.as_str()), denom.to_owned()) - } - - pub fn query_cw20_balance( - &self, - lp_token: &Addr, - account: Option, - ) -> StdResult { - self.app - .borrow() - .wrap() - .query_wasm_smart::( - lp_token.as_str(), - &Cw20QueryMsg::Balance { - address: account.unwrap_or(self.address.clone()).to_string(), - }, - ) - } - - pub fn send_tokens( - &self, - owner: &Addr, - denoms: Option>, - recipient: Option, - ) -> AnyResult { - self.app.borrow_mut().send_tokens( - owner.clone(), - recipient.unwrap_or(self.address.clone()), - &denoms.unwrap_or(vec![ - Coin { - denom: String::from("untrn"), - amount: Uint128::new(900_000_000u128), - }, - Coin { - denom: String::from("ibc/astro"), - amount: Uint128::new(900_000_000u128), - }, - Coin { - denom: String::from("usdt"), - amount: Uint128::new(900_000_000u128), - }, - ]), - ) - } -} diff --git a/packages/astroport_mocks/src/token.rs b/packages/astroport_mocks/src/token.rs index 56c5cf2cf..c8cae66d0 100644 --- a/packages/astroport_mocks/src/token.rs +++ b/packages/astroport_mocks/src/token.rs @@ -24,7 +24,7 @@ where C::ExecT: CustomMsg + DeserializeOwned + 'static, C::QueryT: CustomQuery + DeserializeOwned + 'static, { - use astroport_token as cnt; + use cw20_base as cnt; let contract = Box::new(ContractWrapper::new_with_empty( cnt::contract::execute, cnt::contract::instantiate, diff --git a/packages/astroport_pcl_common/Cargo.toml b/packages/astroport_pcl_common/Cargo.toml index 353811458..1afc34771 100644 --- a/packages/astroport_pcl_common/Cargo.toml +++ b/packages/astroport_pcl_common/Cargo.toml @@ -10,14 +10,14 @@ homepage = "https://astroport.fi" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -cosmwasm-std = "1" -cosmwasm-schema = "1" -cw-storage-plus = "1" +cosmwasm-std.workspace = true +cosmwasm-schema.workspace = true +cw-storage-plus.workspace = true cw20 = "1" -thiserror = "1" -astroport = { path = "../astroport", version = "3.7" } +thiserror.workspace = true +astroport = { path = "../astroport", version = "4" } astroport-factory = { path = "../../contracts/factory", version = "1.5", features = ["library"] } -itertools = "0.11" +itertools.workspace = true [dev-dependencies] anyhow = "1" diff --git a/packages/astroport_pcl_common/src/utils.rs b/packages/astroport_pcl_common/src/utils.rs index ce492bdb9..62d5b0dd8 100644 --- a/packages/astroport_pcl_common/src/utils.rs +++ b/packages/astroport_pcl_common/src/utils.rs @@ -103,9 +103,9 @@ where &Cw20ExecuteMsg::Send { contract: generator.to_string(), amount, - msg: to_json_binary(&astroport::generator::Cw20HookMsg::DepositFor( - recipient.to_string(), - ))?, + msg: to_json_binary(&astroport::incentives::Cw20Msg::Deposit { + recipient: Some(recipient.to_string()), + })?, }, vec![], )? diff --git a/packages/circular_buffer/Cargo.toml b/packages/circular_buffer/Cargo.toml index e335b45da..208480b70 100644 --- a/packages/circular_buffer/Cargo.toml +++ b/packages/circular_buffer/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/astroport-fi/astroport" homepage = "https://astroport.fi" [dependencies] -cw-storage-plus = "0.15" -cosmwasm-schema = "1.1" -cosmwasm-std = "1.1" -thiserror = "1.0" \ No newline at end of file +cw-storage-plus.workspace = true +cosmwasm-schema.workspace = true +cosmwasm-std.workspace = true +thiserror.workspace = true \ No newline at end of file diff --git a/packages/pair_bonded/Cargo.toml b/packages/pair_bonded/Cargo.toml deleted file mode 100644 index d1492abbc..000000000 --- a/packages/pair_bonded/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -[package] -name = "astroport-pair-bonded" -version = "1.0.1" -authors = ["Astroport"] -edition = "2021" -description = "The Astroport pair-bonded package" -license = "MIT" - -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -# for quicker tests, cargo test --lib -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] -library = [] - -[dependencies] -astroport = { path = "../astroport" } -cw2 = { version = "0.15" } -cw20 = { version = "0.15" } -cosmwasm-std = { version = "1.1" } -cw-storage-plus = "0.15" -thiserror = { version = "1.0" } - diff --git a/packages/pair_bonded/README.md b/packages/pair_bonded/README.md deleted file mode 100644 index 104720b52..000000000 --- a/packages/pair_bonded/README.md +++ /dev/null @@ -1,172 +0,0 @@ -# Astroport Pair Bonded Package - -Pair bonded package gives a trait that allows implementation pairs with bonded assets(e.g. ASTRO-xASTRO, MARS-xMARS, and other tokens that are correlated but have an increasing exchange rate compared to the other token). -Use [Pair ASTRO-xASTRO](/contracts/pair_astro_xastro/) as example of template implementation. - -## InstantiateMsg - -Initialize the bonded pair contract. - -```json -{ - "token_code_id": 123, - "factory_addr": "terra...", - "asset_infos": [ - { - "token": { - "contract_addr": "terra..." - } - }, - { - "token": { - "contract_addr": "terra..." - } - } - ], - "init_params": "" -} -``` - -## ExecuteMsg - -### `receive` - -Allows to swap assets via 3rd party contract. Liquidity providing and withdrawing is not supported in the template. - -```json -{ - "receive": { - "sender": "terra...", - "amount": "123", - "msg": "" - } -} -``` - -### `provide_liquidity` - -Liquidity providing is not supported in the template by default. - -### `withdraw_liquidity` - -Liquidity withdrawing is not supported in the template by default. - -### `swap` - -Swap operation is not implemented in the template by default. You should - -```json - { - "swap": { - "offer_asset": { - "info": { - "token": { - "contract_addr": "terra..." - } - }, - "amount": "123" - }, - "belief_price": "123", - "max_spread": "123", - "to": "terra..." - } - } -``` - -### `update_config` - -Update config is not supported in the template by default. - -## QueryMsg - -All query messages are described below. A custom struct is defined for each query response. - -### `pair` - -Retrieve a pair's configuration (type, assets traded in it etc) - -```json -{ - "pair": {} -} -``` - -### `pool` - -Returns the amount of tokens in the pool for. - -```json -{ - "pool": {} -} -``` - -### `config` - -Get the pair contract configuration. - -```json -{ - "config": {} -} -``` - -### `share` - -Return the amount of assets someone would get from the pool if they were to burn a specific amount of LP tokens. - -```json -{ - "share": { - "amount": "123" - } -} -``` - -### `simulation` - -Simulates a swap (should be implemented in the contract). - -```json -{ - "simulation": { - "offer_asset": { - "info": { - "native_token": { - "denom": "uusd" - } - }, - "amount": "1000000" - } - } -} -``` - -### `reverse_simulation` - -Reverse simulates a swap (specifies the ask instead of the offer) and returns the offer amount (should be implemented in the contract). - -```json -{ - "reverse_simulation": { - "ask_asset": { - "info": { - "token": { - "contract_addr": "terra..." - } - }, - "amount": "1000000" - } - } -} -``` - -### `cumulative_prices` - -Returns the cumulative prices for the assets in the pair. - -```json -{ - "cumulative_prices": {} -} -``` diff --git a/packages/pair_bonded/src/base.rs b/packages/pair_bonded/src/base.rs deleted file mode 100644 index 2eb88c8a1..000000000 --- a/packages/pair_bonded/src/base.rs +++ /dev/null @@ -1,406 +0,0 @@ -use crate::error::ContractError; -use crate::state::CONFIG; -use astroport::asset::{addr_opt_validate, Asset, AssetInfo, PairInfo}; -use astroport::factory::PairType; -use astroport::pair::{ - ConfigResponse, CumulativePricesResponse, Cw20HookMsg, InstantiateMsg, PoolResponse, - ReverseSimulationResponse, SimulationResponse, -}; -use astroport::pair_bonded::{Config, ExecuteMsg, QueryMsg}; -use astroport::querier::query_factory_config; -use cosmwasm_std::{ - from_json, to_json_binary, Addr, Binary, Decimal, Deps, DepsMut, Env, MessageInfo, Response, - StdResult, Uint128, -}; -use cw2::set_contract_version; -use cw20::Cw20ReceiveMsg; - -pub trait PairBonded<'a> { - /// Contract name that is used for migration. - const CONTRACT_NAME: &'a str; - /// Contract version that is used for migration. - const CONTRACT_VERSION: &'a str = env!("CARGO_PKG_VERSION"); - - /// Creates a new contract with the specified parameters in [`InstantiateMsg`]. - fn instantiate( - &self, - deps: DepsMut, - env: Env, - _info: MessageInfo, - msg: InstantiateMsg, - ) -> Result { - msg.asset_infos[0].check(deps.api)?; - msg.asset_infos[1].check(deps.api)?; - - if msg.asset_infos[0] == msg.asset_infos[1] { - return Err(ContractError::DoublingAssets {}); - } - - set_contract_version(deps.storage, Self::CONTRACT_NAME, Self::CONTRACT_VERSION)?; - - let config = Config { - pair_info: PairInfo { - contract_addr: env.contract.address, - liquidity_token: Addr::unchecked(""), - asset_infos: msg.asset_infos.clone(), - pair_type: PairType::Custom(String::from("Bonded")), - }, - factory_addr: deps.api.addr_validate(&msg.factory_addr)?, - }; - - CONFIG.save(deps.storage, &config)?; - - Ok(Response::new()) - } - - /// Exposes all the execute functions available in the contract. - /// - /// ## Variants - /// * **ExecuteMsg::UpdateConfig { params: Binary }** Not supported. - /// - /// * **ExecuteMsg::Receive(msg)** Receives a message of type [`Cw20ReceiveMsg`] and processes - /// it depending on the received template. - /// - /// * **ExecuteMsg::ProvideLiquidity { - /// assets, - /// slippage_tolerance, - /// auto_stake, - /// receiver, - /// }** Not supported. - /// - /// * **ExecuteMsg::Swap { - /// offer_asset, - /// belief_price, - /// max_spread, - /// to, - /// }** Performs an swap using the specified parameters. (It needs to be implemented) - /// - /// * **ExecuteMsg::AssertAndSend { - /// offer_asset, - /// belief_price, - /// max_spread, - /// ask_asset_info, - /// receiver, - /// sender, - /// }** (internal) Is used as a sub-execution to send received tokens to the receiver and check the spread/price. - fn execute( - &self, - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, - ) -> Result { - match msg { - ExecuteMsg::UpdateConfig { .. } => Err(ContractError::NotSupported {}), - ExecuteMsg::Receive(msg) => self.receive_cw20(deps, env, info, msg), - ExecuteMsg::ProvideLiquidity { .. } => Err(ContractError::NotSupported {}), - ExecuteMsg::Swap { - offer_asset, - belief_price, - max_spread, - to, - } => self.execute_swap(deps, env, info, offer_asset, belief_price, max_spread, to), - ExecuteMsg::AssertAndSend { - offer_asset, - ask_asset_info, - receiver, - sender, - } => self.assert_receive_and_send( - deps, - env, - info, - sender, - offer_asset, - ask_asset_info, - receiver, - ), - } - } - - /// Exposes all the queries available in the contract. - /// - /// ## Queries - /// * **QueryMsg::Pair {}** Returns information about the pair in an object of type [`PairInfo`]. - /// - /// * **QueryMsg::Pool {}** Returns information about the amount of assets in the pair contract as - /// well as the amount of LP tokens issued using an object of type [`PoolResponse`]. - /// - /// * **QueryMsg::Share { amount }** Returns the amount of assets that could be withdrawn from the pool - /// using a specific amount of LP tokens. The result is returned in a vector that contains objects of type [`Asset`]. - /// - /// * **QueryMsg::Simulation { offer_asset }** Returns the result of a swap simulation using a [`SimulationResponse`] object. - /// - /// * **QueryMsg::ReverseSimulation { ask_asset }** Returns the result of a reverse swap simulation using - /// a [`ReverseSimulationResponse`] object. - /// - /// * **QueryMsg::CumulativePrices {}** Returns information about cumulative prices for the assets in the - /// pool using a [`CumulativePricesResponse`] object. - /// - /// * **QueryMsg::Config {}** Returns the configuration for the pair contract using a [`ConfigResponse`] object. - fn query(&self, deps: Deps, env: Env, msg: QueryMsg) -> StdResult { - match msg { - QueryMsg::Pair {} => to_json_binary(&self.query_pair_info(deps)?), - QueryMsg::Pool {} => to_json_binary(&self.query_pool(deps)?), - QueryMsg::Share { .. } => to_json_binary(&Vec::::new()), - QueryMsg::Simulation { offer_asset } => { - to_json_binary(&self.query_simulation(deps, env, offer_asset)?) - } - QueryMsg::ReverseSimulation { ask_asset } => { - to_json_binary(&self.query_reverse_simulation(deps, env, ask_asset)?) - } - QueryMsg::CumulativePrices {} => { - to_json_binary(&self.query_cumulative_prices(deps, env)?) - } - QueryMsg::Config {} => to_json_binary(&self.query_config(deps)?), - } - } - - /// Receives a message of type [`Cw20ReceiveMsg`] and processes it depending on the received template. - /// - /// * **cw20_msg** CW20 receive message to process. - fn receive_cw20( - &self, - deps: DepsMut, - env: Env, - info: MessageInfo, - cw20_msg: Cw20ReceiveMsg, - ) -> Result { - match from_json(&cw20_msg.msg)? { - Cw20HookMsg::Swap { - belief_price, - max_spread, - to, - .. - } => { - // Only asset contract can execute this message - let mut authorized = false; - let config = CONFIG.load(deps.storage)?; - - for pool in config.pair_info.asset_infos { - if let AssetInfo::Token { contract_addr, .. } = &pool { - if contract_addr == info.sender { - authorized = true; - } - } - } - - if !authorized { - return Err(ContractError::Unauthorized {}); - } - - let to_addr = addr_opt_validate(deps.api, &to)?; - let contract_addr = info.sender.clone(); - let sender = deps.api.addr_validate(&cw20_msg.sender)?; - self.swap( - deps, - env, - info, - sender, - Asset { - info: AssetInfo::Token { contract_addr }, - amount: cw20_msg.amount, - }, - belief_price, - max_spread, - to_addr, - ) - } - Cw20HookMsg::WithdrawLiquidity { .. } => Err(ContractError::NotSupported {}), - } - } - - /// Performs an swap operation with the specified parameters. The trader must approve the - /// pool contract to transfer offer assets from their wallet. - /// - /// * **sender** sender of the swap operation. - /// - /// * **offer_asset** proposed asset for swapping. - /// - /// * **belief_price** used to calculate the maximum swap spread. - /// - /// * **max_spread** sets the maximum spread of the swap operation. - /// - /// * **to** sets the recipient of the swap operation. - /// - /// NOTE - the address that wants to swap should approve the pair contract to pull the offer token. - #[allow(clippy::too_many_arguments)] - fn execute_swap( - &self, - deps: DepsMut, - env: Env, - info: MessageInfo, - offer_asset: Asset, - belief_price: Option, - max_spread: Option, - to: Option, - ) -> Result { - offer_asset.info.check(deps.api)?; - if !offer_asset.is_native_token() { - return Err(ContractError::Cw20DirectSwap {}); - } - - let to_addr = addr_opt_validate(deps.api, &to)?; - - self.swap( - deps, - env, - info.clone(), - info.sender, - offer_asset, - belief_price, - max_spread, - to_addr, - ) - } - - /// Performs a swap with the specified parameters. - /// ### Must be implemented - #[allow(clippy::too_many_arguments)] - fn swap( - &self, - deps: DepsMut, - env: Env, - info: MessageInfo, - sender: Addr, - offer_asset: Asset, - belief_price: Option, - max_spread: Option, - to: Option, - ) -> Result; - - /// Returns information about the pair contract in an object of type [`PairInfo`]. - fn query_pair_info(&self, deps: Deps) -> StdResult { - let config = CONFIG.load(deps.storage)?; - Ok(config.pair_info) - } - - /// Returns the amounts of assets in the pair contract in an object of type [`PoolResponse`]. - fn query_pool(&self, deps: Deps) -> StdResult { - let config = CONFIG.load(deps.storage)?; - let (assets, total_share) = self.pool_info(&config)?; - - let resp = PoolResponse { - assets, - total_share, - }; - - Ok(resp) - } - - /// Returns information about a swap simulation in a [`SimulationResponse`] object. - fn query_simulation( - &self, - deps: Deps, - env: Env, - offer_asset: Asset, - ) -> StdResult; - - /// Returns information about a reverse swap simulation in a [`ReverseSimulationResponse`] object. - /// ### Must be implemented - fn query_reverse_simulation( - &self, - deps: Deps, - env: Env, - ask_asset: Asset, - ) -> StdResult; - - /// Returns information about cumulative prices for the assets in the pool using a [`CumulativePricesResponse`] object. - fn query_cumulative_prices( - &self, - deps: Deps, - _env: Env, - ) -> StdResult { - let config = CONFIG.load(deps.storage)?; - let (assets, total_share) = self.pool_info(&config)?; - - let resp = CumulativePricesResponse { - assets, - total_share, - cumulative_prices: vec![], - }; - - Ok(resp) - } - - /// Returns the pair contract configuration in a [`ConfigResponse`] object. - fn query_config(&self, deps: Deps) -> StdResult { - let config = CONFIG.load(deps.storage)?; - - let factory_config = query_factory_config(&deps.querier, &config.factory_addr)?; - - Ok(ConfigResponse { - block_time_last: 0u64, - params: None, - owner: factory_config.owner, - factory_addr: config.factory_addr, - }) - } - - /// Returns the total amount of assets in the pool. - fn pool_info(&self, config: &Config) -> StdResult<(Vec, Uint128)> { - let pools = vec![ - Asset { - amount: Uint128::zero(), - info: config.pair_info.asset_infos[0].clone(), - }, - Asset { - amount: Uint128::zero(), - info: config.pair_info.asset_infos[1].clone(), - }, - ]; - - Ok((pools, Uint128::zero())) - } - - /// Performs an swap operation with the specified parameters. The trader must approve the - /// pool contract to transfer offer assets from their wallet. - /// - /// * **sender** sender of the swap operation. - /// - /// * **offer_asset** proposed asset for swapping. - /// - /// * **ask_asset_info** ask asset info. - /// - /// * **receiver** receiver of the swap operation. - /// - /// * **belief_price** used to calculate the maximum swap spread. - /// - /// * **max_spread** sets the maximum spread of the swap operation. - #[allow(clippy::too_many_arguments)] - fn assert_receive_and_send( - &self, - deps: DepsMut, - env: Env, - info: MessageInfo, - sender: Addr, - offer_asset: Asset, - ask_asset_info: AssetInfo, - receiver: Addr, - ) -> Result { - if env.contract.address != info.sender { - // Only allowed to be sent by the contract itself - return Err(ContractError::Unauthorized {}); - } - - let offer_amount = offer_asset.amount; - let return_amount = ask_asset_info.query_pool(&deps.querier, env.contract.address)?; - - let return_asset = Asset { - info: ask_asset_info.clone(), - amount: return_amount, - }; - - Ok(Response::new() - .add_message(return_asset.into_msg(receiver.clone())?) - .add_attribute("action", "swap") - .add_attribute("sender", sender.to_string()) - .add_attribute("receiver", receiver.to_string()) - .add_attribute("offer_asset", offer_asset.info.to_string()) - .add_attribute("ask_asset", ask_asset_info.to_string()) - .add_attribute("offer_amount", offer_amount.to_string()) - .add_attribute("return_amount", return_amount.to_string()) - .add_attribute("spread_amount", "0") - .add_attribute("commission_amount", "0") - .add_attribute("maker_fee_amount", "0")) - } -} diff --git a/packages/pair_bonded/src/error.rs b/packages/pair_bonded/src/error.rs deleted file mode 100644 index 47c9031ca..000000000 --- a/packages/pair_bonded/src/error.rs +++ /dev/null @@ -1,42 +0,0 @@ -use cosmwasm_std::{OverflowError, StdError}; -use thiserror::Error; - -/// This enum describes stableswap pair contract errors -#[derive(Error, Debug, PartialEq)] -pub enum ContractError { - #[error("{0}")] - Std(#[from] StdError), - - #[error("Unauthorized")] - Unauthorized {}, - - #[error("CW20 tokens can be swapped via Cw20::Send message only")] - Cw20DirectSwap {}, - - #[error("Doubling assets in asset infos")] - DoublingAssets {}, - - #[error("Provided spread amount exceeds allowed limit")] - AllowedSpreadAssertion {}, - - #[error("Operation exceeds max spread limit")] - MaxSpreadAssertion {}, - - #[error("Native token balance mismatch between the argument and the transferred")] - AssetMismatch {}, - - #[error("You need to provide init params")] - InitParamsNotFound {}, - - #[error("Operation is not supported for this pool.")] - NotSupported {}, - - #[error("Failed to migrate the contract")] - MigrationError {}, -} - -impl From for ContractError { - fn from(o: OverflowError) -> Self { - StdError::from(o).into() - } -} diff --git a/packages/pair_bonded/src/lib.rs b/packages/pair_bonded/src/lib.rs deleted file mode 100644 index 5edfd811d..000000000 --- a/packages/pair_bonded/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod base; -pub mod error; -pub mod state; diff --git a/packages/pair_bonded/src/state.rs b/packages/pair_bonded/src/state.rs deleted file mode 100644 index e5b348db2..000000000 --- a/packages/pair_bonded/src/state.rs +++ /dev/null @@ -1,5 +0,0 @@ -use astroport::pair_bonded::Config; -use cw_storage_plus::Item; - -/// Stores the config struct at the given key -pub const CONFIG: Item = Item::new("config"); diff --git a/templates/generator_proxy_template/.cargo/config b/templates/generator_proxy_template/.cargo/config deleted file mode 100644 index d997475b3..000000000 --- a/templates/generator_proxy_template/.cargo/config +++ /dev/null @@ -1,5 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -unit-test = "test --lib" -schema = "run --example generator_proxy_template_schema" diff --git a/templates/generator_proxy_template/Cargo.toml b/templates/generator_proxy_template/Cargo.toml deleted file mode 100644 index c875c5638..000000000 --- a/templates/generator_proxy_template/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "astroport-generator-proxy-template" -version = "0.0.0" -authors = ["Astroport"] -edition = "2021" - -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] - -[dependencies] -cosmwasm-std = { version = "1.1" } -cw-storage-plus = "0.15" -thiserror = { version = "1.0" } -cw2 = "0.15" -cw20 = "0.15" -astroport = {path = "../../packages/astroport"} -cosmwasm-schema = { version = "1.1" } - diff --git a/templates/generator_proxy_template/README.md b/templates/generator_proxy_template/README.md deleted file mode 100644 index 65d0d7953..000000000 --- a/templates/generator_proxy_template/README.md +++ /dev/null @@ -1,157 +0,0 @@ -# Astroport Generator Proxy Rewards Template - -This generator proxy contract allows an external staking contract to be connected to the Generator. It gives Generator stakers the ability to claim both ASTRO emissions as well as 3rd party tokens at the same time. This is referred to as "dual rewards" in Astroport. - -## Be sure that all the template's TODOs get properly changed! - ---- - -## InstantiateMsg - -Initializes the proxy contract with required addresses (generator, LP token to stake etc). - -```json -{ - "generator_contract_addr": "terra...", - "pair_addr": "terra...", - "lp_token_addr": "terra...", - "reward_contract_addr": "terra...", - "reward_token_addr": "terra..." -} -``` - -## ExecuteMsg - -### `receive` - -CW20 receive msg. - -```json -{ - "receive": { - "sender": "terra...", - "amount": "123", - "msg": "" - } -} -``` - -### `update_rewards` - -Updates 3rd party token proxy rewards and withdraws rewards from the 3rd party staking contract. - -```json -{ - "update_rewards": {} -} -``` - -### `send_rewards` - -Sends accrued token rewards to a specific account. - -```json -{ - "send_rewards": { - "account": "terra...", - "amount": "123" - } -} -``` - -### `withdraw` - -Withdraws LP tokens alongside any outstanding token rewards and sends them to the specified address. - -```json -{ - "withdraw": { - "account": "terra...", - "amount": "123" - } -} -``` - -### `emergency_withdraw` - -Unstake LP tokens without caring about accrued rewards. - -```json -{ - "emergency_withdraw": { - "account": "terra...", - "amount": "123" - } -} -``` - -### `callback` - -Handles callback mesasges. - -One example is for transferring LP tokens after a withdrawal from the 3rd party staking contract. - -```json -{ - "callback": { - "transfer_lp_tokens_after_withdraw": { - "account": "terra...", - "prev_lp_balance": "1234" - } - } -} - -``` -## QueryMsg - -All query messages are described below. A custom struct is defined for each query response. - -### `config` - -Returns the contract's configuration. - -```json -{ - "config": {} -} -``` - -### `deposit` - -Returns the deposited/staked token amount for a specific account. - -```json -{ - "deposit": {} -} -``` - -### `reward` - -Returns the total amount of 3rd party rewards. - -```json -{ - "reward": {} -} -``` - -### `pending_token` - -Returns the total amount of pending rewards for all stakers. - -```json -{ - "pending_token": {} -} -``` - -### `reward_info` - -Returns the reward (3rd party) token contract address. - -```json -{ - "reward_info": {} -} -``` diff --git a/templates/generator_proxy_template/examples/generator_proxy_template_schema.rs b/templates/generator_proxy_template/examples/generator_proxy_template_schema.rs deleted file mode 100644 index d78ab0252..000000000 --- a/templates/generator_proxy_template/examples/generator_proxy_template_schema.rs +++ /dev/null @@ -1,11 +0,0 @@ -use astroport::generator_proxy::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; -use cosmwasm_schema::write_api; - -fn main() { - write_api! { - instantiate: InstantiateMsg, - query: QueryMsg, - execute: ExecuteMsg, - migrate: MigrateMsg - } -} diff --git a/templates/generator_proxy_template/src/contract.rs b/templates/generator_proxy_template/src/contract.rs deleted file mode 100644 index a01e4e2ab..000000000 --- a/templates/generator_proxy_template/src/contract.rs +++ /dev/null @@ -1,365 +0,0 @@ -// Delete this after changing all todo macros -#![allow(unused_variables, unreachable_code, clippy::diverging_sub_expression)] - -use cosmwasm_std::{ - entry_point, from_json, to_json_binary, Addr, Binary, CosmosMsg, Deps, DepsMut, Env, - MessageInfo, Response, StdResult, SubMsg, Uint128, WasmMsg, -}; -use cw20::{BalanceResponse, Cw20ExecuteMsg, Cw20QueryMsg, Cw20ReceiveMsg}; - -use crate::error::ContractError; -use crate::state::{Config, CONFIG}; -use astroport::generator_proxy::{ - CallbackMsg, ConfigResponse, Cw20HookMsg, ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg, -}; -use cw2::set_contract_version; - -/// Contract name that is used for migration. -const CONTRACT_NAME: &str = "astroport-generator-proxy-template"; -/// Contract version that is used for migration. -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); - -/// Creates a new contract with the specified parameters (in [`InstantiateMsg`]). -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - deps: DepsMut, - _env: Env, - _info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - let config = Config { - generator_contract_addr: deps.api.addr_validate(&msg.generator_contract_addr)?, - pair_addr: deps.api.addr_validate(&msg.pair_addr)?, - lp_token_addr: deps.api.addr_validate(&msg.lp_token_addr)?, - reward_contract_addr: deps.api.addr_validate(&msg.reward_contract_addr)?, - reward_token_addr: deps.api.addr_validate(&msg.reward_token_addr)?, - }; - CONFIG.save(deps.storage, &config)?; - - Ok(Response::default()) -} - -/// Exposes execute functions available in the contract. -/// -/// ## Variants -/// * **ExecuteMsg::Receive(msg)** Receives a message of type [`Cw20ReceiveMsg`] and processes -/// it depending on the received template. -/// -/// * **ExecuteMsg::UpdateRewards {}** Withdraw pending 3rd party rewards from the 3rd party staking contract. -/// -/// * **ExecuteMsg::SendRewards { account, amount }** Sends accrued rewards to the recipient. -/// -/// * **ExecuteMsg::Withdraw { account, amount }** Withdraw LP tokens and claim pending rewards. -/// -/// * **ExecuteMsg::EmergencyWithdraw { account, amount }** Withdraw LP tokens without caring about pending rewards. -/// -/// * **ExecuteMsg::Callback(msg)** Handles callbacks described in the [`CallbackMsg`]. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - match msg { - ExecuteMsg::Receive(msg) => receive_cw20(deps, info, msg), - ExecuteMsg::UpdateRewards {} => update_rewards(deps, info), - ExecuteMsg::SendRewards { account, amount } => send_rewards(deps, info, account, amount), - ExecuteMsg::Withdraw { account, amount } => withdraw(deps, env, info, account, amount), - ExecuteMsg::EmergencyWithdraw { account, amount } => { - emergency_withdraw(deps, env, info, account, amount) - } - ExecuteMsg::Callback(msg) => handle_callback(deps, env, info, msg), - } -} - -/// Receives a message of type [`Cw20ReceiveMsg`] and processes it depending on the received template. -/// -/// * **cw20_msg** CW20 message to process. -fn receive_cw20( - deps: DepsMut, - info: MessageInfo, - cw20_msg: Cw20ReceiveMsg, -) -> Result { - let response = Response::new(); - let cfg = CONFIG.load(deps.storage)?; - - if let Ok(Cw20HookMsg::Deposit {}) = from_json(&cw20_msg.msg) { - if cw20_msg.sender != cfg.generator_contract_addr || info.sender != cfg.lp_token_addr { - return Err(ContractError::Unauthorized {}); - } - todo!("Deposit tokens in the end reward contract here"); - } else { - return Err(ContractError::IncorrectCw20HookMessageVariant {}); - } - Ok(response) -} - -/// Withdraw pending rewards. -fn update_rewards(deps: DepsMut, info: MessageInfo) -> Result { - let mut response = Response::new(); - let cfg = CONFIG.load(deps.storage)?; - - if info.sender != cfg.generator_contract_addr { - return Err(ContractError::Unauthorized {}); - }; - - response - .messages - .push(SubMsg::new(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: cfg.reward_contract_addr.to_string(), - funds: vec![], - msg: todo!("Specify a withdraw rewards message that withdraws rewards from the end reward contract here"), - }))); - - Ok(response) -} - -/// Sends rewards to a recipient. -/// -/// * **account** account that receives the rewards. -/// -/// * **amount** amount of rewards to send. -/// -/// ## Executor -/// Only the Generator contract can execute this. -fn send_rewards( - deps: DepsMut, - info: MessageInfo, - account: String, - amount: Uint128, -) -> Result { - deps.api.addr_validate(&account)?; - - let mut response = Response::new(); - let cfg = CONFIG.load(deps.storage)?; - if info.sender != cfg.generator_contract_addr { - return Err(ContractError::Unauthorized {}); - }; - - response - .messages - .push(SubMsg::new(CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: cfg.reward_token_addr.to_string(), - msg: to_json_binary(&Cw20ExecuteMsg::Transfer { - recipient: account, - amount, - })?, - funds: vec![], - }))); - Ok(response) -} - -/// Withdraws/unstakes LP tokens and claims pending rewards. -/// -/// * **account** account for which we withdraw LP tokens and claim rewards. -/// -/// * **amount** amount of LP tokens to withdraw. -/// -/// ## Executor -/// Only the Generator contract can execute this. -fn withdraw( - deps: DepsMut, - env: Env, - info: MessageInfo, - account: String, - _amount: Uint128, -) -> Result { - let account = deps.api.addr_validate(&account)?; - - let response = Response::new(); - let cfg = CONFIG.load(deps.storage)?; - if info.sender != cfg.generator_contract_addr { - return Err(ContractError::Unauthorized {}); - }; - - let prev_lp_balance = { - let res: BalanceResponse = deps.querier.query_wasm_smart( - &cfg.lp_token_addr, - &Cw20QueryMsg::Balance { - address: env.contract.address.to_string(), - }, - )?; - res.balance - }; - - todo!("Withdraw from the 3rd party reward contract here"); - - response.messages.push(SubMsg::new(WasmMsg::Execute { - contract_addr: env.contract.address.to_string(), - funds: vec![], - msg: to_json_binary(&ExecuteMsg::Callback( - CallbackMsg::TransferLpTokensAfterWithdraw { - account, - prev_lp_balance, - }, - ))?, - })); - - Ok(response) -} - -/// Withdraw/unstakes LP tokens without withdrawing rewards. -/// -/// * **account** account for which we withdraw LP tokens. -/// -/// * **amount** amount of LP tokens to withdraw. -/// -/// ## Executor -/// Only the Generator contract can execute this. -fn emergency_withdraw( - deps: DepsMut, - env: Env, - info: MessageInfo, - account: String, - _amount: Uint128, -) -> Result { - let account = deps.api.addr_validate(&account)?; - - let response = Response::new(); - let cfg = CONFIG.load(deps.storage)?; - if info.sender != cfg.generator_contract_addr { - return Err(ContractError::Unauthorized {}); - }; - - let prev_lp_balance = { - let res: BalanceResponse = deps.querier.query_wasm_smart( - &cfg.lp_token_addr, - &Cw20QueryMsg::Balance { - address: env.contract.address.to_string(), - }, - )?; - res.balance - }; - - todo!("Emergency withdraw from the 3rd party rewards contract here"); - - response.messages.push(SubMsg::new(WasmMsg::Execute { - contract_addr: env.contract.address.to_string(), - funds: vec![], - msg: to_json_binary(&ExecuteMsg::Callback( - CallbackMsg::TransferLpTokensAfterWithdraw { - account, - prev_lp_balance, - }, - ))?, - })); - - Ok(response) -} - -/// Handles callbacks described in [`CallbackMsg`]. -/// -/// ## Executor -/// Callback functions can only be called by this contract. -pub fn handle_callback( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: CallbackMsg, -) -> Result { - // Callback functions can only be called by this contract - if info.sender != env.contract.address { - return Err(ContractError::Unauthorized {}); - } - match msg { - CallbackMsg::TransferLpTokensAfterWithdraw { - account, - prev_lp_balance, - } => transfer_lp_tokens_after_withdraw(deps, env, account, prev_lp_balance), - } -} - -/// Transfers LP tokens after withdrawal (from the 3rd party staking contract) to a recipient. -/// -/// * **account** account that receives the LP tokens. -/// -/// * **prev_lp_balance** previous total amount of LP tokens that were being staked. -/// It is used for calculating the withdrawal amount. -pub fn transfer_lp_tokens_after_withdraw( - deps: DepsMut, - env: Env, - account: Addr, - prev_lp_balance: Uint128, -) -> Result { - let cfg = CONFIG.load(deps.storage)?; - - let amount = { - let res: BalanceResponse = deps.querier.query_wasm_smart( - &cfg.lp_token_addr, - &Cw20QueryMsg::Balance { - address: env.contract.address.to_string(), - }, - )?; - res.balance - prev_lp_balance - }; - - Ok(Response::new().add_message(WasmMsg::Execute { - contract_addr: cfg.lp_token_addr.to_string(), - funds: vec![], - msg: to_json_binary(&Cw20ExecuteMsg::Transfer { - recipient: account.to_string(), - amount, - })?, - })) -} - -/// Exposes all the queries available in the contract. -/// -/// ## Queries -/// * **QueryMsg::Deposit {}** Returns the total amount of deposited LP tokens. -/// -/// * **QueryMsg::Reward {}** Returns the total amount of reward tokens. -/// -/// * **QueryMsg::PendingToken {}** Returns the total amount of pending rewards. -/// -/// * **QueryMsg::RewardInfo {}** Returns the reward token contract address. -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { - let cfg = CONFIG.load(deps.storage)?; - match msg { - QueryMsg::Config {} => to_json_binary(&ConfigResponse { - generator_contract_addr: cfg.generator_contract_addr.to_string(), - pair_addr: cfg.pair_addr.to_string(), - lp_token_addr: cfg.lp_token_addr.to_string(), - reward_contract_addr: cfg.reward_contract_addr.to_string(), - reward_token_addr: cfg.reward_token_addr.to_string(), - }), - QueryMsg::Deposit {} => { - todo!( - "Query the 3rd party reward contract to retrieve the amount of staked LP tokens - or implement local storage and retrieve from it here. - The returned value must be a Uint128" - ); - } - QueryMsg::Reward {} => { - let res: BalanceResponse = deps.querier.query_wasm_smart( - cfg.reward_token_addr, - &Cw20QueryMsg::Balance { - address: env.contract.address.into_string(), - }, - )?; - let reward_amount = res.balance; - - to_json_binary(&reward_amount) - } - QueryMsg::PendingToken {} => { - todo!( - "Query the 3rd party reward contract and retrieve the pending token amount here. - the returned value must be a Uint128" - ); - } - QueryMsg::RewardInfo {} => { - let config = CONFIG.load(deps.storage)?; - to_json_binary(&config.reward_token_addr) - } - } -} - -/// Manages contract migration -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> StdResult { - Ok(Response::default()) -} diff --git a/templates/generator_proxy_template/src/error.rs b/templates/generator_proxy_template/src/error.rs deleted file mode 100644 index b727aefa6..000000000 --- a/templates/generator_proxy_template/src/error.rs +++ /dev/null @@ -1,15 +0,0 @@ -use cosmwasm_std::StdError; -use thiserror::Error; - -/// This enum describes errors for the generator_proxy_template contract -#[derive(Error, Debug)] -pub enum ContractError { - #[error("{0}")] - Std(#[from] StdError), - - #[error("Unauthorized")] - Unauthorized {}, - - #[error("Incorrect CW20 hook message variant!")] - IncorrectCw20HookMessageVariant {}, -} diff --git a/templates/generator_proxy_template/src/lib.rs b/templates/generator_proxy_template/src/lib.rs deleted file mode 100644 index 5773a845f..000000000 --- a/templates/generator_proxy_template/src/lib.rs +++ /dev/null @@ -1,5 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -pub mod contract; -pub mod error; -pub mod state; diff --git a/templates/generator_proxy_template/src/state.rs b/templates/generator_proxy_template/src/state.rs deleted file mode 100644 index 23ebe5896..000000000 --- a/templates/generator_proxy_template/src/state.rs +++ /dev/null @@ -1,22 +0,0 @@ -use cosmwasm_schema::cw_serde; - -use cosmwasm_std::Addr; -use cw_storage_plus::Item; - -/// This structure holds the main parameters of the generator_proxy_template contract. -#[cw_serde] -pub struct Config { - /// The Generator contract address - pub generator_contract_addr: Addr, - /// The target Astroport pair contract address - pub pair_addr: Addr, - /// The contract address for the Astroport LP token associated with pair_addr - pub lp_token_addr: Addr, - /// The 3rd party reward contract address - pub reward_contract_addr: Addr, - /// The 3rd party reward token - pub reward_token_addr: Addr, -} - -/// Stores the contract config at the given key -pub const CONFIG: Item = Item::new("config"); diff --git a/templates/pair_bonded_template/.cargo/config b/templates/pair_bonded_template/.cargo/config deleted file mode 100644 index 82fd9821d..000000000 --- a/templates/pair_bonded_template/.cargo/config +++ /dev/null @@ -1,6 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --example pair_bonded_template" diff --git a/templates/pair_bonded_template/Cargo.toml b/templates/pair_bonded_template/Cargo.toml deleted file mode 100644 index e0998f371..000000000 --- a/templates/pair_bonded_template/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "astroport-pair-bonded-template" -version = "1.0.0" -authors = ["Astroport"] -edition = "2021" -description = "The Astroport pair-bonded template." -license = "MIT" - -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -# for quicker tests, cargo test --lib -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] -library = [] - -[dependencies] -astroport = { path = "../../packages/astroport", default-features = false } -astroport-pair-bonded = { path = "../../packages/pair_bonded" } -cw2 = { version = "0.15" } -cw20 = { version = "0.15" } -cosmwasm-std = { version = "1.1" } -cw-storage-plus = "0.15" -thiserror = { version = "1.0" } -cosmwasm-schema = { version = "1.1" } \ No newline at end of file diff --git a/templates/pair_bonded_template/README.md b/templates/pair_bonded_template/README.md deleted file mode 100644 index 8f2e88594..000000000 --- a/templates/pair_bonded_template/README.md +++ /dev/null @@ -1,172 +0,0 @@ -# Astroport Pair Bonded Template - -Pair bonded template is an implementation of pair with bonded assets(e.g. ASTRO-xASTRO, MARS-xMARS, and other tokens that are correlated but have an increasing exchange rate compared to the other token). -Use [Pair ASTRO-xASTRO](/contracts/pair_astro_xastro/) as example of template implementation. - -## InstantiateMsg - -Initialize the bonded pair contract. - -```json -{ - "token_code_id": 123, - "factory_addr": "terra...", - "asset_infos": [ - { - "token": { - "contract_addr": "terra..." - } - }, - { - "token": { - "contract_addr": "terra..." - } - } - ], - "init_params": "" -} -``` - -## ExecuteMsg - -### `receive` - -Allows to swap assets via 3rd party contract. Liquidity providing and withdrawing is not supported in the template. - -```json -{ - "receive": { - "sender": "terra...", - "amount": "123", - "msg": "" - } -} -``` - -### `provide_liquidity` - -Liquidity providing is not supported in the template by default. - -### `withdraw_liquidity` - -Liquidity withdrawing is not supported in the template by default. - -### `swap` - -Swap operation is not implemented in the template by default. You should - -```json - { - "swap": { - "offer_asset": { - "info": { - "token": { - "contract_addr": "terra..." - } - }, - "amount": "123" - }, - "belief_price": "123", - "max_spread": "123", - "to": "terra..." - } - } -``` - -### `update_config` - -Update config is not supported in the template by default. - -## QueryMsg - -All query messages are described below. A custom struct is defined for each query response. - -### `pair` - -Retrieve a pair's configuration (type, assets traded in it etc) - -```json -{ - "pair": {} -} -``` - -### `pool` - -Returns the amount of tokens in the pool for. - -```json -{ - "pool": {} -} -``` - -### `config` - -Get the pair contract configuration. - -```json -{ - "config": {} -} -``` - -### `share` - -Return the amount of assets someone would get from the pool if they were to burn a specific amount of LP tokens. - -```json -{ - "share": { - "amount": "123" - } -} -``` - -### `simulation` - -Simulates a swap (should be implemented in the contract). - -```json -{ - "simulation": { - "offer_asset": { - "info": { - "native_token": { - "denom": "uusd" - } - }, - "amount": "1000000" - } - } -} -``` - -### `reverse_simulation` - -Reverse simulates a swap (specifies the ask instead of the offer) and returns the offer amount (should be implemented in the contract). - -```json -{ - "reverse_simulation": { - "ask_asset": { - "info": { - "token": { - "contract_addr": "terra..." - } - }, - "amount": "1000000" - } - } -} -``` - -### `cumulative_prices` - -Returns the cumulative prices for the assets in the pair. - -```json -{ - "cumulative_prices": {} -} -``` diff --git a/templates/pair_bonded_template/examples/pair_bonded_template_schema.rs b/templates/pair_bonded_template/examples/pair_bonded_template_schema.rs deleted file mode 100644 index 883934d3e..000000000 --- a/templates/pair_bonded_template/examples/pair_bonded_template_schema.rs +++ /dev/null @@ -1,12 +0,0 @@ -use astroport::pair::InstantiateMsg; -use astroport::pair_bonded::{ExecuteMsg, QueryMsg}; - -use cosmwasm_schema::write_api; - -fn main() { - write_api! { - instantiate: InstantiateMsg, - query: QueryMsg, - execute: ExecuteMsg - } -} diff --git a/templates/pair_bonded_template/src/contract.rs b/templates/pair_bonded_template/src/contract.rs deleted file mode 100644 index 2ddba4b97..000000000 --- a/templates/pair_bonded_template/src/contract.rs +++ /dev/null @@ -1,75 +0,0 @@ -use crate::state::Params; -use cosmwasm_std::{Addr, Decimal, Deps, DepsMut, Env, MessageInfo, Response, StdResult}; - -use astroport::asset::Asset; - -use astroport::pair::{ReverseSimulationResponse, SimulationResponse}; -use astroport_pair_bonded::base::PairBonded; -use astroport_pair_bonded::error::ContractError; -use cw_storage_plus::Item; - -/// This structure stores contract params. -pub(crate) struct Contract<'a> { - pub params: Item<'a, Params>, -} - -impl<'a> Contract<'a> { - pub(crate) fn new(params_key: &'a str) -> Self { - Contract { - params: Item::::new(params_key), - } - } -} - -/// Implementation of the bonded pair template. -impl<'a> PairBonded<'a> for Contract<'a> { - const CONTRACT_NAME: &'a str = "astroport-pair-bonded-template"; - - fn swap( - &self, - _deps: DepsMut, - _env: Env, - _info: MessageInfo, - _sender: Addr, - _offer_asset: Asset, - _belief_price: Option, - _max_spread: Option, - _to: Option, - ) -> Result { - todo!("Implement swap assets using 3rd party contract.") - } - - /// Simulation swap using Astroport Staking contract. - fn query_simulation( - &self, - _deps: Deps, - _env: Env, - _offer_asset: Asset, - ) -> StdResult { - todo!("Implement simulate swap for the specific pool using 3rd party contract.") - } - - /// Reverse simulation swap using 3rd party contract. - fn query_reverse_simulation( - &self, - _deps: Deps, - _env: Env, - _ask_asset: Asset, - ) -> StdResult { - todo!("Implement simulate reverse swap for the specific pool using 3rd party contract.") - } - - /// Execute swap operation using 3rd party contract. - fn execute_swap( - &self, - _deps: DepsMut, - _env: Env, - _info: MessageInfo, - _offer_asset: Asset, - _belief_price: Option, - _max_spread: Option, - _to: Option, - ) -> Result { - todo!("Execute swap using 3rd party contract(Only if the pool has native asset).") - } -} diff --git a/templates/pair_bonded_template/src/lib.rs b/templates/pair_bonded_template/src/lib.rs deleted file mode 100644 index 651076715..000000000 --- a/templates/pair_bonded_template/src/lib.rs +++ /dev/null @@ -1,59 +0,0 @@ -#![cfg(not(tarpaulin_include))] - -use crate::contract::Contract; - -pub mod contract; -pub mod state; - -use crate::state::MigrateMsg; -use astroport::pair::InstantiateMsg; -use astroport::pair_bonded::{ExecuteMsg, QueryMsg}; -use astroport_pair_bonded::base::PairBonded; -use astroport_pair_bonded::error::ContractError; -use cosmwasm_std::{ - entry_point, from_json, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult, -}; - -/// Creates a new contract with the specified parameters in [`InstantiateMsg`]. -#[entry_point] -pub fn instantiate( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - if msg.init_params.is_none() { - return Err(ContractError::InitParamsNotFound {}); - } - - let contract = Contract::new("params"); - contract - .params - .save(deps.storage, &from_json(msg.init_params.as_ref().unwrap())?)?; - contract.instantiate(deps, env, info, msg) -} - -/// Exposes all the execute functions available in the contract via a pair-bonded template. -#[entry_point] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - let contract = Contract::new("params"); - contract.execute(deps, env, info, msg) -} - -/// Exposes all the queries available in the contract via a pair-bonded template. -#[entry_point] -pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { - let contract = Contract::new("params"); - contract.query(deps, env, msg) -} - -/// Manages contract migration -#[entry_point] -pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { - Ok(Response::default()) -} diff --git a/templates/pair_bonded_template/src/state.rs b/templates/pair_bonded_template/src/state.rs deleted file mode 100644 index ae3e23714..000000000 --- a/templates/pair_bonded_template/src/state.rs +++ /dev/null @@ -1,11 +0,0 @@ -use cosmwasm_schema::cw_serde; - -/// This structure stores pool's params. -/// Declare here pair params -#[cw_serde] -pub struct Params {} - -/// This structure describes a migration message. -/// We currently take no arguments for migrations. -#[cw_serde] -pub struct MigrateMsg {} From 554dcae3ed7312425fccb75322030a885100e9ef Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 17:35:16 +0100 Subject: [PATCH 70/84] remove obsolete and unused dev scripts --- scripts/README.md | 29 - scripts/build_app.sh | 8 - scripts/build_env.sh | 21 - scripts/build_release.sh | 2 +- scripts/build_schema.sh | 22 - scripts/chain_configs/localterra.json | 185 - scripts/chain_configs/phoenix-1.json | 211 - scripts/chain_configs/pisco-1.json | 203 - scripts/check_artifacts_size.sh | 18 - scripts/contract_info.ts | 39 - scripts/contract_version.ts | 111 - scripts/deploy_core.ts | 373 -- scripts/deploy_pools.ts | 127 - scripts/deploy_token.ts | 77 - scripts/helpers.ts | 335 -- scripts/migrate.sh | 7 - scripts/migrate.ts | 29 - scripts/package-lock.json | 3862 ----------------- scripts/package.json | 27 - scripts/pools_incentives.ts | 108 - scripts/tests/lib.ts | 332 -- scripts/tests/test_generator.ts | 68 - scripts/tests/test_router.ts | 162 - scripts/tests/tests.ts | 154 - scripts/tsconfig.json | 14 - .../types.d/astroport_deploy_interfaces.ts | 214 - scripts/types.d/chain_configs.ts | 3 - 27 files changed, 1 insertion(+), 6740 deletions(-) delete mode 100644 scripts/README.md delete mode 100755 scripts/build_app.sh delete mode 100755 scripts/build_env.sh delete mode 100755 scripts/build_schema.sh delete mode 100644 scripts/chain_configs/localterra.json delete mode 100644 scripts/chain_configs/phoenix-1.json delete mode 100644 scripts/chain_configs/pisco-1.json delete mode 100755 scripts/check_artifacts_size.sh delete mode 100644 scripts/contract_info.ts delete mode 100644 scripts/contract_version.ts delete mode 100644 scripts/deploy_core.ts delete mode 100644 scripts/deploy_pools.ts delete mode 100644 scripts/deploy_token.ts delete mode 100644 scripts/helpers.ts delete mode 100644 scripts/migrate.sh delete mode 100644 scripts/migrate.ts delete mode 100644 scripts/package-lock.json delete mode 100644 scripts/package.json delete mode 100644 scripts/pools_incentives.ts delete mode 100644 scripts/tests/lib.ts delete mode 100644 scripts/tests/test_generator.ts delete mode 100644 scripts/tests/test_router.ts delete mode 100644 scripts/tests/tests.ts delete mode 100644 scripts/tsconfig.json delete mode 100644 scripts/types.d/astroport_deploy_interfaces.ts delete mode 100644 scripts/types.d/chain_configs.ts diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index a5d541d8d..000000000 --- a/scripts/README.md +++ /dev/null @@ -1,29 +0,0 @@ -## Astroport Core Scripts - -### Build local env - -```shell -npm install -npm start -``` - -### Deploy on `testnet` - -Set multisig address in corresponding config or create new one in chain_configs - -Build contract: -```shell -npm run build-artifacts -``` - -Create `.env`: -```shell -WALLET="mnemonic" -LCD_CLIENT_URL=https://pisco-lcd.terra.dev -CHAIN_ID=pisco-1 -``` - -Deploy contracts: -```shell -npm run build-app -``` diff --git a/scripts/build_app.sh b/scripts/build_app.sh deleted file mode 100755 index b4cd11d72..000000000 --- a/scripts/build_app.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -e - -projectPath=$(cd "$(dirname "${0}")" && cd ../ && pwd) - -cd "$projectPath/scripts" && node --loader ts-node/esm deploy_core.ts -cd "$projectPath/scripts" && node --loader ts-node/esm deploy_pools.ts diff --git a/scripts/build_env.sh b/scripts/build_env.sh deleted file mode 100755 index d9057d694..000000000 --- a/scripts/build_env.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -set -e - -projectPath=$(cd "$(dirname "${0}")" && cd ../ && pwd) - -artifactPath="$projectPath/artifacts" -if [ ! -d "$artifactPath" ]; then - npm run build-release -fi - -terraLocalPath="${TERRA_LOCAL_PATH:-"$(dirname "$projectPath")/terra-local"}" -if [ ! -d "$terraLocalPath" ]; then - git clone --depth 1 https://github.com/terra-money/LocalTerra "$terraLocalPath" - sed -E '/timeout_(propose|prevote|precommit|commit)/s/[0-9]+m?s/250ms/' "$terraLocalPath/config/config.toml" | tee "$terraLocalPath/config/config.toml" -fi -docker-compose --project-directory "$terraLocalPath" rm --force --stop && docker-compose --project-directory "$terraLocalPath" up --detach - -rm -fr "$projectPath/artifacts/localterra.json" - -sleep 5 # wait terra local to startup diff --git a/scripts/build_release.sh b/scripts/build_release.sh index a9ed57f3a..9724903b0 100755 --- a/scripts/build_release.sh +++ b/scripts/build_release.sh @@ -8,4 +8,4 @@ projectPath=$(cd "$(dirname "${0}")" && cd ../ && pwd) docker run --rm -v "$projectPath":/code \ --mount type=volume,source="$(basename "$projectPath")_cache",target=/code/target \ --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ - cosmwasm/workspace-optimizer:0.12.13 \ No newline at end of file + cosmwasm/workspace-optimizer:0.15.1 \ No newline at end of file diff --git a/scripts/build_schema.sh b/scripts/build_schema.sh deleted file mode 100755 index bfbbd7cbf..000000000 --- a/scripts/build_schema.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -o pipefail - -projectPath=$(cd "$(dirname "${0}")" && cd ../ && pwd) - -for c in "$projectPath"/contracts/*; do - if [[ "$c" != *"tokenomics" ]]; then - if [[ "$c" != *"periphery" ]]; then - (cd $c && cargo schema) - fi - fi -done - -for c in "$projectPath"/contracts/tokenomics/*; do - (cd $c && cargo schema) -done - -for c in "$projectPath"/contracts/periphery/*; do - (cd $c && cargo schema) -done diff --git a/scripts/chain_configs/localterra.json b/scripts/chain_configs/localterra.json deleted file mode 100644 index 54eb88256..000000000 --- a/scripts/chain_configs/localterra.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "generalInfo": { - "multisig": "terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v" - }, - "token": { - "admin": null, - "initMsg": { - "name": "Astroport", - "symbol": "ASTRO", - "decimals": 6, - "initial_balances": [ - { - "address": null, - "amount": "1100000000000000" - } - ], - "marketing": { - "project": "Astroport", - "description": "Astroport is a neutral marketplace where anyone, from anywhere in the galaxy, can dock to trade their wares.", - "marketing": null, - "logo": { - "url": "https://astroport.fi/astro_logo.svg" - } - } - }, - "label": "Astroport ASTRO" - }, - "treasury": { - "admin": null, - "initMsg": { - "admins": [ - null - ], - "mutable": true - }, - "label": "Astroport Treasury" - }, - "staking": { - "admin": null, - "initMsg": { - "owner": null, - "token_code_id": null, - "deposit_token_addr": null, - "marketing": { - "project": "Astroport", - "description": "Astroport is a neutral marketplace where anyone, from anywhere in the galaxy, can dock to trade their wares.", - "marketing": null, - "logo": { - "url": "https://app.astroport.fi/tokens/xAstro.svg" - } - } - }, - "label": "Astroport Staking" - }, - "factory": { - "admin": null, - "initMsg": { - "owner": null, - "pair_configs": [ - { - "code_id": null, - "pair_type": { - "xyk": {} - }, - "total_fee_bps": 30, - "maker_fee_bps": 3333, - "is_disabled": false, - "is_generator_disabled": false - }, - { - "code_id": null, - "pair_type": { - "stable": {} - }, - "total_fee_bps": 5, - "maker_fee_bps": 5000, - "is_disabled": false, - "is_generator_disabled": false - } - ], - "token_code_id": null, - "fee_address": null, - "generator_address": null, - "whitelist_code_id": null - }, - "label": "Astroport Factory", - "change_owner": false, - "proposeNewOwner": { - "owner": null, - "expires_in": 604800 - } - }, - "router": { - "admin": null, - "initMsg": { - "astroport_factory": null - }, - "label": "Astroport Router" - }, - "maker": { - "admin": null, - "initMsg": { - "owner": null, - "factory_contract": null, - "staking_contract": null, - "astro_token": null, - "governance_contract": null, - "governance_percent": null, - "max_spread": "0.5" - }, - "label": "Astroport Maker" - }, - "vesting": { - "admin": null, - "initMsg": { - "owner": null, - "vesting_token": null - }, - "label": "Astroport Vesting", - "registration": { - "msg": { - "register_vesting_accounts": { - "vesting_accounts": [ - { - "address": null, - "schedules": [ - { - "start_point": { - "time": 1640865600, - "amount": "100" - }, - "end_point": { - "time": 1672401600, - "amount": "10000" - } - } - ] - } - ] - } - }, - "amount": "10000" - } - }, - "generator": { - "admin": null, - "initMsg": { - "owner": null, - "astro_token": null, - "start_block": "5918639", - "tokens_per_block": "8403094", - "vesting_contract": null, - "factory": null, - "whitelist_code_id": null - }, - "label": "Astroport Generator", - "change_owner": false, - "proposeNewOwner": { - "owner": null, - "expires_in": 604800 - } - }, - "generatorProxy": { - "admin": null, - "initMsg": { - "generator_contract_addr": null, - "pair_addr": null, - "lp_token_addr": null, - "reward_contract_addr": null, - "reward_token_addr": null - }, - "label": "Astroport Generator Proxy" - }, - "oracle": { - "admin": null, - "initMsg": { - "factory_contract": null, - "asset_infos": null - }, - "label": "Astroport Oracle" - }, - "createPairs": { - "pairs": [] - } -} \ No newline at end of file diff --git a/scripts/chain_configs/phoenix-1.json b/scripts/chain_configs/phoenix-1.json deleted file mode 100644 index 1a357fcc3..000000000 --- a/scripts/chain_configs/phoenix-1.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "generalInfo": { - "multisig": "terra174gu7kg8ekk5gsxdma5jlfcedm653tyg6ayppw" - }, - "token": { - "admin": null, - "initMsg": { - "name": "Astroport", - "symbol": "ASTRO", - "decimals": 6, - "initial_balances": [ - { - "address": null, - "amount": "1100000000000000" - } - ], - "marketing": { - "project": "Astroport", - "description": "Astroport is a neutral marketplace where anyone, from anywhere in the galaxy, can dock to trade their wares.", - "marketing": null, - "logo": { - "url": "https://astroport.fi/astro_logo.svg" - } - } - }, - "label": "Astroport ASTRO" - }, - "treasury": { - "admin": null, - "initMsg": { - "admins": [ - "terra1k9j8rcyk87v5jvfla2m9wp200azegjz0eshl7n2pwv852a7ssceqsnn7pq" - ], - "mutable": true - }, - "label": "Astroport Treasury" - }, - "staking": { - "admin": null, - "initMsg": { - "owner": null, - "token_code_id": null, - "deposit_token_addr": null, - "marketing": { - "project": "Astroport", - "description": "Astroport is a neutral marketplace where anyone, from anywhere in the galaxy, can dock to trade their wares.", - "marketing": null, - "logo": { - "url": "https://app.astroport.fi/tokens/xAstro.svg" - } - } - }, - "label": "Astroport Staking" - }, - "factory": { - "admin": null, - "initMsg": { - "owner": null, - "pair_configs": [ - { - "code_id": null, - "pair_type": { - "xyk": {} - }, - "total_fee_bps": 30, - "maker_fee_bps": 3333, - "is_disabled": false, - "is_generator_disabled": false - }, - { - "code_id": null, - "pair_type": { - "stable": {} - }, - "total_fee_bps": 5, - "maker_fee_bps": 5000, - "is_disabled": false, - "is_generator_disabled": false - } - ], - "token_code_id": null, - "fee_address": null, - "generator_address": null, - "whitelist_code_id": null - }, - "label": "Astroport Factory", - "change_owner": false, - "proposeNewOwner": { - "owner": null, - "expires_in": 604800 - } - }, - "router": { - "admin": null, - "initMsg": { - "astroport_factory": null - }, - "label": "Astroport Router" - }, - "maker": { - "admin": null, - "initMsg": { - "owner": null, - "factory_contract": null, - "staking_contract": null, - "astro_token": null, - "governance_contract": null, - "governance_percent": null, - "max_spread": "0.5" - }, - "label": "Astroport Maker" - }, - "vesting": { - "admin": null, - "initMsg": { - "owner": null, - "vesting_token": null - }, - "label": "Astroport Vesting", - "registration": { - "msg": { - "register_vesting_accounts": { - "vesting_accounts": [ - { - "address": null, - "schedules": [ - { - "start_point": { - "time": 1640865600, - "amount": "100" - }, - "end_point": { - "time": 1672401600, - "amount": "10000" - } - } - ] - } - ] - } - }, - "amount": "10000" - } - }, - "generator": { - "admin": null, - "initMsg": { - "owner": null, - "astro_token": null, - "start_block": "5918639", - "tokens_per_block": "8403094", - "vesting_contract": null, - "factory": null, - "whitelist_code_id": null - }, - "label": "Astroport Generator", - "change_owner": false, - "proposeNewOwner": { - "owner": null, - "expires_in": 604800 - }, - "new_incentives_pools": [ - [ - "terra18mcmlf4v23ehukkh7qxgpf5tznzg6893fxmf9ffmdt9phgf365zqvmlug6", - "1538" - ], - [ - "terra16esjk7qqlgh8w7p2a58yxhgkfk4ykv72p7ha056zul58adzjm6msvc674t", - "30018" - ], - [ - "terra1ckmsqdhlky9jxcmtyj64crgzjxad9pvsd58k8zsxsnv4vzvwdt7qke04hl", - "40026" - ], - [ - "terra1kggfd6z0ad2k9q8v24f7ftxyqush8fp9xku9nyrjcs2wv0e4kypszfrfd0", - "7504" - ], - [ - "terra1cq22eugxwgp0x34cqfrxmd9jkyy43gas93yqjhmwrm7j0h5ecrqq5j7dgp", - "7504" - ], - [ - "terra1khsxwfnzuxqcyza2sraxf2ngkr3dwy9f7rm0uts0xpkeshs96ccsqtu6nv", - "11257" - ] - ] - }, - "generatorProxy": { - "admin": null, - "initMsg": { - "generator_contract_addr": null, - "pair_addr": null, - "lp_token_addr": null, - "reward_contract_addr": null, - "reward_token_addr": null - }, - "label": "Astroport Generator Proxy" - }, - "oracle": { - "admin": null, - "initMsg": { - "factory_contract": null, - "asset_infos": null - }, - "label": "Astroport Oracle" - }, - "create_pairs": { - "pairs": [] - } -} \ No newline at end of file diff --git a/scripts/chain_configs/pisco-1.json b/scripts/chain_configs/pisco-1.json deleted file mode 100644 index a8156c96d..000000000 --- a/scripts/chain_configs/pisco-1.json +++ /dev/null @@ -1,203 +0,0 @@ -{ - "generalInfo": { - "multisig": "terra174gu7kg8ekk5gsxdma5jlfcedm653tyg6ayppw" - }, - "token": { - "admin": null, - "initMsg": { - "name": "Astroport", - "symbol": "ASTRO", - "decimals": 6, - "initial_balances": [ - { - "address": null, - "amount": "1100000000000000" - } - ], - "marketing": { - "project": "Astroport", - "description": "Astroport is a neutral marketplace where anyone, from anywhere in the galaxy, can dock to trade their wares.", - "marketing": null, - "logo": { - "url": "https://astroport.fi/astro_logo.svg" - } - } - }, - "label": "Astroport ASTRO" - }, - "treasury": { - "admin": null, - "initMsg": { - "admins": [ - "terra195m6n5xq4rkjy47fn5y3s08tfmj3ryknj55jqvgq2y55zul9myzsgy06hk" - ], - "mutable": true - }, - "label": "Astroport Treasury" - }, - "staking": { - "admin": null, - "initMsg": { - "owner": null, - "token_code_id": null, - "deposit_token_addr": null, - "marketing": { - "project": "Astroport", - "description": "Astroport is a neutral marketplace where anyone, from anywhere in the galaxy, can dock to trade their wares.", - "marketing": null, - "logo": { - "url": "https://app.astroport.fi/tokens/xAstro.svg" - } - } - }, - "label": "Astroport Staking" - }, - "factory": { - "admin": null, - "initMsg": { - "owner": null, - "pair_configs": [ - { - "code_id": null, - "pair_type": { - "xyk": {} - }, - "total_fee_bps": 30, - "maker_fee_bps": 3333, - "is_disabled": false, - "is_generator_disabled": false - }, - { - "code_id": null, - "pair_type": { - "stable": {} - }, - "total_fee_bps": 5, - "maker_fee_bps": 5000, - "is_disabled": false, - "is_generator_disabled": false - } - ], - "token_code_id": null, - "fee_address": null, - "generator_address": null, - "whitelist_code_id": null - }, - "label": "Astroport Factory", - "change_owner": false, - "proposeNewOwner": { - "owner": null, - "expires_in": 604800 - } - }, - "router": { - "admin": null, - "initMsg": { - "astroport_factory": null - }, - "label": "Astroport Router" - }, - "maker": { - "admin": null, - "initMsg": { - "owner": null, - "factory_contract": null, - "staking_contract": null, - "astro_token": null, - "governance_contract": null, - "governance_percent": null, - "max_spread": "0.5" - }, - "label": "Astroport Maker" - }, - "vesting": { - "admin": null, - "initMsg": { - "owner": null, - "vesting_token": null - }, - "label": "Astroport Vesting", - "registration": { - "msg": { - "register_vesting_accounts": { - "vesting_accounts": [ - { - "address": null, - "schedules": [ - { - "start_point": { - "time": 1640865600, - "amount": "100" - }, - "end_point": { - "time": 1672401600, - "amount": "10000" - } - } - ] - } - ] - } - }, - "amount": "10000" - } - }, - "generator": { - "admin": null, - "initMsg": { - "owner": null, - "astro_token": null, - "start_block": "5918639", - "tokens_per_block": "8403094", - "vesting_contract": null, - "factory": null, - "whitelist_code_id": null - }, - "label": "Astroport Generator", - "change_owner": false, - "proposeNewOwner": { - "owner": null, - "expires_in": 604800 - }, - "new_incentives_pools": [ - [ - "terra1886vn036tc9e7ejx8pe4nkhts3gwpdfegwc4n3u77n0q76fjdthqarl8uc", - "50000" - ], - [ - "terra1hwwzt7sv386me5t7hy9ujafy6mfnyjl0h8cn92lnqd58jjmeksqstja4ng", - "50000" - ], - [ - "terra1plzrd3v55k0y8uy2mkvugme9zp4kucwr0ylqfyw63mpq023xe4mqpdt9ut", - "10000" - ], - [ - "terra1wfl4rrghs2glm874dnzfknl62j2uw6n62mdzcyplg5hfwegyhkzqgkec9z", - "50000" - ] - ] - }, - "generatorProxy": { - "admin": null, - "initMsg": { - "generator_contract_addr": null, - "pair_addr": null, - "lp_token_addr": null, - "reward_contract_addr": null, - "reward_token_addr": null - }, - "label": "Astroport Generator Proxy" - }, - "oracle": { - "admin": null, - "initMsg": { - "factory_contract": null, - "asset_infos": null - }, - "label": "Astroport Oracle" - }, - "create_pairs": { - "pairs": [] - } -} \ No newline at end of file diff --git a/scripts/check_artifacts_size.sh b/scripts/check_artifacts_size.sh deleted file mode 100755 index 178120ff7..000000000 --- a/scripts/check_artifacts_size.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -o pipefail - -# terra: https://github.com/terra-money/wasmd/blob/2308975f45eac299bdf246737674482eaa51051c/x/wasm/types/validation.go#L12 -# injective: https://github.com/InjectiveLabs/wasmd/blob/e087f275712b5f0a798791495dee0e453d67cad3/x/wasm/types/validation.go#L19 -maximum_size=800 - -for artifact in artifacts/*.wasm; do - artifactsize=$(du -k "$artifact" | cut -f 1) - if [ "$artifactsize" -gt $maximum_size ]; then - echo "Artifact file size exceeded: $artifact" - echo "Artifact size: $artifactsize" - echo "Max size: $maximum_size" - exit 1 - fi -done diff --git a/scripts/contract_info.ts b/scripts/contract_info.ts deleted file mode 100644 index 484f964e3..000000000 --- a/scripts/contract_info.ts +++ /dev/null @@ -1,39 +0,0 @@ -import 'dotenv/config' -import { - newClient, - readArtifact, - queryContractInfo, - queryCodeInfo, - queryContractRaw, toDecodedBinary, strToEncodedBinary -} from "./helpers.js" - -async function main() { - const {terra, wallet} = newClient() - console.log(`chainID: ${terra.config.chainID} wallet: ${wallet.key.accAddress}`) - const network = readArtifact(terra.config.chainID) - console.log('Network:', network) - - console.log('Contract info:'); - console.log(await queryContractInfo(terra, network.generatorAddress)); - - console.log('Code info:'); - console.log(await queryCodeInfo(terra, network.treasuryCodeID)); - - console.log(`Config about address: ${network.generatorAddress}`); - console.log(await queryContractRaw(terra, `/terra/wasm/v1beta1/contracts/${network.generatorAddress}/store`, - { - query_msg: Buffer.from(JSON.stringify({ - config: {} - }), 'utf-8').toString('base64'), - })); - - console.log(`Info about address: ${network.generatorAddress}`); - let resp = await queryContractRaw(terra, `/terra/wasm/v1beta1/contracts/${network.generatorAddress}/store/raw`, - { - key: strToEncodedBinary("contract_info") - }); - console.log(toDecodedBinary(resp.data).toString()); -} - - -main().catch(console.log) diff --git a/scripts/contract_version.ts b/scripts/contract_version.ts deleted file mode 100644 index 0f043e62d..000000000 --- a/scripts/contract_version.ts +++ /dev/null @@ -1,111 +0,0 @@ -import 'dotenv/config' -import { - newClient, - readArtifact, - queryContractRaw, toDecodedBinary, strToEncodedBinary, getRemoteFile, ARTIFACTS_PATH -} from "./helpers.js" -import {LCDClient} from "@terra-money/terra.js"; -import fs from "fs"; -import path from "path"; - -const ASTROPORT_CHANGE_LOG_NAME = process.env.ASTROPORT_CHANGE_LOG_NAME! || String('core_phoenix') -const ASTROPORT_CHANGE_LOG_URL = process.env.ASTROPORT_CHANGE_LOG_URL! || String("https://raw.githubusercontent.com/astroport-fi/astroport-changelog/main/terra-2/phoenix-1/core_phoenix.json") -const ASTROPORT_3RD_PARTY_LOG_NAME = process.env.ASTROPORT_CHANGE_LOG_NAME! || String('3rd_party_phoenix') -const ASTROPORT_3RD_PARTY_LOG_URL = process.env.ASTROPORT_CHANGE_LOG_URL! || String("https://raw.githubusercontent.com/astroport-fi/astroport-changelog/main/terra-2/phoenix-1/core_phoenix.json") - -interface CInfo { - address: string, - localName: string, - localVersion?: string, - deployedName: string, - deployedVersion: string, -} - -function buildCInfo(localName: string, address: string, deployedName: string, deployedVersion: string, localVersion?: string): CInfo { - return { - address, - localName, - localVersion, - deployedName, - deployedVersion, - }; -} - -async function queryCInfo(terra: LCDClient, name: string, address: string, end_point: string): Promise { - return await queryContractRaw(terra, end_point) - .then(resp => { - let res = JSON.parse(toDecodedBinary(resp.data).toString()); - return buildCInfo(name, address, res.contract, res.version) - }) - .catch(err => { - console.log(`${name} - ${address}: ${err}`); - return buildCInfo("", "", "", "") - }); -} - -function changeLogExists(fileName: string, url: string): void { - try { - if (!fs.existsSync(path.join(ARTIFACTS_PATH, `${fileName}.json`))) { - console.log(`File ${fileName} doesn't exists. Start downloading.`) - getRemoteFile(fileName, url) - console.log("Finish downloading.") - } - } catch(err) { - console.error(err); - } -} - -async function astroportTable(terra: LCDClient) { - // download config file if does not exists - changeLogExists(ASTROPORT_CHANGE_LOG_NAME, ASTROPORT_CHANGE_LOG_URL); - let network = readArtifact(ASTROPORT_CHANGE_LOG_NAME); - - for (const key in network) { - const value = network[key]; - let end_point = `/cosmwasm/wasm/v1/contract/${value}/raw/${strToEncodedBinary("contract_info")}`; - - // each contract should be saved with `address` substring name in .json config file - if ( key.includes("address") ){ - await queryCInfo(terra, key, value, end_point).then(resp => { - if (resp.deployedName.length > 0 ) { - console.table(resp); - } - }) - } - } -} - -async function astroport3dPartyTable(terra: LCDClient) { - // download config file if does not exists - changeLogExists(ASTROPORT_3RD_PARTY_LOG_NAME, ASTROPORT_3RD_PARTY_LOG_URL); - let network = readArtifact("3rd_party_phoenix") - - for (const key in network) { - const value = network[key]; - let end_point = `/cosmwasm/wasm/v1/contract/${value.address}/raw/${strToEncodedBinary("contract_info")}`; - - await queryCInfo(terra, key, value.address, end_point).then(resp => { - if (resp.deployedName.length > 0 ) { - resp.localVersion = value.version - if (resp.localVersion != resp.deployedVersion ) { - console.log("Contract version mismatch!") - } - console.table(resp); - } - }) - } -} - -async function main() { - const {terra, wallet} = newClient() - console.log(`chainID: ${terra.config.chainID} wallet: ${wallet.key.accAddress}`) - - const network = readArtifact(terra.config.chainID) - console.log('Network:', network) - - await astroportTable(terra) - await astroport3dPartyTable(terra) - -} - -main().catch(console.log) diff --git a/scripts/deploy_core.ts b/scripts/deploy_core.ts deleted file mode 100644 index d5d78390c..000000000 --- a/scripts/deploy_core.ts +++ /dev/null @@ -1,373 +0,0 @@ -import 'dotenv/config' -import { - newClient, - writeArtifact, - readArtifact, - deployContract, - executeContract, - uploadContract, instantiateContract, queryContract, toEncodedBinary, -} from './helpers.js' -import { join } from 'path' -import { LCDClient } from '@terra-money/terra.js'; -import { chainConfigs } from "./types.d/chain_configs.js"; -import { strictEqual } from "assert"; - -const ARTIFACTS_PATH = '../artifacts' -const SECONDS_IN_DAY: number = 60 * 60 * 24 // min, hour, day - -async function main() { - const { terra, wallet } = newClient() - console.log(`chainID: ${terra.config.chainID} wallet: ${wallet.key.accAddress}`) - - if (!chainConfigs.generalInfo.multisig) { - throw new Error("Set the proper owner multisig for the contracts") - } - - await uploadAndInitToken(terra, wallet) - await uploadAndInitTreasury(terra, wallet) - await uploadPairContracts(terra, wallet) - await uploadAndInitStaking(terra, wallet) - await uploadAndInitFactory(terra, wallet) - await uploadAndInitRouter(terra, wallet) - await uploadAndInitMaker(terra, wallet) - - await uploadAndInitVesting(terra, wallet) - await uploadAndInitGenerator(terra, wallet) - await setupVestingAccounts(terra, wallet) -} - -async function uploadAndInitToken(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - - if (!network.tokenCodeID) { - network.tokenCodeID = await uploadContract(terra, wallet, join(ARTIFACTS_PATH, 'astroport_token.wasm')!) - writeArtifact(network, terra.config.chainID) - console.log(`Token codeId: ${network.tokenCodeID}`) - } - - if (!network.tokenAddress) { - chainConfigs.token.admin ||= chainConfigs.generalInfo.multisig - chainConfigs.token.initMsg.marketing.marketing ||= chainConfigs.generalInfo.multisig - - for (let i = 0; i < chainConfigs.token.initMsg.initial_balances.length; i++) { - chainConfigs.token.initMsg.initial_balances[i].address ||= chainConfigs.generalInfo.multisig - } - - console.log('Deploying Token...') - let resp = await deployContract( - terra, - wallet, - chainConfigs.token.admin, - join(ARTIFACTS_PATH, 'astroport_token.wasm'), - chainConfigs.token.initMsg, - chainConfigs.token.label, - ) - - // @ts-ignore - network.tokenAddress = resp.shift().shift() - console.log("astro:", network.tokenAddress) - console.log(await queryContract(terra, network.tokenAddress, { token_info: {} })) - console.log(await queryContract(terra, network.tokenAddress, { minter: {} })) - - for (let i = 0; i < chainConfigs.token.initMsg.initial_balances.length; i++) { - let balance = await queryContract(terra, network.tokenAddress, { balance: { address: chainConfigs.token.initMsg.initial_balances[i].address } }) - strictEqual(balance.balance, chainConfigs.token.initMsg.initial_balances[i].amount) - } - - writeArtifact(network, terra.config.chainID) - } -} - -async function uploadPairContracts(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - - if (!network.pairCodeID) { - console.log('Register Pair Contract...') - network.pairCodeID = await uploadContract(terra, wallet, join(ARTIFACTS_PATH, 'astroport_pair.wasm')!) - writeArtifact(network, terra.config.chainID) - } - - if (!network.pairStableCodeID) { - console.log('Register Stable Pair Contract...') - network.pairStableCodeID = await uploadContract(terra, wallet, join(ARTIFACTS_PATH, 'astroport_pair_stable.wasm')!) - writeArtifact(network, terra.config.chainID) - } -} - -async function uploadAndInitStaking(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - - if (!network.xastroTokenCodeID) { - console.log('Register xASTRO token contract...') - network.xastroTokenCodeID = await uploadContract(terra, wallet, join(ARTIFACTS_PATH, 'astroport_xastro_token.wasm')!) - writeArtifact(network, terra.config.chainID) - } - - if (!network.stakingAddress) { - chainConfigs.staking.initMsg.deposit_token_addr ||= network.tokenAddress - chainConfigs.staking.initMsg.token_code_id ||= network.xastroTokenCodeID - chainConfigs.staking.initMsg.marketing.marketing ||= chainConfigs.generalInfo.multisig - chainConfigs.staking.initMsg.owner ||= chainConfigs.generalInfo.multisig - chainConfigs.staking.admin ||= chainConfigs.generalInfo.multisig - - console.log('Deploying Staking...') - let resp = await deployContract( - terra, - wallet, - chainConfigs.staking.admin, - join(ARTIFACTS_PATH, 'astroport_staking.wasm'), - chainConfigs.staking.initMsg, - chainConfigs.staking.label, - ) - - let addresses = resp.shift() - // @ts-ignore - network.stakingAddress = addresses.shift(); - // @ts-ignore - network.xastroAddress = addresses.shift(); - - console.log(`Staking Contract Address: ${network.stakingAddress}`) - console.log(`xASTRO token Address: ${network.xastroAddress}`) - writeArtifact(network, terra.config.chainID) - } -} - -async function uploadAndInitFactory(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - - if (!network.factoryAddress) { - console.log('Deploying Factory...') - console.log(`CodeId Pair Contract: ${network.pairCodeID}`) - console.log(`CodeId Stable Pair Contract: ${network.pairStableCodeID}`) - - for (let i = 0; i < chainConfigs.factory.initMsg.pair_configs.length; i++) { - if (!chainConfigs.factory.initMsg.pair_configs[i].code_id) { - if (JSON.stringify(chainConfigs.factory.initMsg.pair_configs[i].pair_type) === JSON.stringify({ xyk: {} })) { - chainConfigs.factory.initMsg.pair_configs[i].code_id ||= network.pairCodeID; - } - - if (JSON.stringify(chainConfigs.factory.initMsg.pair_configs[i].pair_type) === JSON.stringify({ stable: {} })) { - chainConfigs.factory.initMsg.pair_configs[i].code_id ||= network.pairStableCodeID; - } - } - } - - chainConfigs.factory.initMsg.token_code_id ||= network.tokenCodeID; - chainConfigs.factory.initMsg.whitelist_code_id ||= network.whitelistCodeID; - chainConfigs.factory.initMsg.owner ||= wallet.key.accAddress; - chainConfigs.factory.admin ||= chainConfigs.generalInfo.multisig; - - let resp = await deployContract( - terra, - wallet, - chainConfigs.factory.admin, - join(ARTIFACTS_PATH, 'astroport_factory.wasm'), - chainConfigs.factory.initMsg, - chainConfigs.factory.label - ) - - // @ts-ignore - network.factoryAddress = resp.shift().shift() - console.log(`Address Factory Contract: ${network.factoryAddress}`) - writeArtifact(network, terra.config.chainID) - - // Set new owner for factory - if (chainConfigs.factory.change_owner) { - console.log('Propose owner for factory. Ownership has to be claimed within %s days', - Number(chainConfigs.factory.proposeNewOwner.expires_in) / SECONDS_IN_DAY) - await executeContract(terra, wallet, network.factoryAddress, { - "propose_new_owner": chainConfigs.factory.proposeNewOwner - }) - } - } -} - -async function uploadAndInitRouter(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - - if (!network.routerAddress) { - chainConfigs.router.initMsg.astroport_factory ||= network.factoryAddress - chainConfigs.router.admin ||= chainConfigs.generalInfo.multisig; - - console.log('Deploying Router...') - let resp = await deployContract( - terra, - wallet, - chainConfigs.router.admin, - join(ARTIFACTS_PATH, 'astroport_router.wasm'), - chainConfigs.router.initMsg, - chainConfigs.router.label - ) - - // @ts-ignore - network.routerAddress = resp.shift().shift() - console.log(`Address Router Contract: ${network.routerAddress}`) - writeArtifact(network, terra.config.chainID) - } -} - -async function uploadAndInitMaker(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - - if (!network.makerAddress) { - chainConfigs.maker.initMsg.owner ||= chainConfigs.generalInfo.multisig; - chainConfigs.maker.initMsg.factory_contract ||= network.factoryAddress; - chainConfigs.maker.initMsg.staking_contract ||= network.stakingAddress; - chainConfigs.maker.initMsg.astro_token ||= { - token: { - contract_addr: network.tokenAddress - } - }; - chainConfigs.maker.admin ||= chainConfigs.generalInfo.multisig; - - console.log('Deploying Maker...') - let resp = await deployContract( - terra, - wallet, - chainConfigs.maker.admin, - join(ARTIFACTS_PATH, 'astroport_maker.wasm'), - chainConfigs.maker.initMsg, - chainConfigs.maker.label - ) - - // @ts-ignore - network.makerAddress = resp.shift().shift() - console.log(`Maker Contract Address: ${network.makerAddress}`) - writeArtifact(network, terra.config.chainID) - - // Set maker address in factory - console.log('Set the Maker and the proper owner address in the factory') - await executeContract(terra, wallet, network.factoryAddress, { - "update_config": { - fee_address: network.makerAddress - } - }) - } -} - -async function uploadAndInitTreasury(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - - if (!network.whitelistCodeID) { - console.log('Register Treasury Contract...') - network.whitelistCodeID = await uploadContract(terra, wallet, join(ARTIFACTS_PATH, 'astroport_whitelist.wasm')!) - writeArtifact(network, terra.config.chainID) - } - - if (!network.treasuryAddress) { - chainConfigs.treasury.admin ||= chainConfigs.generalInfo.multisig; - chainConfigs.treasury.initMsg.admins[0] ||= chainConfigs.generalInfo.multisig; - - console.log('Instantiate the Treasury...') - let resp = await instantiateContract( - terra, - wallet, - chainConfigs.treasury.admin, - network.whitelistCodeID, - chainConfigs.treasury.initMsg, - chainConfigs.treasury.label, - ); - - // @ts-ignore - network.treasuryAddress = resp.shift().shift() - console.log(`Treasury Contract Address: ${network.treasuryAddress}`) - writeArtifact(network, terra.config.chainID) - } -} - -async function uploadAndInitVesting(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - - if (!network.vestingAddress) { - chainConfigs.vesting.initMsg.vesting_token ||= { token: { contract_addr: network.tokenAddress } }; - chainConfigs.vesting.initMsg.owner ||= chainConfigs.generalInfo.multisig; - chainConfigs.vesting.admin ||= chainConfigs.generalInfo.multisig; - - console.log('Deploying Vesting...') - let resp = await deployContract( - terra, - wallet, - chainConfigs.vesting.admin, - join(ARTIFACTS_PATH, 'astroport_vesting.wasm'), - chainConfigs.vesting.initMsg, - chainConfigs.vesting.label - ) - - // @ts-ignore - network.vestingAddress = resp.shift().shift() - console.log(`Vesting Contract Address: ${network.vestingAddress}`) - writeArtifact(network, terra.config.chainID) - } -} - -async function uploadAndInitGenerator(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - - if (!network.generatorAddress) { - chainConfigs.generator.initMsg.astro_token ||= { token: { contract_addr: network.tokenAddress } }; - chainConfigs.generator.initMsg.vesting_contract ||= network.vestingAddress; - chainConfigs.generator.initMsg.factory ||= network.factoryAddress; - chainConfigs.generator.initMsg.whitelist_code_id ||= network.whitelistCodeID; - chainConfigs.generator.initMsg.owner ||= wallet.key.accAddress; - chainConfigs.generator.admin ||= chainConfigs.generalInfo.multisig; - - console.log('Deploying Generator...') - let resp = await deployContract( - terra, - wallet, - chainConfigs.generator.admin, - join(ARTIFACTS_PATH, 'astroport_generator.wasm'), - chainConfigs.generator.initMsg, - chainConfigs.generator.label - ) - - // @ts-ignore - network.generatorAddress = resp.shift().shift() - console.log(`Generator Contract Address: ${network.generatorAddress}`) - - writeArtifact(network, terra.config.chainID) - - // Set generator address in factory - await executeContract(terra, wallet, network.factoryAddress, { - update_config: { - generator_address: network.generatorAddress, - } - }) - - // Set new owner for generator - if (chainConfigs.generator.change_owner) { - console.log('Propose owner for generator. Ownership has to be claimed within %s days', - Number(chainConfigs.generator.proposeNewOwner.expires_in) / SECONDS_IN_DAY) - await executeContract(terra, wallet, network.generatorAddress, { - "propose_new_owner": chainConfigs.generator.proposeNewOwner - }) - } - - console.log(await queryContract(terra, network.factoryAddress, { config: {} })) - } -} - -async function setupVestingAccounts(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - - if (!network.vestingAddress) { - throw new Error("Please deploy the vesting contract") - } - - if (!network.vestingAccountsRegistered) { - chainConfigs.vesting.registration.msg.register_vesting_accounts.vesting_accounts[0].address = network.generatorAddress; - console.log('Register vesting accounts:', JSON.stringify(chainConfigs.vesting.registration.msg)) - await executeContract(terra, wallet, network.tokenAddress, { - "send": { - contract: network.vestingAddress, - amount: chainConfigs.vesting.registration.amount, - msg: toEncodedBinary(chainConfigs.vesting.registration.msg) - } - }) - network.vestingAccountsRegistered = true - writeArtifact(network, terra.config.chainID) - } - -} - -await main() diff --git a/scripts/deploy_pools.ts b/scripts/deploy_pools.ts deleted file mode 100644 index d31b131ef..000000000 --- a/scripts/deploy_pools.ts +++ /dev/null @@ -1,127 +0,0 @@ -import 'dotenv/config' -import { - newClient, - writeArtifact, - readArtifact, - deployContract, - executeContract, - queryContract, - toEncodedBinary, ARTIFACTS_PATH, -} from './helpers.js' -import { join } from 'path' -import { LCDClient } from "@terra-money/terra.js"; -import { chainConfigs } from "./types.d/chain_configs.js"; - -async function uploadAndInitOracle(terra: LCDClient, wallet: any, pair: Pair, network: any, pool_pair_key: string) { - let pool_oracle_key = "oracle" + pair.identifier - - if (pair.initOracle && network[pool_pair_key] && !network[pool_oracle_key]) { - chainConfigs.oracle.admin ||= chainConfigs.generalInfo.multisig - chainConfigs.oracle.initMsg.factory_contract ||= network.factoryAddress - chainConfigs.oracle.initMsg.asset_infos ||= pair.assetInfos - - console.log(`Deploying oracle for ${pair.identifier}...`) - let resp = await deployContract( - terra, - wallet, - chainConfigs.oracle.admin, - join(ARTIFACTS_PATH, 'astroport_oracle.wasm'), - chainConfigs.oracle.initMsg, - chainConfigs.oracle.label) - - // @ts-ignore - network[pool_oracle_key] = resp.shift().shift(); - console.log(`Address of ${pair.identifier} oracle contract: ${network[pool_oracle_key]}`) - writeArtifact(network, terra.config.chainID) - } -} - -async function createPools(terra: LCDClient, wallet: any) { - let network = readArtifact(terra.config.chainID) - let pairs = chainConfigs.createPairs.pairs; - let pools: string[][] = []; - - for (let i = 0; i < pairs.length; i++) { - let pair = pairs[i] - let pool_pair_key = "pool" + pair.identifier - let pool_lp_token_key = "lpToken" + pair.identifier - - // Create pool - if (!network[pool_pair_key]) { - console.log(`Creating pool ${pair.identifier}...`) - let initParams = pair.initParams; - if (initParams) { - initParams = toEncodedBinary(initParams) - } - - let res = await executeContract(terra, wallet, network.factoryAddress, { - create_pair: { - pair_type: pair.pairType, - asset_infos: pair.assetInfos, - init_params: initParams - } - }) - - network[pool_pair_key] = res.logs[0].eventsByType.wasm.pair_contract_addr[0] - let pool_info = await queryContract(terra, network[pool_pair_key], { - pair: {} - }) - - // write liquidity token - network[pool_lp_token_key] = pool_info.liquidity_token - console.log(`Pair successfully created! Address: ${network[pool_pair_key]}`) - writeArtifact(network, terra.config.chainID) - - if (pair.initGenerator) { - pools.push([pool_info.liquidity_token, pair.initGenerator.generatorAllocPoint]) - } - } - - // Deploy oracle - await uploadAndInitOracle(terra, wallet, pair, network, pool_pair_key) - } - - await setupPools(terra, wallet, pools) -} - -async function setupPools(terra: LCDClient, wallet: any, pools: string[][]) { - const network = readArtifact(terra.config.chainID) - - if (!network.generatorAddress) { - throw new Error("Please deploy the generator contract") - } - - if (pools.length > 0) { - let active_pool_length = await queryContract(terra, network.generatorAddress, { active_pool_length: {} }) - if (active_pool_length == 0) { - console.log("Setup pools for the generator...") - await executeContract(terra, wallet, network.generatorAddress, { - setup_pools: { - pools: pools - } - }) - } else { - console.log("You are cannot setup new pools because the generator has %s active pools already.", active_pool_length) - } - } -} - -async function main() { - const { terra, wallet } = newClient() - console.log(`chainID: ${terra.config.chainID} wallet: ${wallet.key.accAddress}`) - const network = readArtifact(terra.config.chainID) - console.log('network:', network) - - if (!network.tokenAddress) { - throw new Error("Token address is not set, create ASTRO token first") - } - - if (!network.factoryAddress) { - throw new Error("Factory address is not set, deploy factory first") - } - - await createPools(terra, wallet) - console.log('FINISH') -} - -await main() diff --git a/scripts/deploy_token.ts b/scripts/deploy_token.ts deleted file mode 100644 index 32d108908..000000000 --- a/scripts/deploy_token.ts +++ /dev/null @@ -1,77 +0,0 @@ -import 'dotenv/config' -import { - newClient, - writeArtifact, - readArtifact, - deployContract, - uploadContract, queryContract, -} from './helpers.js' -import { join } from 'path' -import { chainConfigs } from "./types.d/chain_configs.js"; -import { strictEqual } from "assert"; - -const ARTIFACTS_PATH = '../artifacts' - -// This script is mainly used for test purposes to deploy a token for further pool deployment - -async function main() { - const { terra, wallet } = newClient() - console.log(`chainID: ${terra.config.chainID} wallet: ${wallet.key.accAddress}`) - - if (!chainConfigs.generalInfo.multisig) { - throw new Error("Set the proper owner multisig for the contracts") - } - - let network = readArtifact(terra.config.chainID) - - if (!network.tokenCodeID) { - network.tokenCodeID = await uploadContract(terra, wallet, join(ARTIFACTS_PATH, 'astroport_token.wasm')!) - writeArtifact(network, terra.config.chainID) - console.log(`Token codeId: ${network.tokenCodeID}`) - } - - let msg = { - admin: chainConfigs.generalInfo.multisig, - initMsg: { - name: "Test 1", - symbol: "TEST-T", - decimals: 6, - initial_balances: [ - { - address: chainConfigs.generalInfo.multisig, - amount: "1000000000000000" - } - ], - mint: { - minter: chainConfigs.generalInfo.multisig - } - }, - label: "Test token" - }; - - console.log(`Deploying Token ${msg.initMsg.symbol}...`) - let resp = await deployContract( - terra, - wallet, - wallet.key.accAddress, - join(ARTIFACTS_PATH, 'astroport_token.wasm'), - msg.initMsg, - msg.label, - ) - - // @ts-ignore - let tokenAddress: string = resp.shift().shift() - console.log("Token address:", tokenAddress) - console.log(await queryContract(terra, tokenAddress, { token_info: {} })) - console.log(await queryContract(terra, tokenAddress, { minter: {} })) - - for (let i = 0; i < msg.initMsg.initial_balances.length; i++) { - let balance = await queryContract(terra, tokenAddress, { balance: { address: msg.initMsg.initial_balances[i].address } }) - strictEqual(balance.balance, msg.initMsg.initial_balances[i].amount) - } - - writeArtifact(network, terra.config.chainID) - console.log('FINISH') -} - -await main() diff --git a/scripts/helpers.ts b/scripts/helpers.ts deleted file mode 100644 index 386734e5d..000000000 --- a/scripts/helpers.ts +++ /dev/null @@ -1,335 +0,0 @@ -import 'dotenv/config' -import { - Coin, - Coins, - isTxError, - LCDClient, - LocalTerra, - MnemonicKey, - Msg, - MsgExecuteContract, - MsgInstantiateContract, - MsgMigrateContract, - MsgStoreCode, - MsgUpdateContractAdmin, Tx, - Wallet -} from '@terra-money/terra.js'; -import { - readFileSync, - writeFileSync, -} from 'fs' -import path from 'path' -import { CustomError } from 'ts-custom-error' - -import { APIParams } from "@terra-money/terra.js/dist/client/lcd/APIRequester"; -import fs from "fs"; -import https from "https"; - -export const ARTIFACTS_PATH = '../artifacts' - -export function getRemoteFile(file: any, url: any) { - let localFile = fs.createWriteStream(path.join(ARTIFACTS_PATH, `${file}.json`)); - - https.get(url, (res) => { - res.pipe(localFile); - res.on("finish", () => { - file.close(); - }) - }).on('error', (e) => { - console.error(e); - }); -} - -export function readArtifact(name: string = 'artifact', from: string = ARTIFACTS_PATH) { - try { - const data = readFileSync(path.join(from, `${name}.json`), 'utf8') - return JSON.parse(data) - } catch (e) { - return {} - } -} - -export interface Client { - wallet: Wallet - terra: LCDClient | LocalTerra -} - -export function newClient(): Client { - const client = {} - if (process.env.WALLET) { - client.terra = new LCDClient({ - URL: String(process.env.LCD_CLIENT_URL), - chainID: String(process.env.CHAIN_ID) - }) - client.wallet = recover(client.terra, process.env.WALLET) - } else { - client.terra = new LocalTerra() - client.wallet = (client.terra as LocalTerra).wallets.test1 - } - return client -} - -export function writeArtifact(data: object, name: string = 'artifact', to: string = ARTIFACTS_PATH) { - writeFileSync(path.join(to, `${name}.json`), JSON.stringify(data, null, 2)) -} - -// Tequila lcd is load balanced, so txs can't be sent too fast, otherwise account sequence queries -// may resolve an older state depending on which lcd you end up with. Generally 1000 ms is enough -// for all nodes to sync up. -let TIMEOUT = 1000 - -export function setTimeoutDuration(t: number) { - TIMEOUT = t -} - -export function getTimeoutDuration() { - return TIMEOUT -} - -export async function sleep(timeout: number) { - await new Promise(resolve => setTimeout(resolve, timeout)) -} - -export class TransactionError extends CustomError { - public constructor( - public code: string | number, - public txhash: string | undefined, - public rawLog: string, - ) { - super("transaction failed") - } -} - -export async function createTransaction(wallet: Wallet, msg: Msg) { - return await wallet.createAndSignTx({ msgs: [msg] }) -} - -export async function broadcastTransaction(terra: LCDClient, signedTx: Tx) { - const result = await terra.tx.broadcast(signedTx) - await sleep(TIMEOUT) - return result -} - -export async function performTransaction(terra: LCDClient, wallet: Wallet, msg: Msg) { - const signedTx = await createTransaction(wallet, msg) - const result = await broadcastTransaction(terra, signedTx) - if (isTxError(result)) { - throw new TransactionError(result.code, result.codespace, result.raw_log) - } - return result -} - -export async function uploadContract(terra: LCDClient, wallet: Wallet, filepath: string) { - const contract = readFileSync(filepath, 'base64'); - const uploadMsg = new MsgStoreCode(wallet.key.accAddress, contract); - let result = await performTransaction(terra, wallet, uploadMsg); - return Number(result.logs[0].eventsByType.store_code.code_id[0]) // code_id -} - -export async function instantiateContract(terra: LCDClient, wallet: Wallet, admin_address: string | undefined, codeId: number, msg: object, label: string) { - const instantiateMsg = new MsgInstantiateContract(wallet.key.accAddress, admin_address, codeId, msg, undefined, label); - let result = await performTransaction(terra, wallet, instantiateMsg) - return result.logs[0].events.filter(el => el.type == 'instantiate').map(x => x.attributes.filter(element => element.key == '_contract_address').map(x => x.value)); -} - -export async function executeContract(terra: LCDClient, wallet: Wallet, contractAddress: string, msg: object, coins?: Coins.Input) { - const executeMsg = new MsgExecuteContract(wallet.key.accAddress, contractAddress, msg, coins); - return await performTransaction(terra, wallet, executeMsg); -} - -export async function queryContract(terra: LCDClient, contractAddress: string, query: object): Promise { - return await terra.wasm.contractQuery(contractAddress, query) -} - -export async function queryContractInfo(terra: LCDClient, contractAddress: string): Promise { - return await terra.wasm.contractInfo(contractAddress) -} - -export async function queryCodeInfo(terra: LCDClient, codeID: number): Promise { - return await terra.wasm.codeInfo(codeID) -} - -export async function queryContractRaw(terra: LCDClient, end_point: string, params?: APIParams): Promise { - return await terra.apiRequester.getRaw(end_point, params) -} - -export async function deployContract(terra: LCDClient, wallet: Wallet, admin_address: string, filepath: string, initMsg: object, label: string) { - const codeId = await uploadContract(terra, wallet, filepath); - return await instantiateContract(terra, wallet, admin_address, codeId, initMsg, label); -} - -export async function migrate(terra: LCDClient, wallet: Wallet, contractAddress: string, newCodeId: number, msg: object) { - const migrateMsg = new MsgMigrateContract(wallet.key.accAddress, contractAddress, newCodeId, msg); - return await performTransaction(terra, wallet, migrateMsg); -} - -export function recover(terra: LCDClient, mnemonic: string) { - const mk = new MnemonicKey({ mnemonic: mnemonic }); - return terra.wallet(mk); -} - -export async function update_contract_admin( - terra: LCDClient, - wallet: Wallet, - contract_address: string, - admin_address: string -) { - let msg = new MsgUpdateContractAdmin( - wallet.key.accAddress, - admin_address, - contract_address - ); - - return await performTransaction(terra, wallet, msg); -} - -export function initialize(terra: LCDClient) { - const mk = new MnemonicKey(); - - console.log(`Account Address: ${mk.accAddress}`); - console.log(`MnemonicKey: ${mk.mnemonic}`); - - return terra.wallet(mk); -} - -export function toEncodedBinary(object: any) { - return Buffer.from(JSON.stringify(object)).toString('base64'); -} - -export function strToEncodedBinary(data: string) { - return Buffer.from(data).toString('base64'); -} - -export function toDecodedBinary(data: string) { - return Buffer.from(data, 'base64') -} - -export class NativeAsset { - denom: string; - amount?: string - - constructor(denom: string, amount?: string) { - this.denom = denom - this.amount = amount - } - - getInfo() { - return { - "native_token": { - "denom": this.denom, - } - } - } - - withAmount() { - return { - "info": this.getInfo(), - "amount": this.amount - } - } - - getDenom() { - return this.denom - } - - toCoin() { - return new Coin(this.denom, this.amount || "0") - } -} - -export class TokenAsset { - addr: string; - amount?: string - - constructor(addr: string, amount?: string) { - this.addr = addr - this.amount = amount - } - - getInfo() { - return { - "token": { - "contract_addr": this.addr - } - } - } - - withAmount() { - return { - "info": this.getInfo(), - "amount": this.amount - } - } - - toCoin() { - return null - } - - getDenom() { - return this.addr - } -} - -export class NativeSwap { - offer_denom: string; - ask_denom: string; - - constructor(offer_denom: string, ask_denom: string) { - this.offer_denom = offer_denom - this.ask_denom = ask_denom - } - - getInfo() { - return { - "native_swap": { - "offer_denom": this.offer_denom, - "ask_denom": this.ask_denom - } - } - } -} - -export class AstroSwap { - offer_asset_info: TokenAsset | NativeAsset; - ask_asset_info: TokenAsset | NativeAsset; - - constructor(offer_asset_info: TokenAsset | NativeAsset, ask_asset_info: TokenAsset | NativeAsset) { - this.offer_asset_info = offer_asset_info - this.ask_asset_info = ask_asset_info - } - - getInfo() { - return { - "astro_swap": { - "offer_asset_info": this.offer_asset_info.getInfo(), - "ask_asset_info": this.ask_asset_info.getInfo(), - } - } - } -} - -export function checkParams(network: any, required_params: any) { - for (const k in required_params) { - if (!network[required_params[k]]) { - throw "Set required param: " + required_params[k] - } - } -} - -export async function getLPTokenName(terra: LCDClient | LocalTerra, pool: any) { - let minter = await queryContract(terra, pool[0], { minter: {} }).then(res => res.minter); - let assetInfos = await queryContract(terra, minter, { pair: {} }).then(res => res.asset_infos); - let lpTokenName: string[] = []; - - for (const asset of assetInfos) { - if (asset.hasOwnProperty("token")) { - lpTokenName.push(await queryContract(terra, asset.token.contract_addr, { token_info: {} }).then(res => res.symbol)); - } else if (asset.hasOwnProperty("native_token")) { - lpTokenName.push(asset.native_token.denom.substring(0, 8)); - } else { - throw "Incompatible type of Asset!" - } - } - - return lpTokenName.join("-").substring(0, 17); -} \ No newline at end of file diff --git a/scripts/migrate.sh b/scripts/migrate.sh deleted file mode 100644 index bbaadc63e..000000000 --- a/scripts/migrate.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -set -e - -projectPath=$(cd "$(dirname "${0}")" && cd ../ && pwd) - -cd "$projectPath/scripts" && node --loader ts-node/esm migrate.ts diff --git a/scripts/migrate.ts b/scripts/migrate.ts deleted file mode 100644 index 5e2ec74c7..000000000 --- a/scripts/migrate.ts +++ /dev/null @@ -1,29 +0,0 @@ -import 'dotenv/config' -import { ARTIFACTS_PATH, migrate, newClient, readArtifact, uploadContract } from "./helpers.js" -import { join } from "path" - -async function main() { - const { terra, wallet } = newClient() - console.log(`chainID: ${terra.config.chainID} wallet: ${wallet.key.accAddress}`) - const network = readArtifact(terra.config.chainID) - console.log('Network:', network) - - console.log("Uploading..."); - - let config = { - contract_address: "address", - file_path: "astroport_contract.wasm", - message: {} - } - - const newCodeId = await uploadContract(terra, wallet, join(ARTIFACTS_PATH, config.file_path)!); - - console.log('Migrating...'); - const migrateResult = await migrate(terra, wallet, config.contract_address, newCodeId, config.message); - - console.log("Migration complete: "); - console.log(migrateResult); - -} - -main().catch(console.log) diff --git a/scripts/package-lock.json b/scripts/package-lock.json deleted file mode 100644 index 492e93f68..000000000 --- a/scripts/package-lock.json +++ /dev/null @@ -1,3862 +0,0 @@ -{ - "name": "scripts", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "scripts", - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "@terra-money/terra.js": "^3.1.5", - "bignumber.js": "^9.0.1", - "dotenv": "^8.2.0", - "isomorphic-fetch": "^3.0.0", - "slack-notify": "^2.0.2", - "ts-custom-error": "^3.2.0" - }, - "devDependencies": { - "eslint": "^7.24.0", - "ts-node": "^10.8.0", - "typescript": "^4.3.5" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", - "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@improbable-eng/grpc-web": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", - "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", - "dependencies": { - "browser-headers": "^0.4.1" - }, - "peerDependencies": { - "google-protobuf": "^3.14.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@terra-money/legacy.proto": { - "name": "@terra-money/terra.proto", - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-0.1.7.tgz", - "integrity": "sha512-NXD7f6pQCulvo6+mv6MAPzhOkUzRjgYVuHZE/apih+lVnPG5hDBU0rRYnOGGofwvKT5/jQoOENnFn/gioWWnyQ==", - "dependencies": { - "google-protobuf": "^3.17.3", - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, - "node_modules/@terra-money/terra.js": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@terra-money/terra.js/-/terra.js-3.1.5.tgz", - "integrity": "sha512-oggJGqNdi3xpDhZoNb49fLmNkl1oXy9wF6GnIRcirOiNdh90Q0CYA7YFMBMzutYg7TR1cyrUSKmKq0oq6Tz+UQ==", - "dependencies": { - "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7", - "@terra-money/terra.proto": "^2.1.0", - "axios": "^0.26.1", - "bech32": "^2.0.0", - "bip32": "^2.0.6", - "bip39": "^3.0.3", - "bufferutil": "^4.0.3", - "decimal.js": "^10.2.1", - "jscrypto": "^1.0.1", - "readable-stream": "^3.6.0", - "secp256k1": "^4.0.2", - "tmp": "^0.2.1", - "utf-8-validate": "^5.0.5", - "ws": "^7.5.5" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@terra-money/terra.proto": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-2.1.0.tgz", - "integrity": "sha512-rhaMslv3Rkr+QsTQEZs64FKA4QlfO0DfQHaR6yct/EovenMkibDEQ63dEL6yJA6LCaEQGYhyVB9JO9pTUA8ybw==", - "dependencies": { - "@improbable-eng/grpc-web": "^0.14.1", - "google-protobuf": "^3.17.3", - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "17.0.38", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.38.tgz", - "integrity": "sha512-5jY9RhV7c0Z4Jy09G+NIDTsCZ5G0L5n+Z+p+Y7t5VJHM30bgwzSjVtlcBxqAj+6L/swIlvtOSzr8rBk/aNyV2g==" - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - }, - "node_modules/bignumber.js": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", - "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==", - "engines": { - "node": "*" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bip32": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", - "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", - "dependencies": { - "@types/node": "10.12.18", - "bs58check": "^2.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "tiny-secp256k1": "^1.1.3", - "typeforce": "^1.11.5", - "wif": "^2.0.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/bip32/node_modules/@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" - }, - "node_modules/bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", - "dependencies": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - } - }, - "node_modules/bip39/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" - }, - "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "node_modules/browser-headers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/browser-headers/-/browser-headers-0.4.1.tgz", - "integrity": "sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==" - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "engines": { - "node": ">=10" - } - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/google-protobuf": { - "version": "3.20.1", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.20.1.tgz", - "integrity": "sha512-XMf1+O32FjYIV3CYu6Tuh5PNbfNEU5Xu22X+Xkdb/DUexFlCzhvv7d5Iirm4AOwn8lv4al1YvIhzGrg2j9Zfzw==" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jscrypto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/jscrypto/-/jscrypto-1.0.3.tgz", - "integrity": "sha512-lryZl0flhodv4SZHOqyb1bx5sKcJxj0VBo0Kzb4QMAg3L021IC9uGpl0RCZa+9KJwlRGSK2C80ITcwbe19OKLQ==", - "bin": { - "jscrypto": "bin/cli.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nan": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", - "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "hasInstallScript": true, - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slack-notify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/slack-notify/-/slack-notify-2.0.2.tgz", - "integrity": "sha512-i2PyfIpBz7gxfQqoc0qg4dtwcImFZDe173E4CBN8Sie+SZV6h0EVAsKCd+rvkuc2L6Z+1oQOOfrDXVouxkh1Jw==", - "engines": { - "node": ">=13.2.x" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/tiny-secp256k1": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz", - "integrity": "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==", - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.3.0", - "bn.js": "^4.11.8", - "create-hmac": "^1.1.7", - "elliptic": "^6.4.0", - "nan": "^2.13.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "node_modules/ts-custom-error": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.2.0.tgz", - "integrity": "sha512-cBvC2QjtvJ9JfWLvstVnI45Y46Y5dMxIaG1TDMGAD/R87hpvqFL+7LhvUDhnRCfOnx/xitollFWWvUKKKhbN0A==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/ts-node": { - "version": "10.8.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.0.tgz", - "integrity": "sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typeforce": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", - "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" - }, - "node_modules/typescript": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", - "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wif": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", - "integrity": "sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==", - "dependencies": { - "bs58check": "<3.0.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", - "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - } - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@improbable-eng/grpc-web": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", - "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", - "requires": { - "browser-headers": "^0.4.1" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "@terra-money/legacy.proto": { - "version": "npm:@terra-money/terra.proto@0.1.7", - "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-0.1.7.tgz", - "integrity": "sha512-NXD7f6pQCulvo6+mv6MAPzhOkUzRjgYVuHZE/apih+lVnPG5hDBU0rRYnOGGofwvKT5/jQoOENnFn/gioWWnyQ==", - "requires": { - "google-protobuf": "^3.17.3", - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, - "@terra-money/terra.js": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@terra-money/terra.js/-/terra.js-3.1.5.tgz", - "integrity": "sha512-oggJGqNdi3xpDhZoNb49fLmNkl1oXy9wF6GnIRcirOiNdh90Q0CYA7YFMBMzutYg7TR1cyrUSKmKq0oq6Tz+UQ==", - "requires": { - "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7", - "@terra-money/terra.proto": "^2.1.0", - "axios": "^0.26.1", - "bech32": "^2.0.0", - "bip32": "^2.0.6", - "bip39": "^3.0.3", - "bufferutil": "^4.0.3", - "decimal.js": "^10.2.1", - "jscrypto": "^1.0.1", - "readable-stream": "^3.6.0", - "secp256k1": "^4.0.2", - "tmp": "^0.2.1", - "utf-8-validate": "^5.0.5", - "ws": "^7.5.5" - } - }, - "@terra-money/terra.proto": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-2.1.0.tgz", - "integrity": "sha512-rhaMslv3Rkr+QsTQEZs64FKA4QlfO0DfQHaR6yct/EovenMkibDEQ63dEL6yJA6LCaEQGYhyVB9JO9pTUA8ybw==", - "requires": { - "@improbable-eng/grpc-web": "^0.14.1", - "google-protobuf": "^3.17.3", - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "@types/node": { - "version": "17.0.38", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.38.tgz", - "integrity": "sha512-5jY9RhV7c0Z4Jy09G+NIDTsCZ5G0L5n+Z+p+Y7t5VJHM30bgwzSjVtlcBxqAj+6L/swIlvtOSzr8rBk/aNyV2g==" - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "requires": { - "follow-redirects": "^1.14.8" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - }, - "bignumber.js": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", - "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bip32": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", - "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", - "requires": { - "@types/node": "10.12.18", - "bs58check": "^2.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "tiny-secp256k1": "^1.1.3", - "typeforce": "^1.11.5", - "wif": "^2.0.6" - }, - "dependencies": { - "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" - } - } - }, - "bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", - "requires": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - }, - "dependencies": { - "@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" - } - } - }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "browser-headers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/browser-headers/-/browser-headers-0.4.1.tgz", - "integrity": "sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==" - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "requires": { - "base-x": "^3.0.2" - } - }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "google-protobuf": { - "version": "3.20.1", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.20.1.tgz", - "integrity": "sha512-XMf1+O32FjYIV3CYu6Tuh5PNbfNEU5Xu22X+Xkdb/DUexFlCzhvv7d5Iirm4AOwn8lv4al1YvIhzGrg2j9Zfzw==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "requires": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jscrypto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/jscrypto/-/jscrypto-1.0.3.tgz", - "integrity": "sha512-lryZl0flhodv4SZHOqyb1bx5sKcJxj0VBo0Kzb4QMAg3L021IC9uGpl0RCZa+9KJwlRGSK2C80ITcwbe19OKLQ==" - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nan": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", - "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "requires": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "slack-notify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/slack-notify/-/slack-notify-2.0.2.tgz", - "integrity": "sha512-i2PyfIpBz7gxfQqoc0qg4dtwcImFZDe173E4CBN8Sie+SZV6h0EVAsKCd+rvkuc2L6Z+1oQOOfrDXVouxkh1Jw==" - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "tiny-secp256k1": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz", - "integrity": "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==", - "requires": { - "bindings": "^1.3.0", - "bn.js": "^4.11.8", - "create-hmac": "^1.1.7", - "elliptic": "^6.4.0", - "nan": "^2.13.2" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "ts-custom-error": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.2.0.tgz", - "integrity": "sha512-cBvC2QjtvJ9JfWLvstVnI45Y46Y5dMxIaG1TDMGAD/R87hpvqFL+7LhvUDhnRCfOnx/xitollFWWvUKKKhbN0A==" - }, - "ts-node": { - "version": "10.8.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.0.tgz", - "integrity": "sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - } - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typeforce": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", - "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" - }, - "typescript": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", - "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wif": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", - "integrity": "sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==", - "requires": { - "bs58check": "<3.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", - "requires": {} - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - } - } -} \ No newline at end of file diff --git a/scripts/package.json b/scripts/package.json deleted file mode 100644 index 8bb0a5db1..000000000 --- a/scripts/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "scripts", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "type": "module", - "scripts": { - "start": "npm run build-env && npm run build-app", - "build-app": "bash build_app.sh", - "build-env": "bash build_env.sh", - "build-artifacts": "bash build_release.sh", - "migrate": "bash migrate.sh" - }, - "dependencies": { - "@terra-money/terra.js": "^3.1.5", - "bignumber.js": "^9.0.1", - "dotenv": "^8.2.0", - "isomorphic-fetch": "^3.0.0", - "slack-notify": "^2.0.2", - "ts-custom-error": "^3.2.0" - }, - "devDependencies": { - "eslint": "^7.24.0", - "ts-node": "^10.8.0", - "typescript": "^4.3.5" - } -} \ No newline at end of file diff --git a/scripts/pools_incentives.ts b/scripts/pools_incentives.ts deleted file mode 100644 index 7f36ef9ed..000000000 --- a/scripts/pools_incentives.ts +++ /dev/null @@ -1,108 +0,0 @@ -import {getLPTokenName, newClient, queryContract, readArtifact, toEncodedBinary} from "./helpers.js"; -import {LCDClient, LocalTerra} from "@terra-money/terra.js"; -import { chainConfigs } from "./types.d/chain_configs.js"; - -type IncentiveInfo = { - lp_token_name: string, - lp_token_address: string, - old_alloc_points: string, - new_alloc_points?: string, - diff_amount?: string, -} - -async function checkDiffIncentives(terra: LCDClient | LocalTerra, network: any, currentIncentives: [], newIncentives: []) { - let diffPoolsIncentives: IncentiveInfo[] = []; - - for ( let currentIncentive of currentIncentives ) { - let lpTokenName = await getLPTokenName(terra, currentIncentive); - - diffPoolsIncentives.push({ - lp_token_name: `${lpTokenName}`, - lp_token_address: `${currentIncentive[0]}`, - old_alloc_points: `${currentIncentive[1]}`, - new_alloc_points: "Not found!", - diff_amount: "Not found!", - }); - } - - for ( let newIncentive of newIncentives ) { - let lpTokenName = await getLPTokenName(terra, newIncentive); - let isAlreadyExistIncentive = false; - - for ( const {index, incentives} of diffPoolsIncentives.map((incentives, index) => ({incentives, index})) ) { - if ( newIncentive[0] == incentives['lp_token_address'] ) { - if ( newIncentive[1] != incentives['old_alloc_points'] ) { - diffPoolsIncentives[index]['new_alloc_points'] = newIncentive[1]; - diffPoolsIncentives[index]['diff_amount'] = String(Number(newIncentive[1]) - Number(incentives['old_alloc_points'])); - } else { - if (index > -1) { - diffPoolsIncentives.splice(index, 1); - } - } - isAlreadyExistIncentive = true; - } - } - - if (!isAlreadyExistIncentive) { - diffPoolsIncentives.push({ - lp_token_name: `${lpTokenName}`, - lp_token_address: `${newIncentive[0]}`, - old_alloc_points: "Not found!", - new_alloc_points: `${newIncentive[1]}`, - diff_amount: `${newIncentive[1]}`, - }); - } - } - - return diffPoolsIncentives -} - -function createProposal(executable_msg: any, order: string, contract_addr: string){ - console.log(`Internal proposal message:\n${JSON.stringify(executable_msg, null, 2)}\n`) - - let binary = toEncodedBinary(executable_msg); - console.log(`Executable message in binary:\n${binary}\n`) - - let proposal = { - order: order, - msg: { - wasm: { - execute: { - contract_addr: contract_addr, - msg: binary, - funds: [] - } - } - } - }; - - console.log(`Final proposal message:\n${JSON.stringify([proposal], null, 2)}`); - return proposal -} - -async function main() { - const { terra } = newClient(); - console.log(`chainID: ${terra.config.chainID}`); - - const network = readArtifact(terra.config.chainID); - - if (chainConfigs.generator.new_incentives_pools) { - let active_pools = await queryContract(terra, network.generatorAddress, {config: {}}).then(res => res.active_pools); - let diff_pools_incentives = await checkDiffIncentives(terra, network, active_pools, chainConfigs.generator.new_incentives_pools); - - if (diff_pools_incentives.length > 0 ) { - console.table(diff_pools_incentives); - createProposal({ - setup_pools: { - pools: chainConfigs.generator.new_incentives_pools - } - }, "1", network.generatorAddress); - } else { - console.log("New pools incentives are the same."); - } - } else { - throw "New suggested incentives pools not found!" - } -} - -main().catch(console.error) \ No newline at end of file diff --git a/scripts/tests/lib.ts b/scripts/tests/lib.ts deleted file mode 100644 index 8f4a57e3c..000000000 --- a/scripts/tests/lib.ts +++ /dev/null @@ -1,332 +0,0 @@ -import { - newClient, - readArtifact, - queryContract, - Client, - toEncodedBinary, - executeContract, - NativeAsset, - TokenAsset, - NativeSwap, - AstroSwap, - performTransaction -} from "../helpers.js" -import {LCDClient, Coin, MsgExecuteContract, Numeric, Coins} from '@terra-money/terra.js'; -import util from 'util'; - -export class Astroport { - terra: LCDClient; - wallet: any; - - constructor(terra: any, wallet: any) { - this.terra = terra - this.wallet = wallet - } - - async getNativeBalance(address: string, denom: string) { - let balances = await this.terra.bank.balance(address) - let coins: Coins = (balances) - return coins.get(denom) - } - - async getTokenBalance(token: string, address: string) { - let resp = await queryContract(this.terra, token, { balance: { address: address } }) - return parseInt(resp.balance) - } - - staking(addr: string) { - return new Staking(this.terra, this.wallet, addr); - } - - generator(addr: string) { - return new Generator(this.terra, this.wallet, addr); - } - - pair(addr: string) { - return new Pair(this.terra, this.wallet, addr); - } - - maker(addr: string) { - return new Maker(this.terra, this.wallet, addr); - } - - factory(addr: string) { - return new Factory(this.terra, this.wallet, addr); - } - - router(addr: string) { - return new Router(this.terra, this.wallet, addr); - } -} - -class Pair { - terra: any; - wallet: any; - addr: string; - - constructor(terra: any, wallet: any, addr:string) { - this.terra = terra - this.wallet = wallet - this.addr = addr; - } - - async queryPool() { - return await queryContract(this.terra, this.addr, {pool: {}}) - } - - async queryPair() { - return await queryContract(this.terra, this.addr, {pair: {}}) - } - - async queryShare(amount: string) { - return await queryContract(this.terra, this.addr, {share: {amount}}) - } - - async swapNative(offer_asset: NativeAsset) { - await executeContract(this.terra, this.wallet, this.addr, { - swap: { - offer_asset: offer_asset.withAmount() - } - }, [offer_asset.toCoin()]) - } - - async swapCW20(token_addr: string, amount: string) { - let msg = Buffer.from(JSON.stringify({swap: {}})).toString("base64"); - - await executeContract(this.terra, this.wallet, token_addr, { - send: { - contract: this.addr, - amount, - msg - } - }) - } - - async provideLiquidity(a1: NativeAsset | TokenAsset, a2: NativeAsset | TokenAsset) { - let msg = { - "provide_liquidity": { - "assets": [a1.withAmount(), a2.withAmount()], - } - } - - let coins = []; - let assets = [a1, a2] - for (const key in assets) { - const asset = assets[key]; - - // send tokens - if (asset instanceof NativeAsset) { - coins.push(asset.toCoin()) - } - - // set allowance - if (asset instanceof TokenAsset) { - console.log('Setting allowance for contract') - await executeContract(this.terra, this.wallet, asset.addr, { - "increase_allowance": { - "spender": this.addr, - "amount": asset.amount, - "expires": { - "never": {} - } - } - }) - } - } - - await executeContract(this.terra, this.wallet, this.addr, msg, coins) - } - - async withdrawLiquidity(lp_addr: string, amount: string) { - let msg = Buffer.from(JSON.stringify({withdraw_liquidity: {}})).toString("base64"); - - await executeContract(this.terra, this.wallet, lp_addr, { - send: { - contract: this.addr, - amount, - msg - } - }) - } -} - -class Staking { - terra: any; - wallet: any; - addr: string; - - constructor(terra: any, wallet: any, addr:string) { - this.terra = terra - this.wallet = wallet - this.addr = addr; - } - - async stakeAstro(astro_addr: string, amount: string) { - let msg = Buffer.from(JSON.stringify({enter: {}})).toString("base64"); - - await executeContract(this.terra, this.wallet, astro_addr, { - send: { - contract: this.addr, - amount, - msg - } - }) - } - - async unstakeAstro(xastro_addr: string, amount: string) { - let msg = Buffer.from(JSON.stringify({leave: {}})).toString("base64"); - - await executeContract(this.terra, this.wallet, xastro_addr, { - send: { - contract: this.addr, - amount, - msg - } - }) - } -} - -class Maker { - terra: any; - wallet: any; - addr: string; - - constructor(terra: any, wallet: any, addr:string) { - this.terra = terra - this.wallet = wallet - this.addr = addr; - } - - async queryConfig() { - return await queryContract(this.terra, this.addr, {config: {}}) - } - - async queryBalances(asset_infos: (TokenAsset|NativeAsset)[]) { - let resp = await queryContract(this.terra, this.addr, {balances: {assets: asset_infos.map(x => x.getInfo())}}); - return resp.balances; - } - - async collect(pair_addresses: string[]) { - return await executeContract(this.terra, this.wallet, this.addr, { - collect: { - pair_addresses, - } - }) - } -} - -class Factory { - terra: any; - wallet: any; - addr: string; - - constructor(terra: any, wallet: any, addr:string) { - this.terra = terra - this.wallet = wallet - this.addr = addr; - } - - async queryFeeInfo(pair_type: string) { - var pt: any = {}; - pt[pair_type] = {}; - - let resp = await queryContract(this.terra, this.addr, {fee_info: {pair_type: pt}}); - return resp - } -} - -export class Router { - terra: any; - wallet: any; - addr: string; - - constructor(terra: any, wallet: any, addr:string) { - this.terra = terra - this.wallet = wallet - this.addr = addr; - } - - async queryConfig() { - return await queryContract(this.terra, this.addr, {config: {}}) - } - - async assertMinimumReceive(asset_info: TokenAsset | NativeAsset, prev_balance: string, minimum_receive: string, receiver: string) { - return await executeContract(this.terra, this.wallet, this.addr, { - "assert_minimum_receive": { - "asset_info": asset_info.getInfo(), - "minimum_receive": minimum_receive, - "prev_balance": prev_balance, - "receiver": receiver - } - }); - } - - async swapOperationsCW20(token_addr: string, amount: string, minimum_receive: string, operations: (NativeSwap|AstroSwap)[], to?: string) { - let msg = Buffer.from(JSON.stringify({ - execute_swap_operations: { - operations: operations.map(value => value.getInfo()), - minimum_receive: minimum_receive, - to: to - }})).toString("base64"); - - return await executeContract(this.terra, this.wallet, token_addr, { - send: { - contract: this.addr, - amount, - msg - } - }) - } - - async swapOperations(operations: (NativeSwap | AstroSwap)[], coins: Coin, minimum_receive?: string, to?: string) { - return await executeContract(this.terra, this.wallet, this.addr, { - "execute_swap_operations": { - "operations": operations.map(value => value.getInfo()), - "minimum_receive": minimum_receive, - "to": to - } - }, [coins]); - } -} - -class Generator { - terra: any; - wallet: any; - addr: string; - - constructor(terra: any, wallet: any, addr:string) { - this.terra = terra - this.wallet = wallet - this.addr = addr; - } - - async deposit(lp_addr: string, amount: string) { - let msg = Buffer.from(JSON.stringify({deposit: {}})).toString("base64"); - - await executeContract(this.terra, this.wallet, lp_addr, { - send: { - contract: this.addr, - amount, - msg - } - }) - } - - async withdraw(lp_addr: string, amount: string) { - await executeContract(this.terra, this.wallet, this.addr, { - withdraw: { - lp_token: lp_addr, - amount: amount, - } - }) - } - - async queryDeposit(lp_token: string, user: string) { - return await queryContract(this.terra, this.addr, { - deposit: { - "lp_token": lp_token, - "user": user, - } - }) - } -} \ No newline at end of file diff --git a/scripts/tests/test_generator.ts b/scripts/tests/test_generator.ts deleted file mode 100644 index 1d8ee80d6..000000000 --- a/scripts/tests/test_generator.ts +++ /dev/null @@ -1,68 +0,0 @@ -import {Astroport, Generator} from "./lib.js"; -import {provideLiquidity} from "./test_router.js" -import { - NativeAsset, - newClient, - readArtifact, TokenAsset, -} from "../helpers.js" - -async function main() { - const cl = newClient() - const network = readArtifact(cl.terra.config.chainID) - - const astroport = new Astroport(cl.terra, cl.wallet); - console.log(`chainID: ${cl.terra.config.chainID} wallet: ${cl.wallet.key.accAddress}`) - - // 1. Provide ASTRO-UST liquidity - const liquidity_amount = 5000000; - await provideLiquidity(network, astroport, cl.wallet.key.accAddress, network.poolAstroUst, [ - new NativeAsset('uusd', liquidity_amount.toString()), - new TokenAsset(network.tokenAddress, liquidity_amount.toString()) - ]) - - // 2. Provide LUNA-UST liquidity - await provideLiquidity(network, astroport, cl.wallet.key.accAddress, network.poolLunaUst, [ - new NativeAsset('uluna', liquidity_amount.toString()), - new NativeAsset('uusd', liquidity_amount.toString()) - ]) - - // 3. Fetch the pool balances - let lpTokenAstroUst = await astroport.getTokenBalance(network.lpTokenAstroUst, cl.wallet.key.accAddress); - let lpTokenLunaUst = await astroport.getTokenBalance(network.lpTokenLunaUst, cl.wallet.key.accAddress); - - console.log(`AstroUst balance: ${lpTokenAstroUst}`) - console.log(`LunaUst balance: ${lpTokenLunaUst}`) - - const generator = astroport.generator(network.generatorAddress); - console.log("generator config: ", await generator.queryConfig()); - - // 4. Register generators - await generator.registerGenerator([ - [network.lpTokenAstroUst, "24528"], - [network.lpTokenLunaUst, "24528"], - ]) - - // 4. Deposit to generator - await generator.deposit(network.lpTokenAstroUst, "623775") - await generator.deposit(network.lpTokenLunaUst, "10000000") - - // 5. Fetch the deposit balances - console.log(`deposited: ${await generator.queryDeposit(network.lpTokenAstroUst, cl.wallet.key.accAddress)}`) - console.log(`deposited: ${await generator.queryDeposit(network.lpTokenLunaUst, cl.wallet.key.accAddress)}`) - - // 6. Find checkpoint generators limit for user boost - await findCheckpointGeneratorsLimit(generator, network) -} - -async function findCheckpointGeneratorsLimit(generator: Generator, network: any) { - let generators = [] - for(let i = 0; i < 40; i++) { - generators.push(network.lpTokenAstroUst) - generators.push(network.lpTokenLunaUst) - } - - await generator.checkpointUserBoost(generators) - -} - -main().catch(console.log) diff --git a/scripts/tests/test_router.ts b/scripts/tests/test_router.ts deleted file mode 100644 index 2f4cca7ed..000000000 --- a/scripts/tests/test_router.ts +++ /dev/null @@ -1,162 +0,0 @@ -import {strictEqual} from "assert" -import {Astroport, Router} from "./lib.js"; -import { - NativeAsset, - newClient, - readArtifact, - TokenAsset, - NativeSwap, - AstroSwap -} from "../helpers.js" -import util from "util"; -import {Coin } from "@terra-money/terra.js"; - -async function main() { - const cl = newClient() - const network = readArtifact(cl.terra.config.chainID) - - const astroport = new Astroport(cl.terra, cl.wallet); - console.log(`chainID: ${cl.terra.config.chainID} wallet: ${cl.wallet.key.accAddress}`) - - const router = astroport.router(network.routerAddress); - console.log("router config: ", await router.queryConfig()); - - // 1. Provide ASTRO-UST liquidity - const liquidity_amount = 10000000; - await provideLiquidity(network, astroport, cl.wallet.key.accAddress, network.poolAstroUst, [ - new NativeAsset('uusd', liquidity_amount.toString()), - new TokenAsset(network.tokenAddress, liquidity_amount.toString()) - ]) - - // 2. Provide LUNA-UST liquidity - await provideLiquidity(network, astroport, cl.wallet.key.accAddress, network.poolLunaUst, [ - new NativeAsset('uluna', liquidity_amount.toString()), - new NativeAsset('uusd', liquidity_amount.toString()) - ]) - - // 3. Fetch the pool balances - let lpTokenAstroUst = await astroport.getTokenBalance(network.lpTokenAstroUst, cl.wallet.key.accAddress); - let lpTokenLunaUst = await astroport.getTokenBalance(network.lpTokenLunaUst, cl.wallet.key.accAddress); - - console.log(`AstroUst balance: ${lpTokenAstroUst}`) - console.log(`LunaUst balance: ${lpTokenLunaUst}`) - - // 4. Assert minimum receive - await assertMinimumReceive(router, cl.wallet.key.accAddress); - - // 5. Swap tokens - await swapFromCW20(router, network, astroport, cl.wallet.key.accAddress); - - // 6. Swap native tokens - await swapFromNative(router, network, astroport, cl.wallet.key.accAddress); -} - -async function assertMinimumReceive(router: Router, accAddress: string) { - const swap_amount = 1000; - try { - let minReceive = await router.assertMinimumReceive( - new NativeAsset("uluna", swap_amount.toString()), "1000", "10000000000000000", accAddress); - console.log("Assert minimum receive: ", util.inspect(minReceive, false, null, true)); - } catch (e: any) { - console.log("assertMinimumReceive status code: ", e.response.status); - console.log("assertMinimumReceive data: ", e.response.data); - } -} - -async function swapFromCW20(router: Router, network: any, astroport: Astroport, accAddress: string) { - // to get an error, set the minimum amount to be greater than the exchange amount - const swap_amount = 1000; - let min_receive = swap_amount + 1; - try { - let resp = await router.swapOperationsCW20(network.tokenAddress, swap_amount.toString(), min_receive.toString(), - [new AstroSwap(new TokenAsset(network.tokenAddress), new NativeAsset("uusd"))] - ); - console.log("swap: ", util.inspect(resp, false, null, true)); - } catch (e: any) { - console.log("swapOperationsCW20 status code: ", e.response.status); - console.log("swapOperationsCW20 data: ", e.response.data); - } - - let astro_balance_before_swap = await astroport.getTokenBalance(network.tokenAddress, accAddress); - console.log(`astro balance before swap: ${astro_balance_before_swap}`) - - let uluna_balance_before_swap = await astroport.getNativeBalance(accAddress, "uluna"); - console.log(`uluna balance before swap: ${uluna_balance_before_swap}`) - - // swap with the correct parameters - try { - let resp = await router.swapOperationsCW20(network.tokenAddress, swap_amount.toString(), "1", - [ - new AstroSwap(new TokenAsset(network.tokenAddress), new NativeAsset("uusd")), - new NativeSwap("uusd", "uluna"), - ] - ); - console.log("swap: ", util.inspect(resp, false, null, true)); - } catch (e: any) { - console.log("swapOperationsCW20 status code: ", e.response.status); - console.log("swapOperationsCW20 data: ", e.response.data); - } - - let astro_balance_after_swap = await astroport.getTokenBalance(network.tokenAddress, accAddress); - console.log(`astro balance after swap: ${astro_balance_after_swap}`); - strictEqual(astro_balance_before_swap, astro_balance_after_swap + swap_amount); - - let swapRate = await astroport.terra.market.swapRate(new Coin("uusd", swap_amount), "uluna"); - console.log("swapRate: ", swapRate); - - let uluna_balance_after_swap = await astroport.getNativeBalance(accAddress, "uluna"); - console.log(`uluna balance after swap: ${uluna_balance_after_swap}`); - - strictEqual(uluna_balance_before_swap?.amount.toNumber(), - uluna_balance_after_swap?.add(swapRate).amount.toNumber()); -} - -async function swapFromNative(router: Router, network: any, astroport: Astroport, accAddress: string) { - const swap_amount = 1000; - let uluna_balance_before_swap = await astroport.getNativeBalance(accAddress, "uluna"); - console.log(`uluna balance before swap: ${uluna_balance_before_swap}`); - - let astro_balance_before_swap = await astroport.getTokenBalance(network.tokenAddress, accAddress); - console.log(`astroBalance before swap: ${astro_balance_before_swap}`); - - try { - let resp = await router.swapOperations([ - new NativeSwap("uluna", "uusd"), - new AstroSwap(new NativeAsset("uusd"), new TokenAsset(network.tokenAddress)),], - new Coin("uluna", swap_amount) - ); - console.log(util.inspect(resp, false, null, true)) - } catch (e: any) { - console.log("swapOperations status code: ", e.response.status); - console.log("swapOperations data: ", e.response.data); - } - - let uluna_balance_after_swap = await astroport.getNativeBalance(accAddress, "uluna"); - console.log(`uluna balance after swap: ${uluna_balance_after_swap}`); - strictEqual(uluna_balance_before_swap?.amount.toNumber(), uluna_balance_after_swap?.sub(swap_amount).amount.toNumber()); - - let swapRate = await astroport.terra.market.swapRate(new Coin("uluna", swap_amount), "uusd"); - console.log("swapRate: ", swapRate); - - let astro_balance_after_swap = await astroport.getTokenBalance(network.tokenAddress, accAddress); - console.log(`astro balance after swap: ${astro_balance_after_swap}`); - - strictEqual(astro_balance_before_swap, astro_balance_after_swap + swapRate.amount.toNumber()); -} - -async function provideLiquidity(network: any, astroport: Astroport, accAddress: string, poolAddress: string, assets: (NativeAsset|TokenAsset)[]) { - const pool = astroport.pair(poolAddress); - let pair_info = await pool.queryPair(); - console.log(util.inspect(pair_info, false, null, true)); - - // Provide liquidity to swap - await pool.provideLiquidity(assets[0], assets[1]) - - let astro_balance = await astroport.getTokenBalance(network.tokenAddress, accAddress); - let xastro_balance = await astroport.getTokenBalance(network.xastroAddress, accAddress); - - console.log(`ASTRO balance: ${astro_balance}`) - console.log(`xASTRO balance: ${xastro_balance}`) -} - -main().catch(console.log) diff --git a/scripts/tests/tests.ts b/scripts/tests/tests.ts deleted file mode 100644 index 114e06a1f..000000000 --- a/scripts/tests/tests.ts +++ /dev/null @@ -1,154 +0,0 @@ -import {strictEqual} from "assert" -import {Astroport} from "./lib.js"; -import { - NativeAsset, - newClient, - readArtifact, - TokenAsset, -} from "../helpers.js" - - -async function main() { - const { terra, wallet } = newClient() - const network = readArtifact(terra.config.chainID) - - const astroport = new Astroport(terra, wallet); - console.log(`chainID: ${terra.config.chainID} wallet: ${wallet.key.accAddress}`) - - // 1. Provide liquidity - await provideLiquidity(network, astroport, wallet.key.accAddress) - - // 2. Stake ASTRO - await stake(network, astroport, wallet.key.accAddress) - - // 3. Swap tokens in pool - await swap(network, astroport, wallet.key.accAddress) - - // 4. Collect Maker fees - await collectFees(network, astroport, wallet.key.accAddress) - - // 5. Withdraw liquidity - await withdrawLiquidity(network, astroport, wallet.key.accAddress) - - // 6. Unstake ASTRO - await unstake(network, astroport, wallet.key.accAddress) -} - -async function provideLiquidity(network: any, astroport: Astroport, accAddress: string) { - const liquidity_amount = 100000000; - const pool_uust_astro = astroport.pair(network.poolAstroUst); - - // Provide liquidity in order to swap - await pool_uust_astro.provideLiquidity(new NativeAsset('uusd', liquidity_amount.toString()), new TokenAsset(network.tokenAddress, liquidity_amount.toString())) - - let astro_balance = await astroport.getTokenBalance(network.tokenAddress, accAddress); - let xastro_balance = await astroport.getTokenBalance(network.xastroAddress, accAddress); - - console.log(`ASTRO balance: ${astro_balance}`) - console.log(`xASTRO balance: ${xastro_balance}`) -} - -async function withdrawLiquidity(network: any, astroport: Astroport, accAddress: string) { - const pool_uust_astro = astroport.pair(network.poolAstroUst); - - let pair_info = await pool_uust_astro.queryPair(); - let lp_token_amount = await astroport.getTokenBalance(pair_info.liquidity_token, accAddress); - - // Withdraw liquidity - await pool_uust_astro.withdrawLiquidity(pair_info.liquidity_token, lp_token_amount.toString()); - - let astro_balance = await astroport.getTokenBalance(network.tokenAddress, accAddress); - let xastro_balance = await astroport.getTokenBalance(network.xastroAddress, accAddress); - - console.log(`ASTRO balance: ${astro_balance}`) - console.log(`xASTRO balance: ${xastro_balance}`) -} - -async function stake(network: any, astroport: Astroport, accAddress: string) { - let astro_balance = await astroport.getTokenBalance(network.tokenAddress, accAddress); - let xastro_balance = await astroport.getTokenBalance(network.xastroAddress, accAddress); - - const staking = astroport.staking(network.stakingAddress); - const staking_amount = 100000; - - console.log(`Staking ${staking_amount} ASTRO`) - await staking.stakeAstro(network.tokenAddress, staking_amount.toString()) - - let new_astro_balance = await astroport.getTokenBalance(network.tokenAddress, accAddress); - let new_xastro_balance = await astroport.getTokenBalance(network.xastroAddress, accAddress); - - console.log(`ASTRO balance: ${new_astro_balance}`) - console.log(`xASTRO balance: ${new_xastro_balance}`) - - strictEqual(true, new_astro_balance < astro_balance); - strictEqual(true, new_xastro_balance > xastro_balance); -} - -async function unstake(network: any, astroport: Astroport, accAddress: string) { - let astro_balance = await astroport.getTokenBalance(network.tokenAddress, accAddress); - let xastro_balance = await astroport.getTokenBalance(network.xastroAddress, accAddress); - - const staking = astroport.staking(network.stakingAddress); - - console.log(`Unstaking ${xastro_balance} xASTRO`) - await staking.unstakeAstro(network.xastroAddress, xastro_balance.toString()) - - let final_astro_balance = await astroport.getTokenBalance(network.tokenAddress, accAddress); - let final_xastro_balance = await astroport.getTokenBalance(network.xastroAddress, accAddress); - - console.log(`ASTRO balance: ${final_astro_balance}`) - console.log(`xASTRO balance: ${final_xastro_balance}`) - - strictEqual(true, final_astro_balance >= astro_balance); - strictEqual(final_xastro_balance, 0); -} - -async function swap(network: any, astroport: Astroport, accAddress: string) { - const pool_uust_astro = astroport.pair(network.poolAstroUst); - const factory = astroport.factory(network.factoryAddress); - const swap_amount = 10000; - - let pair_info = await pool_uust_astro.queryPair(); - - let astro_balance = await astroport.getTokenBalance(network.tokenAddress, accAddress); - let xastro_balance = await astroport.getTokenBalance(network.xastroAddress, accAddress); - - console.log(`ASTRO balance: ${astro_balance}`) - console.log(`xASTRO balance: ${xastro_balance}`) - - let fee_info = await factory.queryFeeInfo('xyk'); - strictEqual(true, fee_info.fee_address != null, "fee address is not set") - strictEqual(true, fee_info.total_fee_bps > 0, "total_fee_bps address is not set") - strictEqual(true, fee_info.maker_fee_bps > 0, "maker_fee_bps address is not set") - - console.log('swap some tokens back and forth to accumulate commission') - for (let index = 0; index < 5; index++) { - console.log("swap astro to uusd") - await pool_uust_astro.swapCW20(network.tokenAddress, swap_amount.toString()) - - console.log("swap uusd to astro") - await pool_uust_astro.swapNative(new NativeAsset('uusd', swap_amount.toString())) - - let lp_token_amount = await astroport.getTokenBalance(pair_info.liquidity_token, accAddress); - let share_info = await pool_uust_astro.queryShare(lp_token_amount.toString()); - console.log(share_info) - } -} - -async function collectFees(network: any, astroport: Astroport, accAddress: string) { - const maker = astroport.maker(network.makerAddress); - - let maker_cfg = await maker.queryConfig(); - strictEqual(maker_cfg.astro_token_contract, network.tokenAddress) - strictEqual(maker_cfg.staking_contract, network.stakingAddress) - - let balances = await maker.queryBalances([new TokenAsset(network.tokenAddress, '0')]); - strictEqual(true, balances.length > 0, "maker balances are empty. no fees are collected") - - console.log(balances) - - let resp = await maker.collect([network.poolAstroUst]) - console.log(resp) -} - -main().catch(console.log) diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json deleted file mode 100644 index 40aac9cb7..000000000 --- a/scripts/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ts-node": { - "files": true - }, - "compilerOptions": { - "target": "es2017", - "module": "esnext", - "strict": true, - "moduleResolution": "node", - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true - } -} \ No newline at end of file diff --git a/scripts/types.d/astroport_deploy_interfaces.ts b/scripts/types.d/astroport_deploy_interfaces.ts deleted file mode 100644 index 52aa696a7..000000000 --- a/scripts/types.d/astroport_deploy_interfaces.ts +++ /dev/null @@ -1,214 +0,0 @@ -interface GeneralInfo { - multisig: string -} - -type InitialBalance = { - address: string, - amount: string -} - -type Marketing = { - project: string, - description: string, - marketing: string, - logo: { - url: string - } -} - -interface Token { - admin: string, - initMsg: { - name: string, - symbol: string, - decimals: number, - initial_balances: InitialBalance[], - marketing: Marketing - }, - label: string -} - -interface Treasury { - admin: string, - initMsg: { - admins: string[], - mutable: boolean - }, - label: string -} - -interface Staking { - admin: string, - initMsg: { - owner: string, - token_code_id: number, - deposit_token_addr: string, - marketing: Marketing - }, - label: string -} - -interface PairConfig { - code_id: number, - pair_type: { xyk: {} } | { stable: {} }, - total_fee_bps: number, - maker_fee_bps: number, - is_disabled: boolean, - is_generator_disabled: boolean -} - -interface Factory { - admin: string, - initMsg: { - owner: string, - pair_configs: PairConfig[], - token_code_id: number, - fee_address?: string, - generator_address?: string, - whitelist_code_id: number - }, - label: string, - change_owner: boolean, - proposeNewOwner: { - owner: string, - expires_in: number - } -} - -interface Router { - admin: string, - initMsg: { - astroport_factory: string - }, - label: string -} - -interface Maker { - admin: string, - initMsg: { - owner: string, - factory_contract: string, - staking_contract: string, - astro_token: NativeAsset | TokenAsset, - governance_contract?: string, - governance_percent?: string, - max_spread: "0.5" - }, - label: string -} - -type VestingAccountSchedule = { - start_point: { - time: string, - amount: string - }, - end_point?: { - time: string, - amount: string - } -} - -interface VestingAccount { - address: string - schedules: VestingAccountSchedule[] -} - -interface Vesting { - admin: string, - initMsg: { - owner: string, - vesting_token: NativeAsset | TokenAsset, - }, - label: string, - registration: { - msg: { - register_vesting_accounts: { - vesting_accounts: VestingAccount[] - } - }, - amount: string - } -} - -interface Generator { - admin: string, - initMsg: { - owner: string, - astro_token: NativeAsset | TokenAsset, - start_block: string, - tokens_per_block: string, - vesting_contract: string, - factory: string, - whitelist_code_id: number, - }, - label: string, - change_owner: boolean, - proposeNewOwner: { - owner: string, - expires_in: number - }, - new_incentives_pools?: [] -} - -interface GeneratorProxy { - admin: string, - initMsg: { - generator_contract_addr: string, - pair_addr: string, - lp_token_addr: string, - reward_contract_addr: string, - reward_token_addr: string - }, - label: string -} - -type NativeAsset = { - native_token: { - denom: string, - } -} - -type TokenAsset = { - token: { - contract_addr: string - } -} - -interface Pair { - identifier: string, - assetInfos: (NativeAsset | TokenAsset)[], - pairType: { xyk: {} } | { stable: {} }, - initParams?: any, - initOracle?: boolean, - initGenerator?: { - generatorAllocPoint: string - } -} - -interface CreatePairs { - pairs: Pair[] -} - -interface Oracle { - admin: string, - initMsg: { - factory_contract: string, - asset_infos: (NativeAsset | TokenAsset)[] - }, - label: string -} - -interface Config { - token: Token, - treasury: Treasury, - staking: Staking, - factory: Factory, - router: Router, - maker: Maker, - vesting: Vesting, - generator: Generator, - generatorProxy: GeneratorProxy, - createPairs: CreatePairs, - oracle: Oracle, - generalInfo: GeneralInfo -} \ No newline at end of file diff --git a/scripts/types.d/chain_configs.ts b/scripts/types.d/chain_configs.ts deleted file mode 100644 index 5ab81f33e..000000000 --- a/scripts/types.d/chain_configs.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { readArtifact } from "../helpers.js"; - -export const chainConfigs: Config = readArtifact(`${process.env.CHAIN_ID || "localterra"}`, 'chain_configs'); \ No newline at end of file From d909de13da5f7719eb0f8d5f20b4e48229629414 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 17:36:39 +0100 Subject: [PATCH 71/84] add tarpaulin coverage dev script --- scripts/coverage.sh | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100755 scripts/coverage.sh diff --git a/scripts/coverage.sh b/scripts/coverage.sh new file mode 100755 index 000000000..9b031d046 --- /dev/null +++ b/scripts/coverage.sh @@ -0,0 +1,7 @@ +#!/usr/src/env bash + +# Usage: ./scripts/coverage.sh +# Example: ./scripts/coverage.sh astroport-pair + +cargo tarpaulin --target-dir target/tarpaulin_build --skip-clean --exclude-files *tests*.rs --exclude-files target*.rs \ + -p "$1" --out Html From 51f8f225af260355bf7559647209a13e6350b43a Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 17:40:28 +0100 Subject: [PATCH 72/84] update SC diagram --- assets/sc_diagram.png | Bin 378531 -> 202068 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/sc_diagram.png b/assets/sc_diagram.png index fe7fb7e47dcef5673c328199085294ef37096c29..00bad2c37ab45758a724c374d9c23af9e165306a 100644 GIT binary patch literal 202068 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 Phw~>{ovFQAe<`)mHe@&6l=DYo@UcL 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 literal 378531 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 v6v0l(+aoRMdLqOArbCN$68xT@S``6 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�=|qQb&F%TJn?;PWW*F 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μ=#Uojz>EN&za8e{5VAQKc z`+XXOcO#_q_GGtMx$+c{X-*}#tNEzoxwN8F;Zp~3Sg zM>ngV&G>t z?@~~RU6|^vDvJ?ce0zJEE%eaXe=FXXZGl4quq8)%Gt4M>?f+EWuS3Bmc#*1BI@OJc z1MBkV{#y+~5~ITMAd$4Fs7J+yIf@Y_sjIrtC9y#$Y^7E1+)(YR>2Otuv=$XB)V{DQu13bpZ{)@wGxk~T21@dAN zYgpb9<8^{aR)eOfXW#51ylFYtInZej*!vETS4b3HS31L8(Y0RnPl1+uXFq&=bWIJA z$0Q*za<@0T4Lsp&EpCCNnWi`;_!#UK(jEGbo)Yjjb zmI@Fn*_*=8`V?VR_6QT8m;n_WR^%rqxjlxxEuJcUF(2Sn5DIlKnsw>pVP>B4hPz8d z*2m_B^nv}wbO&igUw$N^yq|yTxFHU!PzS=x0!_{Z3%Y+MWazHI!Y3pov}o&8;Y$Ze zReYX7$Zo?YMdA$Dz0Mo6WKv=BibQ^IEDWC+~~+w_K|; z!u9dk{n;8&f49KJZ@&@uaI}2Q^|27lrY1ly0v$@@Iq{NGY@JcwTP>u%S{BwIC1Gqe zfHv{mpJuMB^X}ZJNP9D0r9`o{0D*+kd3=BPu$IK>jjzALW=Wr6k+PNcMP=M7(>)BPEqij#y=-x^+)_;}qsUS^r; z!UfbI72h+t6i^zk$@EZu54w6!%wql$cNVr8F%p><&GDK=spf68zMbAaq+HoI(4U$rS4NpM$)Y41OeIR6f>bLxp1%)~5AU;vy2e+|6$iN$~&7jw?ty(J<`4L68g zOOl?=R99`V9wN5JN7carlR;^E#jNIDZwR>G+&zA9aD2o=O?FYpS-={!;DKQ}ytp}} zfUI_Gyaxirt|k#X(5BgwmP|erN@z|pOdpS6(|#*=)OTi`>vDKzDUhzvp59}{ugVlK z&(He6u;qS!@L#)OIt1xy8r>^!T*%1GJl>+KNuUxZHNu3Z@}`4}3>xP1oQI<<0qL4v zECb<@S;d$g#rnik6&hjR%~$-kjmSPlym9ffv(a(1!}izh^bbSL7pj9);tJeaBon`? zKV0ao7dxkga~V|270-U-p)g&X>l{5_mCtF3%I+%)-|5L0eYu!GMU6)GguJ@u|7J_A zuYic5dxGp+9Hexc%Ijc~1IQYd(^Za~rUPf4Ni79x6Ia6+I3>z<eimB z;g=|S47f=w2(n~{xrSEgR`q=P4qs+hX&2c{&c*d*Bo10Vuj5th1UEFUiYbWOuhJUM zDAqvg*yT^xFqF05VZ@L8@DRO`m{7+bT_=QKiGF@41|AZ0vl>hh+3+>rZ{oK;*Rr$8 zPI;yXR^51pSH}!Ra|;qG4RzO%8JYC9E|A|tHzrItPv&udtQ-u+JnL##fP^JK8O`gG z({LP?R-r%MKpdT93+_zV)0~NmleG_WHavvACLxKVy0vrklm_cI8x@w75p^v~%Fre5 z*Q`#|Mbd#+PC`QTi2cxf)A1OYd3RfzG5Ar}+oH{s$NrrZW^wsNl#^%EL#frr*I~v+ zUMC>3&$2C#u2(dJT&>ymKlirE_6v7cSn1ysFVyMp(d>1~B*yWsyMbx)|6~I-+Y)bK zt$!ricJx*Dyrso~7XNsGAgo#HsLaZ*b91O;K?+u~z(5qxv+)f(-m3##m=#VrBylA0 z;k}L6aqm{?duf-u(s=Kd&q^{>ZwFq(VYqf3U-;2Wo{XIJ1ag4il2T0bJ#;B}WOeh6 zz^Xu1*>Lb+rD4sM*Dza}*quqT+6Vrho^X{9P<&LG#tZa~lWy9VD%3gCt25n|%5;NhQ|W~9nfWtbKIA<1r_J~U^fxMPH!QmRfGv7X z+wK>aR+ayoYYL9PctAj8$t3MB?bRC@i{_XirX! zoScs56&v4m*c5lQ_kZKmfsh3o7=0^nKRl*fR^Myzbl~hb=}JDIKOk_`tl^P7mljx6 zxtA)1=A=ThzF6BG`OZZ|Eg)@xIO$2!m;N$&pa!Nhjv>aG&9_KBONKAx%2zWDeN}Jq zuD&7S4xbG=Yfhx;ubi&*z)KY+ocIU-w~Yx8x^3jxDFW8gw{Y_=ctG^or)!UD{Wpf9z3)I_+l&6 zAr_J8UV^s$gux86pR*&XqYA;c~r|xEEi~|WGNgeKxTEOGt*2UsnO@{=N8wfkEFUSM`F7tJF1~x_bjb5zZyHol*fq?yNAk|p03X(*h z?#^L1vTy?PoOHR>JJZJ_Pj&B2exyW13V0OzSj1F0huW;2(dpI@Ki-?oscdWs$w!5F zwP1)>b-m9QQvS}+`%g!qNnAPf#Od<%bP6YSu)CV~bnm88zAZQvzOe1#Gide+cHK?E zRifFJ{+5&^hoQvWGj4R(?^!912Y;Vf4r)#eqIVbPJG*YjrYy2M?Hjm`IZQr$1D3}( zI@_TaaP5{Ju%-BXVSG=MzAq>h*l4nj2G8zz)lZ%d(HYb^Mcb_UDyhC>#yQk}g;`pu zG(*MtN#OAfrM8rj@g9%zKoyC=%k4JKH64#g)6BBMN`G>U6}ySmn}*V9<%I5m8(G`C zpG$?Uxc>9yTp!vK zA>0-&!Gl@9f)DDbop&m&YyyLeZimG{*lpkTdOFSW2>sfiy_`#c2OaN>r}}vA*&Hox z0hVcY?}OemYjB3ioGAN@Fc|6MnHi}j$+_=r6jKdZXpBv}ix71f@M{V4wNmz0n>8&J zpjjoI^nP{@V+qJxg&sg0J8AKswRwBoKlmkk+-}~+mFz=Gw7c+?jux3QlHOfj@oM7G zK)wkTjJo*wbtUa3;X;lj{{eLdYt!Yr*a#B2JgUZ)iYFY2ep@jwHYir(QFtdxa2ni@ z{B={hMTAs4@3z7Pr9k=V>ZS7rak1^8wdtLRSADP7ro%qc;!hO8o`mm>$|5n{%7tva zVtF)gpL~7+Z!DR0K0e03R}p{XYmltLNJ31KiwN(T+_A#6tp8jfp8i44Aj)2VpsRh zx=V+)fWkJr6=&W(gIJCBst{|jNmkJrB66nvJ|cq}bW`e`JCFD`W9|@DQa#C2^I)`7 z0uPs!S=-j!4--=tiiR+yF7C2-O;v2ztgJ%?1WU9lasM`>Zcw| zI--9(7kGWClw=;tcquZR_Zs_4p0T0(q-(|~BM;r{6l!Oe#rn%;KU~q<_m^H%;}Gh% z6xp`{*Y;L;(B&D{5RVsXe!{}W{tWS$X~&0&^I!XPa~Xj>9*gLX4 zAmt`~#_qG|?*kAx=*4j7eNoSSb`y04h$hcvemvm)LI+)C5ace_4yN0MeZ4r{ zWt96cIFA&rRQwz>J2$SqCH;~&ukk(?Bqt?o>F{7FIM3?DZme3Hf9?DCl*bD095y4R zX=kKyEMd30XVkzFJn%u69-$dia?MP7tuQ`e#T58=bd#I-L?n*iDCX0UR1OQ#HpeFq z_*gh2^?2@viLd-rwbjZ50Au1F8RqY9#KxzgrKlt~11t@pCdS#}bZ}*~^3+Fi{MFo+ zPRE8re&5y9o7d@HfWFwAm03)Eagbk7R*jSUx=P9<-#?Pg^l^AZ(P=>#rdZko#82Q(N|JN!64yL7u8X9`=i)U7qH)~!-Qmm1f7O*_*(1AGMmIteOgYQ6$DTvB0V^QY-Xn1j`A(Z`% zrRZ0vRqAwAjufmY-gU<7SLs-Yc-~WQmHomAXN~2h@wPlUJwaxtYH}~L_+UtlS~W88 zP!a?(_1Q!>yN<2%|po!XJ?62sDv`k zZ{B04y(L^cMT>uiKEF96#pyx!ZD>ZTKeR0vQ(ITpo4g6%n~C)>0jyGDa|>#|5}T9X zC7O_}4|z*F9aRi`8BgO@hO`S~Z)m4D1GSaS+2g(q+hiTC{P@jVya!DrZ0zjzkF%p$ z)kuXp2_fopR_gmZb6@w#f&;r{EK~sIE)&7(Uo^%pck7y~x)DF;X35kcuin#ZSRa^P zO;o+^08ekcOKtbqTY3;2qbQhX8UZ+hmH3+zm_7KG{ZBpV7B{XfpdNox{YqK8`ZLp4 z*RG3#Iyi90X~LSIq~QjLW)dezobU=R*mn%=2^%uSlr_`{$@cm3$Z+c%$F(kR_2ko7)RJ>KcIx?9ypEy$Np|l1DcvM`7 znbvpBvN$g>0Vv7vjgIb~{22AP z-Y029ooor}p8F45PDZ@weuAAx;~bZdmWu-Tm;WqVfbb&5*Sc3BHjr@1J&<$}WRv0t z78t!IrBHRReXu`0Fiexty03XLlo!XF85Uh(Jvv)f)Qgncs%fH`SzDu-(dC1j zR))AY^h8~0$if_;$qg?PAIP|wJpyu)9Pb$G{+f^G{OGC!v+h5cncg z$Ph*?IOb0G?MT~;ZjtzUSy|a3cRr~O6nVks;+<{Q!Qf-Fi0wM|JzHXJafg|@`vF@X z77^WXI*oRmq~!eZCR1CCFoZ^jHh0QJNJHXL=*97VqN8rm1QlEMkfwk9SY3pE6iG!%fQ|r zLeEB$E!KbCDLMS~jvPPX(aXEdAS!KkD5OEm7$=c)6qxc+ivCBzhhFu1 z8j!wz7a`7 zOe&Zz>g($2)S)JGdD=%Tt2-;4k`cszmXTXyvvse3SCRH#GKM~RiJBdEu+sk=Nbbpa zfB~^@Sxw}*7>ibBzYe~kuyJt0o-0Bxf4tG}I28{uQleOXl=;Th`s0)0B+Z*HD}x=` zw`j@W1D(a7uZizU?0Q>-$VjiM|36MCX%n0RZGxN?-rS?8=aHguJLb+ddQk3zuh<}j z1e2BMsvJtZ5O!+ZAebsP+Wr}>*`aLW2EEWa@$V)%?*{pZIp{k{qyVTHjPepJqR79tEPJxL&;AM|hRe|jFA<5~c zuhrN=Q#z4hJNBa0APJ;=k_3oUo4i8dJr16FI#f!VfFS3y!ID<4XRU^+A!o;)fmLBi z_36p(&yfkIUCt#eF;6>dYDcG^TgCbonxbzvOCNUd--S;%$y1RpJgWalw7roqo~?8c zla}^9Yt+mArRV3^^?{^ewVR-cSwmfTO|_Gn$TE*ZE{#F8jjH9dPXd`grN{aV z``<<%$)>+CudADL8GMOJRcGxypKhNuSN-wu=>CVjj!-E#hGm($e-nAR|E ze+wjabaE0IyND4R1scztah32Bxc-Q>adxSzSgY{* zN30bZ7sd@+*%~Hn&QdX14KD-5b$t%)*Gf{1bb10|I<^e2zqvZspNz;MOH0^`^Nt71 z%-U32XQlUpeBeQCm6l!H^>1rlv%@#=HtCg;Ul_vKBSp1ri&oGLk004`4?!g}PvhNeCe5}(A``#2AToGAh>A}_ zNScKA2`n{};|4Z^nk71luEQ0G_DuaQ2vjz%s|q7o_pry2@c%>ER|iy;Z*5Zwf^_FW z=@uzzBn70qExNl~Qc^f{!=X#MK}m^2gS2#a_qTCooEhiNeed@lan9cRS8F|Mt!F)Z z^LYv1DTpdu;LZ1POc79)L`O)bsUygVjK?PAg!EY!d!Zs$VogTL)NjETBdV&2U%;R{ zfBj$=O)6E2w^!>$pVs%j3z89O<@bQw+)(8-mu zx@Rg`N(xtDo1-sJa;KM$h;3w&5HlYcSV&73%2_Kk3~vPP2NylrBRlm1i$^ zdJN9935@OgrVI772r_J0okJpd(3f71h^UsI)h~{{dTqn~(PFmoQ45Pf2Fy=ua!KTo(RO8<(=e5=OVw<6` zwz(^lUJUO)4CF*5Ej`(j4crA&n=pstdP+u#Nr+Leuk-W*14t*uF;F~pWEE)M*co!s zY!ni0%cZ_GHrzx%Jw|`i*ia~V1YJ*WzG(;)A!mX6{M?)Ujl5pI4h1{Q#P@G}$nOkh zF^5ri)odQ%WR;aN!kY7i zi%S_e6vwHYXl1a?vW~7|IjR%zFU*@kkcu?@QV0*#tG2)W;XPmw4jyAD&!z&oRGInL zDnY~mP1U=nZ+X?l%Doqf`OW)z3IB�E@@CjMtu86?^qFtPSzgr;M2ltDNYjo%#kw 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 Date: Thu, 28 Mar 2024 17:47:58 +0100 Subject: [PATCH 73/84] Update README.md --- README.md | 52 +++++++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 00d83f2ed..b8653ae2f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ [![codecov](https://codecov.io/gh/astroport-fi/hidden_astroport_core/branch/main/graph/badge.svg?token=D8539UWBST)](https://codecov.io/gh/astroport-fi/hidden_astroport_core) -Multi pool type automated market-maker (AMM) protocol powered by smart contracts on the [Terra](https://terra.money) blockchain. +Multi pool type automated market-maker (AMM) protocol powered by smart contracts on the Terra, Injective, Neutron, Sei +and Osmosis +blockchains. ## Contracts diagram @@ -10,37 +12,38 @@ Multi pool type automated market-maker (AMM) protocol powered by smart contracts ## General Contracts -| Name | Description | -| ---------------------------------------------------------- | -------------------------------------------- | -| [`factory`](contracts/factory) | Pool creation factory | -| [`pair`](contracts/pair) | Pair with x*y=k curve | -| [`pair_stable`](contracts/pair_stable) | Pair with stableswap invariant curve | -| [`pair_stable_bluna`](contracts/pair_stable_bluna) | Pair with stableswap invariant curve handling bLUNA rewards for LPs | -| [`token`](contracts/token) | CW20 (ERC20 equivalent) token implementation | -| [`router`](contracts/router) | Multi-hop trade router | -| [`oracle`](contracts/periphery/oracle) | TWAP oracles for x*y=k pool types | -| [`whitelist`](contracts/whitelist) | CW1 whitelist contract | +| Name | Description | +|----------------------------------------------------|---------------------------------------------------------------------| +| [`factory`](contracts/factory) | Pool creation factory | +| [`pair`](contracts/pair) | Pair with x*y=k curve | +| [`pair`](contracts/pair_astro_converter) | One way swap pair to convert ASTRO.cw20 to TokenFactory ASTRO | +| [`pair_concentrated`](contracts/pair_concentrated) | Passive Concentrated Liquidity pair inspired by Curve v2 whitepaper | +| [`pair_stable`](contracts/pair_stable) | Pair with stableswap invariant curve | +| [`pair_transmuter`](contracts/pair_transmuter) | Constant sum pair with no fee ans slippage for 1:1 assets | +| [`pair_xyk_sale_tax`](contracts/pair_xyk_sale_tax) | XYK pair with buy and sell taxes | +| [`router`](contracts/router) | Multi-hop trade router | +| [`whitelist`](contracts/whitelist) | CW1 whitelist contract (Astroport treasury) | ## Tokenomics Contracts Tokenomics related smart contracts are hosted on ../contracts/tokenomics. -| Name | Description | -| ---------------------------------------------------------- | ------------------------------------------------ | -| [`generator`](contracts/tokenomics/generator) | Rewards generator for liquidity providers | -| [`generator_proxy_to_mirror`](contracts/tokenomics/generator_proxy_to_mirror) | Rewards generator proxy for liquidity providers | -| [`maker`](contracts/tokenomics/maker) | Fee collector and swapper | -| [`staking`](contracts/tokenomics/staking) | xASTRO staking contract | -| [`vesting`](contracts/tokenomics/vesting) | ASTRO distributor for generator rewards | -| [`xastro_token`](contracts/tokenomics/xastro_token) | xASTRO token contract | +| Name | Description | +|-----------------------------------------------------|---------------------------------------------------------------------| +| [`incentives`](contracts/tokenomics/generator) | Rewards distributor for liquidity providers | +| [`maker`](contracts/tokenomics/maker) | Fee collector and swapper | +| [`staking`](contracts/tokenomics/staking) | xASTRO staking contract | +| [`vesting`](contracts/tokenomics/vesting) | ASTRO distributor for generator rewards | +| [`xastro_token`](contracts/tokenomics/xastro_token) | xASTRO token contract (extended cw20 with onchain balances history) | ## Building Contracts -You will need Rust 1.64.0+ with wasm32-unknown-unknown target installed. +You will need Rust 1.68.0+ with wasm32-unknown-unknown target installed. ### You can compile each contract: -Go to contract directory and run - + +Go to contract directory and run + ``` cargo wasm cp ../../target/wasm32-unknown-unknown/release/astroport_token.wasm . @@ -49,6 +52,7 @@ sha256sum astroport_token.wasm ``` ### You can run tests for all contracts + Run the following from the repository root ``` @@ -56,6 +60,7 @@ cargo test ``` ### For a production-ready (compressed) build: + Run the following from the repository root ``` @@ -66,7 +71,8 @@ The optimized contracts are generated in the artifacts/ directory. ## Deployment -You can find versions and commits for actually deployed contracts [here](https://github.com/astroport-fi/astroport-changelog). +You can find versions and commits for actual deployed +contracts [here](https://github.com/astroport-fi/astroport-changelog). ## Docs From ca069a6945301995d1794bcd7b226b2f901fc4a6 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 17:54:49 +0100 Subject: [PATCH 74/84] remove unused deps --- Cargo.lock | 3 --- contracts/factory/Cargo.toml | 2 -- contracts/pair/Cargo.toml | 10 ++++------ contracts/pair_xyk_sale_tax/Cargo.toml | 2 -- 4 files changed, 4 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e49a1e407..0db2aa317 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -213,7 +213,6 @@ dependencies = [ "cw20-base 1.1.0", "itertools 0.12.1", "prost 0.11.9", - "protobuf 2.28.0", "thiserror", ] @@ -422,7 +421,6 @@ dependencies = [ "integer-sqrt", "proptest", "prost 0.11.9", - "protobuf 2.28.0", "thiserror", ] @@ -557,7 +555,6 @@ dependencies = [ "integer-sqrt", "proptest", "prost 0.11.9", - "protobuf 2.28.0", "test-case", "thiserror", ] diff --git a/contracts/factory/Cargo.toml b/contracts/factory/Cargo.toml index 6f1809495..023eaf858 100644 --- a/contracts/factory/Cargo.toml +++ b/contracts/factory/Cargo.toml @@ -34,8 +34,6 @@ thiserror.workspace = true itertools.workspace = true cosmwasm-schema.workspace = true cw-utils.workspace = true -# TODO: remove it -protobuf = { version = "2", features = ["with-bytes"] } [dev-dependencies] cw-multi-test = "1.0.0" diff --git a/contracts/pair/Cargo.toml b/contracts/pair/Cargo.toml index 5fc760ac4..c2e5bc6b2 100644 --- a/contracts/pair/Cargo.toml +++ b/contracts/pair/Cargo.toml @@ -9,9 +9,9 @@ repository = "https://github.com/astroport-fi/astroport" homepage = "https://astroport.fi" exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", ] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -35,11 +35,9 @@ cw-storage-plus.workspace = true thiserror.workspace = true cosmwasm-schema.workspace = true cw-utils.workspace = true -# TODO: remove it -protobuf = { version = "2", features = ["with-bytes"] } [dev-dependencies] -cw20-base = { version="1.1", features = ["library"] } +cw20-base = { version = "1.1", features = ["library"] } astroport-factory = { path = "../factory" } proptest = "1.0" prost = "0.11.5" diff --git a/contracts/pair_xyk_sale_tax/Cargo.toml b/contracts/pair_xyk_sale_tax/Cargo.toml index 9c6843011..c1497b3e4 100644 --- a/contracts/pair_xyk_sale_tax/Cargo.toml +++ b/contracts/pair_xyk_sale_tax/Cargo.toml @@ -36,8 +36,6 @@ thiserror.workspace = true cosmwasm-schema.workspace = true cw-utils.workspace = true astroport-pair = { path = "../pair", features = ["library"], version = "1.5" } -# TODO: remove it -protobuf = { version = "2", features = ["with-bytes"] } [dev-dependencies] cw20-base = "1.1" From 26d52aa81c4b06fca822261d901adcf9c270ad8b Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 17:56:27 +0100 Subject: [PATCH 75/84] bump Rust version in CI --- .github/workflows/check_artifacts.yml | 2 +- .github/workflows/code_coverage.yml | 2 +- .github/workflows/tests_and_checks.yml | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/check_artifacts.yml b/.github/workflows/check_artifacts.yml index 5a6e1f51a..1f68f0999 100644 --- a/.github/workflows/check_artifacts.yml +++ b/.github/workflows/check_artifacts.yml @@ -47,7 +47,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.68.0 + toolchain: 1.75.0 override: true - name: Fetch cargo deps diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index cde8807c0..319888a83 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -47,7 +47,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.72.0 + toolchain: 1.75.0 override: true - name: Run cargo-tarpaulin diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index 4a71b4df0..30521d504 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -48,9 +48,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - # some deps require 1.72.0+ like cosm-rs which is used in tube-based tests - # however, we can't bump optimizer rust version because SEI still use CW VM which doesn't support wasm builds with rust >1.69.0 - toolchain: 1.72.0 + toolchain: 1.75.0 override: true components: rustfmt, clippy From 8ff4c0f03c2968de4387f07d2c145ef4f28d7a19 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 18:06:48 +0100 Subject: [PATCH 76/84] remove deps replacements --- Cargo.lock | 17 ++++++++++++++++- Cargo.toml | 6 ------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0db2aa317..7b111487a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -94,6 +94,21 @@ dependencies = [ "uint 0.9.5", ] +[[package]] +name = "astroport" +version = "2.10.0" +source = "git+https://github.com/astroport-fi/astroport-core?branch=feat/merge_hidden_2023_05_22#11e7a81d4b18a40bed916177061a549633e02b1b" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw-utils 1.0.3", + "cw20 0.15.1", + "cw3", + "itertools 0.10.5", + "uint 0.9.5", +] + [[package]] name = "astroport" version = "3.12.2" @@ -236,7 +251,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#182dd5bc201dd634995b5e4dc9e2774495693703" dependencies = [ - "astroport 4.0.0", + "astroport 2.10.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", diff --git a/Cargo.toml b/Cargo.toml index 8be955423..0855b48c1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,9 +36,3 @@ panic = 'abort' incremental = false overflow-checks = true strip = true - -[patch.'https://github.com/astroport-fi/hidden_astroport_core'] -astroport = { path = "packages/astroport" } - -[patch.'https://github.com/astroport-fi/astroport-core'] -astroport = { path = "packages/astroport" } From 85754e11a5036f8bbb5b1efb2299f304e1d9f76d Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 18:15:30 +0100 Subject: [PATCH 77/84] update to temporal astroport-governance branch --- Cargo.lock | 29 +++++++++++++-------------- contracts/tokenomics/maker/Cargo.toml | 2 +- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7b111487a..50bd435d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -129,36 +129,35 @@ dependencies = [ [[package]] name = "astroport" -version = "3.13.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_core#f8720e20192d47d6e7a4c3058d368954d9c9df2d" +version = "4.0.0" dependencies = [ - "astroport-circular-buffer 0.2.0 (git+https://github.com/astroport-fi/hidden_astroport_core)", + "astroport-circular-buffer 0.2.0", "cosmwasm-schema", "cosmwasm-std", "cw-asset", - "cw-storage-plus 0.15.1", + "cw-storage-plus 1.2.0", "cw-utils 1.0.3", - "cw20 0.15.1", - "cw3", - "itertools 0.10.5", + "cw20 1.1.2", + "injective-math", + "itertools 0.12.1", + "test-case", + "thiserror", "uint 0.9.5", ] [[package]] name = "astroport" version = "4.0.0" +source = "git+https://github.com/astroport-fi/hidden_astroport_core?branch=feat/v4_refactoring#8ff4c0f03c2968de4387f07d2c145ef4f28d7a19" dependencies = [ - "astroport-circular-buffer 0.2.0", + "astroport-circular-buffer 0.2.0 (git+https://github.com/astroport-fi/hidden_astroport_core?branch=feat/v4_refactoring)", "cosmwasm-schema", "cosmwasm-std", "cw-asset", "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "cw20 1.1.2", - "injective-math", "itertools 0.12.1", - "test-case", - "thiserror", "uint 0.9.5", ] @@ -187,11 +186,11 @@ dependencies = [ [[package]] name = "astroport-circular-buffer" version = "0.2.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_core#f8720e20192d47d6e7a4c3058d368954d9c9df2d" +source = "git+https://github.com/astroport-fi/hidden_astroport_core?branch=feat/v4_refactoring#8ff4c0f03c2968de4387f07d2c145ef4f28d7a19" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.15.1", + "cw-storage-plus 1.2.0", "thiserror", ] @@ -261,9 +260,9 @@ dependencies = [ [[package]] name = "astroport-governance" version = "2.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance#1a39c2d985138f9c293b82a9ba8a6088a9d21ff0" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=feat/bump_astroport_v4#1acf430ea19ccf88701f50b58e218c98d2f8e454" dependencies = [ - "astroport 3.13.0", + "astroport 4.0.0 (git+https://github.com/astroport-fi/hidden_astroport_core?branch=feat/v4_refactoring)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", diff --git a/contracts/tokenomics/maker/Cargo.toml b/contracts/tokenomics/maker/Cargo.toml index 53aff84a9..7340772e5 100644 --- a/contracts/tokenomics/maker/Cargo.toml +++ b/contracts/tokenomics/maker/Cargo.toml @@ -40,5 +40,5 @@ astroport-factory = { path = "../../factory" } astroport-pair = { path = "../../pair" } cw-multi-test = "1.0.0" astroport-pair-stable = { path = "../../pair_stable" } -astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "2" } +astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "2", branch = "feat/bump_astroport_v4" } astroport-native-coin-registry = { path = "../../periphery/native_coin_registry" } From 23631d3765027594e8f8d06fe59c0c058a95096a Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 18:19:01 +0100 Subject: [PATCH 78/84] Revert "remove deps replacements" This reverts commit 8ff4c0f03c2968de4387f07d2c145ef4f28d7a19. --- Cargo.lock | 17 +---------------- Cargo.toml | 6 ++++++ 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 50bd435d1..6682b9365 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -94,21 +94,6 @@ dependencies = [ "uint 0.9.5", ] -[[package]] -name = "astroport" -version = "2.10.0" -source = "git+https://github.com/astroport-fi/astroport-core?branch=feat/merge_hidden_2023_05_22#11e7a81d4b18a40bed916177061a549633e02b1b" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw-utils 1.0.3", - "cw20 0.15.1", - "cw3", - "itertools 0.10.5", - "uint 0.9.5", -] - [[package]] name = "astroport" version = "3.12.2" @@ -250,7 +235,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#182dd5bc201dd634995b5e4dc9e2774495693703" dependencies = [ - "astroport 2.10.0", + "astroport 4.0.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", diff --git a/Cargo.toml b/Cargo.toml index 0855b48c1..8be955423 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,3 +36,9 @@ panic = 'abort' incremental = false overflow-checks = true strip = true + +[patch.'https://github.com/astroport-fi/hidden_astroport_core'] +astroport = { path = "packages/astroport" } + +[patch.'https://github.com/astroport-fi/astroport-core'] +astroport = { path = "packages/astroport" } From da829ca6e2fa19beca636f0267c9ded535aec25e Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 18:20:23 +0100 Subject: [PATCH 79/84] update Cargo.lock --- Cargo.lock | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6682b9365..7bd0c68ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -130,22 +130,6 @@ dependencies = [ "uint 0.9.5", ] -[[package]] -name = "astroport" -version = "4.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_core?branch=feat/v4_refactoring#8ff4c0f03c2968de4387f07d2c145ef4f28d7a19" -dependencies = [ - "astroport-circular-buffer 0.2.0 (git+https://github.com/astroport-fi/hidden_astroport_core?branch=feat/v4_refactoring)", - "cosmwasm-schema", - "cosmwasm-std", - "cw-asset", - "cw-storage-plus 1.2.0", - "cw-utils 1.0.3", - "cw20 1.1.2", - "itertools 0.12.1", - "uint 0.9.5", -] - [[package]] name = "astroport-circular-buffer" version = "0.2.0" @@ -168,17 +152,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-circular-buffer" -version = "0.2.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_core?branch=feat/v4_refactoring#8ff4c0f03c2968de4387f07d2c145ef4f28d7a19" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 1.2.0", - "thiserror", -] - [[package]] name = "astroport-factory" version = "1.5.1" @@ -247,7 +220,7 @@ name = "astroport-governance" version = "2.0.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=feat/bump_astroport_v4#1acf430ea19ccf88701f50b58e218c98d2f8e454" dependencies = [ - "astroport 4.0.0 (git+https://github.com/astroport-fi/hidden_astroport_core?branch=feat/v4_refactoring)", + "astroport 4.0.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", From 17ce018011484aed0b7fad56a90b2626dec0249d Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 18:32:14 +0100 Subject: [PATCH 80/84] enable stargate feature in astro_converter --- contracts/periphery/astro_converter/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/periphery/astro_converter/Cargo.toml b/contracts/periphery/astro_converter/Cargo.toml index 3bdf25d52..3eb917246 100644 --- a/contracts/periphery/astro_converter/Cargo.toml +++ b/contracts/periphery/astro_converter/Cargo.toml @@ -11,7 +11,7 @@ library = [] [dependencies] astroport = { path = "../../../packages/astroport", version = "4" } -cosmwasm-std.workspace = true +cosmwasm-std = { workspace = true, features = ["stargate"] } cosmwasm-schema.workspace = true cw-storage-plus.workspace = true cw2.workspace = true From a5e58193deacba2482a63c1771483902aff9707b Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Thu, 28 Mar 2024 18:55:27 +0100 Subject: [PATCH 81/84] recover check_artifacts_size.sh script --- scripts/check_artifacts_size.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 scripts/check_artifacts_size.sh diff --git a/scripts/check_artifacts_size.sh b/scripts/check_artifacts_size.sh new file mode 100755 index 000000000..178120ff7 --- /dev/null +++ b/scripts/check_artifacts_size.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +set -e +set -o pipefail + +# terra: https://github.com/terra-money/wasmd/blob/2308975f45eac299bdf246737674482eaa51051c/x/wasm/types/validation.go#L12 +# injective: https://github.com/InjectiveLabs/wasmd/blob/e087f275712b5f0a798791495dee0e453d67cad3/x/wasm/types/validation.go#L19 +maximum_size=800 + +for artifact in artifacts/*.wasm; do + artifactsize=$(du -k "$artifact" | cut -f 1) + if [ "$artifactsize" -gt $maximum_size ]; then + echo "Artifact file size exceeded: $artifact" + echo "Artifact size: $artifactsize" + echo "Max size: $maximum_size" + exit 1 + fi +done From 48991e8ce09749538858dadb45507e6c862ec915 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Tue, 2 Apr 2024 11:46:54 +0200 Subject: [PATCH 82/84] fix astroport-governance dependency --- Cargo.lock | 6 +++--- contracts/tokenomics/maker/Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7bd0c68ad..2c6cb4578 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -217,8 +217,8 @@ dependencies = [ [[package]] name = "astroport-governance" -version = "2.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=feat/bump_astroport_v4#1acf430ea19ccf88701f50b58e218c98d2f8e454" +version = "3.0.0" +source = "git+https://github.com/astroport-fi/hidden_astroport_governance#e1c4475708c5d92acece729ae939d8caac4295d6" dependencies = [ "astroport 4.0.0", "cosmwasm-schema", @@ -284,7 +284,7 @@ dependencies = [ "astro-satellite-package", "astroport 4.0.0", "astroport-factory 1.7.0", - "astroport-governance 2.0.0", + "astroport-governance 3.0.0", "astroport-native-coin-registry", "astroport-pair 1.5.1", "astroport-pair-stable", diff --git a/contracts/tokenomics/maker/Cargo.toml b/contracts/tokenomics/maker/Cargo.toml index 7340772e5..634aeb55e 100644 --- a/contracts/tokenomics/maker/Cargo.toml +++ b/contracts/tokenomics/maker/Cargo.toml @@ -40,5 +40,5 @@ astroport-factory = { path = "../../factory" } astroport-pair = { path = "../../pair" } cw-multi-test = "1.0.0" astroport-pair-stable = { path = "../../pair_stable" } -astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "2", branch = "feat/bump_astroport_v4" } +astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "3" } astroport-native-coin-registry = { path = "../../periphery/native_coin_registry" } From 589efb629cc9189697a203882fe651dfd6d316c7 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Tue, 2 Apr 2024 15:57:41 +0400 Subject: [PATCH 83/84] clean up workspace from private repo traces --- .github/workflows/check_artifacts.yml | 50 ++------------------------ .github/workflows/code_coverage.yml | 9 ----- .github/workflows/tests_and_checks.yml | 12 ++----- Cargo.lock | 29 ++++++++++++++- Cargo.toml | 3 -- README.md | 2 +- contracts/tokenomics/maker/Cargo.toml | 2 +- 7 files changed, 35 insertions(+), 72 deletions(-) diff --git a/.github/workflows/check_artifacts.yml b/.github/workflows/check_artifacts.yml index 1f68f0999..58619968d 100644 --- a/.github/workflows/check_artifacts.yml +++ b/.github/workflows/check_artifacts.yml @@ -8,59 +8,17 @@ on: env: CARGO_TERM_COLOR: always - CARGO_NET_GIT_FETCH_WITH_CLI: true jobs: - fetch_deps: - name: Fetch cargo dependencies + check-artifacts-size: runs-on: ubuntu-latest - + name: Check Artifacts Size steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.11.0 with: access_token: ${{ github.token }} - - uses: actions/checkout@v3 - - uses: webfactory/ssh-agent@v0.7.0 - with: - ssh-private-key: | - ${{ secrets.GOV_PRIVATE_KEY }} - - - uses: actions/cache@v3 - if: always() - with: - path: | - ~/.cargo/bin - ~/.cargo/git/checkouts - ~/.cargo/git/db - ~/.cargo/registry/cache - ~/.cargo/registry/index - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - run: | - git config url."ssh://git@github.com/astroport-fi/hidden_astroport_governance.git".insteadOf "https://github.com/astroport-fi/hidden_astroport_governance" - - - name: Install stable toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: 1.75.0 - override: true - - - name: Fetch cargo deps - uses: actions-rs/cargo@v1 - with: - command: fetch - args: --locked - - check-artifacts-size: - runs-on: ubuntu-latest - name: Check Artifacts Size - needs: fetch_deps - steps: - name: Checkout sources uses: actions/checkout@v3 @@ -73,8 +31,6 @@ jobs: ~/.cargo/registry/cache ~/.cargo/registry/index key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - # docker can't pull private sources, so we fail if cache is missing - fail-on-cache-miss: true - name: Build Artifacts run: | @@ -82,7 +38,7 @@ jobs: -v "$GITHUB_WORKSPACE":/code \ -v ~/.cargo/registry:/usr/local/cargo/registry \ -v ~/.cargo/git:/usr/local/cargo/git \ - cosmwasm/workspace-optimizer:0.12.13 + cosmwasm/workspace-optimizer:0.15.1 - name: Save artifacts cache uses: actions/cache/save@v3 diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index 319888a83..f9e5ddc08 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -23,11 +23,6 @@ jobs: with: access_token: ${{ github.token }} - - uses: webfactory/ssh-agent@v0.7.0 - with: - ssh-private-key: | - ${{ secrets.GOV_PRIVATE_KEY }} - - name: Checkout repository uses: actions/checkout@v2 - uses: actions/cache@v3 @@ -40,8 +35,6 @@ jobs: ~/.cargo/registry/index target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - run: | - git config url."ssh://git@github.com/astroport-fi/hidden_astroport_governance.git".insteadOf "https://github.com/astroport-fi/hidden_astroport_governance" - name: Install stable toolchain uses: actions-rs/toolchain@v1 @@ -54,8 +47,6 @@ jobs: uses: actions-rs/tarpaulin@v0.1 with: version: '0.22.0' - # exclude old generator contract from coverage; keeping it for reference - args: '--exclude-files contracts/tokenomics/generator/*' - name: Upload to codecov.io if: github.ref == 'refs/heads/main' diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index 30521d504..0b28a2441 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -8,7 +8,6 @@ on: env: CARGO_TERM_COLOR: always - CARGO_NET_GIT_FETCH_WITH_CLI: true jobs: test_and_check: @@ -21,12 +20,8 @@ jobs: with: access_token: ${{ github.token }} - - uses: actions/checkout@v3 - - uses: webfactory/ssh-agent@v0.7.0 - with: - ssh-private-key: | - ${{ secrets.GOV_PRIVATE_KEY }} - + - name: Checkout sources + uses: actions/checkout@v3 - uses: actions/cache@v3 if: always() with: @@ -41,9 +36,6 @@ jobs: restore-keys: | ${{ runner.os }}-cargo- - - run: | - git config url."ssh://git@github.com/astroport-fi/hidden_astroport_governance.git".insteadOf "https://github.com/astroport-fi/hidden_astroport_governance" - - name: Install stable toolchain uses: actions-rs/toolchain@v1 with: diff --git a/Cargo.lock b/Cargo.lock index 2c6cb4578..d1ddb0f0d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -130,6 +130,22 @@ dependencies = [ "uint 0.9.5", ] +[[package]] +name = "astroport" +version = "4.0.0" +source = "git+https://github.com/astroport-fi/hidden_astroport_core#48991e8ce09749538858dadb45507e6c862ec915" +dependencies = [ + "astroport-circular-buffer 0.2.0 (git+https://github.com/astroport-fi/hidden_astroport_core)", + "cosmwasm-schema", + "cosmwasm-std", + "cw-asset", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw20 1.1.2", + "itertools 0.12.1", + "uint 0.9.5", +] + [[package]] name = "astroport-circular-buffer" version = "0.2.0" @@ -152,6 +168,17 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-circular-buffer" +version = "0.2.0" +source = "git+https://github.com/astroport-fi/hidden_astroport_core#48991e8ce09749538858dadb45507e6c862ec915" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 1.2.0", + "thiserror", +] + [[package]] name = "astroport-factory" version = "1.5.1" @@ -220,7 +247,7 @@ name = "astroport-governance" version = "3.0.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance#e1c4475708c5d92acece729ae939d8caac4295d6" dependencies = [ - "astroport 4.0.0", + "astroport 4.0.0 (git+https://github.com/astroport-fi/hidden_astroport_core)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", diff --git a/Cargo.toml b/Cargo.toml index 8be955423..05b638f05 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,8 +37,5 @@ incremental = false overflow-checks = true strip = true -[patch.'https://github.com/astroport-fi/hidden_astroport_core'] -astroport = { path = "packages/astroport" } - [patch.'https://github.com/astroport-fi/astroport-core'] astroport = { path = "packages/astroport" } diff --git a/README.md b/README.md index b8653ae2f..c5792a9b7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Astroport Core -[![codecov](https://codecov.io/gh/astroport-fi/hidden_astroport_core/branch/main/graph/badge.svg?token=D8539UWBST)](https://codecov.io/gh/astroport-fi/hidden_astroport_core) +[![codecov](https://codecov.io/gh/astroport-fi/astroport-core/branch/main/graph/badge.svg?token=ROOLZTGZMM)](https://codecov.io/gh/astroport-fi/astroport-core) Multi pool type automated market-maker (AMM) protocol powered by smart contracts on the Terra, Injective, Neutron, Sei and Osmosis diff --git a/contracts/tokenomics/maker/Cargo.toml b/contracts/tokenomics/maker/Cargo.toml index 634aeb55e..eea0b99aa 100644 --- a/contracts/tokenomics/maker/Cargo.toml +++ b/contracts/tokenomics/maker/Cargo.toml @@ -40,5 +40,5 @@ astroport-factory = { path = "../../factory" } astroport-pair = { path = "../../pair" } cw-multi-test = "1.0.0" astroport-pair-stable = { path = "../../pair_stable" } -astroport-governance = { git = "https://github.com/astroport-fi/hidden_astroport_governance", version = "3" } +astroport-governance = { git = "https://github.com/astroport-fi/astroport-governance", version = "3" } astroport-native-coin-registry = { path = "../../periphery/native_coin_registry" } From f8a6b63beb7fbe949cd3eb9cdfc11673ac6481ba Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Tue, 2 Apr 2024 19:09:32 +0400 Subject: [PATCH 84/84] use temporal astroport-governance branch --- Cargo.lock | 30 +-------------------------- contracts/tokenomics/maker/Cargo.toml | 2 +- packages/astroport/src/staking.rs | 2 +- 3 files changed, 3 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d1ddb0f0d..b03ada80e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -130,22 +130,6 @@ dependencies = [ "uint 0.9.5", ] -[[package]] -name = "astroport" -version = "4.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_core#48991e8ce09749538858dadb45507e6c862ec915" -dependencies = [ - "astroport-circular-buffer 0.2.0 (git+https://github.com/astroport-fi/hidden_astroport_core)", - "cosmwasm-schema", - "cosmwasm-std", - "cw-asset", - "cw-storage-plus 1.2.0", - "cw-utils 1.0.3", - "cw20 1.1.2", - "itertools 0.12.1", - "uint 0.9.5", -] - [[package]] name = "astroport-circular-buffer" version = "0.2.0" @@ -168,17 +152,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-circular-buffer" -version = "0.2.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_core#48991e8ce09749538858dadb45507e6c862ec915" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 1.2.0", - "thiserror", -] - [[package]] name = "astroport-factory" version = "1.5.1" @@ -245,9 +218,8 @@ dependencies = [ [[package]] name = "astroport-governance" version = "3.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance#e1c4475708c5d92acece729ae939d8caac4295d6" +source = "git+https://github.com/astroport-fi/astroport-governance?branch=feat/astroport_governance_v3#67cba9037fb9854caa6752a591fd186752b95ee5" dependencies = [ - "astroport 4.0.0 (git+https://github.com/astroport-fi/hidden_astroport_core)", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.2.0", diff --git a/contracts/tokenomics/maker/Cargo.toml b/contracts/tokenomics/maker/Cargo.toml index eea0b99aa..c9d291e5d 100644 --- a/contracts/tokenomics/maker/Cargo.toml +++ b/contracts/tokenomics/maker/Cargo.toml @@ -40,5 +40,5 @@ astroport-factory = { path = "../../factory" } astroport-pair = { path = "../../pair" } cw-multi-test = "1.0.0" astroport-pair-stable = { path = "../../pair_stable" } -astroport-governance = { git = "https://github.com/astroport-fi/astroport-governance", version = "3" } +astroport-governance = { git = "https://github.com/astroport-fi/astroport-governance", version = "3", branch = "feat/astroport_governance_v3" } astroport-native-coin-registry = { path = "../../periphery/native_coin_registry" } diff --git a/packages/astroport/src/staking.rs b/packages/astroport/src/staking.rs index 1ed50298b..8fa3b2de5 100644 --- a/packages/astroport/src/staking.rs +++ b/packages/astroport/src/staking.rs @@ -39,7 +39,7 @@ pub enum QueryMsg { #[returns(TrackerData)] TrackerConfig {}, /// BalanceAt returns xASTRO balance of the given address at at the given timestamp. - /// Returns current balance if unset if timestamp unset. + /// Returns current balance if timestamp unset. #[returns(Uint128)] BalanceAt { address: String,